J'ai besoin d'enregistrer tous les A
enregistrements sortants sur un PC RedHat. J'ai essayé d'utiliser tcpdump
:
tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &
Il crée un fichier de sortie comme:
19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)
Je dois donc traiter cela pour obtenir yahoo.com
:
echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u
Existe-t-il une meilleure solution pour rassembler toutes les A
demandes d'enregistrement sortantes ?
ps: la collecte des enregistrements DNS A n'est nécessaire que pour disposer d'une liste à jour des sites Web accessibles via HTTPS. Je peux donc générer des fichiers xml pour le module complémentaire Firefox HTTPSEverywhere. Ce n'est donc qu'une partie d'un script.
Réponses:
Utilisez Wireshark:
la source
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"
Si vous ne disposez pas de wirehark installé
devrait fonctionner pour vous. Comme vous vouliez limiter la sortie à l'avant-dernière valeur, j'analyserais votre fichier journal avec:
Si vous le voulez vivre alors:
devrait le faire, (ici sed et awk sont interchangeables; et je choisirais awk.)
la source
grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -u
est moins à taper