Preciso gravar todos os A
registros de saída em um PC RedHat. Eu tentei usar tcpdump
:
tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &
Faz um arquivo de saída como:
19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)
Então, eu preciso processar isso para obter o yahoo.com
:
echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u
Existe alguma solução melhor para reunir todas as A
solicitações de registro de saída ?
ps: coletando registros DNS A é necessário apenas para ter uma lista atualizada de sites acessíveis através de HTTPS. Para que eu possa gerar arquivos xml para o complemento HTTPSEverywhere Firefox. Portanto, isso é apenas parte de um script.
Respostas:
Use o Wireshark:
fonte
tshark: "A" cannot be found among the possible values for dns.qry.type.
tshark -f "udp port 53" -Y "dns.qry.type == 1 and dns.flags.response == 0"
Se você não possui o wireshark instalado,
deve funcionar para você. Como você queria limitar a saída do penúltimo para o último valor, analisaria seu arquivo de log com:
Se você deseja que ele viva, então:
deve fazê-lo (aqui sed e awk são intercambiáveis; e eu escolheria awk.)
fonte
grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -u
é menos para digitar #