#!/bin/bash
echo "Arquivo atual: $1"
verificador () {
epoch_start=$(head -n1 $1)
epoch_end=$(tail -n1 $1)
if date -d "@$epoch_start" >/dev/null 2>&1; then
echo "Epoch start [ OK ] Valor: $epoch_start"
else
echo "Epoch start [ ERRO ] Valor: $epoch_start"
echo "Arquivo: $1"
exit 1
sleep 1
fi
if date -d "@$epoch_end" >/dev/null 2>&1; then
echo "Epoch end [ OK ] Valor: $epoch_end"
else
echo "Epoch end [ ERRO ] Valor: $epoch_end"
echo "Arquivo: $1"
exit 1
sleep 1
fi
line_object_start=2
line_object_end=34
while true; do
objeto=$(sed -n "$line_object_start","$line_object_end"p "$1")
open_object=$(printf '%s\n' "$objeto" | head -n 1)
close_object=$(printf '%s\n' "$objeto" | tail -n 1)
if ! [[ $open_object == "{{{" ]]; then
echo "Objeto linha: $line_object_start [ ERROR ]"
echo "Arquivo: $1"
exit 1
fi
if ! [[ $close_object == "}}}" ]]; then
echo "Objeto linha: $line_object_end [ ERROR ]"
echo "Arquivo: $1"
exit 1
fi
last_line=$line_object_end
verify_end_line=$((last_line + 1))
get_end_line=$(sed -n "$verify_end_line"p "$1")
if [[ $get_end_line == $epoch_end ]]; then
echo "Arquivo [ OK ]"
exit 0
fi
((line_object_start += 33))
((line_object_end += 33))
done
}
extract_object_info () {
# acesa o banco e pega o index
id=$(sqlite3 "$2" "SELECT fuzz_index_id FROM metadata LIMIT 1;")
((id += 1))
request=1
line_start=3
line_end=33
line_to_stop=$(( $(wc -l < "$1") - 2 ))
while true; do
mapfile -t obj < <(sed -n "${line_start},${line_end}p" "$1")
sql_insert_obj "$2"
if [[ $line_end == $line_to_stop ]]; then
sqlite3 "$2" "
UPDATE metadata
SET fuzz_index_id = $id;
"
exit 0
fi
((line_start += 33))
((line_end += 33))
((request += 1))
done
}
sql_insert_obj() {
local db="$1"
python3 - "$db" "$id" "$epoch_start" "$epoch_end" "$request" "${obj[@]}" <<'PY'
import sqlite3
import sys
conn = sqlite3.connect(sys.argv[1])
conn.execute("""
INSERT INTO fuzz_out (
id,
epoch_start,
epoch_end,
request,
response_code,
url,
url_effective,
method,
scheme,
num_redirects,
redirect_url,
num_headers,
size_header,
size_request,
size_download,
size_upload,
content_type,
remote_ip,
remote_port,
local_ip,
local_port,
http_version,
num_connects,
conn_id,
time_namelookup,
time_connect,
time_appconnect,
time_pretransfer,
time_starttransfer,
time_redirect,
time_total,
ssl_verify_result,
exitcode,
output_hash,
payload
)
VALUES (
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?
)
""", tuple(sys.argv[2:]))
conn.commit()
conn.close()
PY
}
verificador $1