Tshark
如何在 tshark 中通過 dns.qry.name 過濾 DNS 查詢?
這將列印 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"'
,但它們都是無效的。
使用顯示(wireshark)過濾器比使用擷取(pcap)過濾器更容易完成。
tshark -n -T fields -e dns.qry.name -f 'src port 53' -Y 'dns.qry.name contains "foo"'
請參閱
pcap-filter
手冊頁以了解您可以使用擷取過濾器執行哪些操作。它非常有限,您必須手動剖析協議。在這裡,作為近似值,假設查詢名稱在 udp 數據包中始終為 0x20 字節(對於 UDP 上的 DNS),並且知道查詢名稱不應大於 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 }')"