그러면 DNS 쿼리에 대한 호스트 이름이 인쇄됩니다.
tshark -n -T fields -e dns.qry.name src port 53
dns.qry.name
값으로 필터링 하거나 합리적인 프록시를 얻으려면 어떻게 해야 합니까 ? 다양한 변형을 시도했지만 tshark -n -T fields -e dns.qry.name src port 53 and dns query name contains '"foo"'
모두 작동하지 않습니다.
답변1
를 사용하면 더 쉽습니다.표시(wireshark) 필터비교캡처(pcap) 필터.
tshark -n -T fields -e dns.qry.name -f 'src port 53' -Y 'dns.qry.name contains "foo"'
pcap-filter
캡처 필터의 기능에 대해서는 매뉴얼 페이지를 참조하십시오. 이는 매우 제한적이며 프로토콜을 수동으로 분석해야 합니다. 여기서는 대략적으로 udp 패킷의 쿼리 이름이 항상 0x20바이트(DNS over UDP의 경우)이고 쿼리 이름이 253바이트보다 커서는 안 된다고 가정합니다.
$ printf foo | xxd -p
666f6f
$ tshark -n -T fields -e dns.qry.name -f "src port 53 and $(awk '
BEGIN{
for(i=0;i<250;i++) {
printf sep "(udp[%d]!=0&&((udp[%d:4]&0xffffff00)==0x666f6f00", i+20, i+20
c = c "))"; sep = "||"
}
print c
}')"