Aln*_*tak 2 domain-name-system tcpdump
继此问题之后,我如何判断tcpdump对特定端口使用特定协议分析器?
我正在使用在端口 5053 上运行的测试服务器进行一些 DNS 开发,但我不知道如何判断tcpdump这真的是 DNS 流量。
我不能使用wireshark - 数据包没有通过有GUI 的机器。
有趣的问题。似乎应该可以通过以下选项访问它:
-T Force packets selected by "expression" to be interpreted the
specified type. Currently known types are aodv (Ad-hoc On-
demand Distance Vector protocol), cnfp (Cisco NetFlow protocol),
rpc (Remote Procedure Call), rtp (Real-Time Applications proto-
col), rtcp (Real-Time Applications control protocol), snmp (Sim-
ple Network Management Protocol), tftp (Trivial File Transfer
Protocol), vat (Visual Audio Tool), and wb (distributed White
Board).
Run Code Online (Sandbox Code Playgroud)
除了“域”显然不是一个有效的选项。我想如果您愿意的话,可以对 tcpdump 源代码稍作修改。
更新
像这样。使用风险自负:
diff -ru tcpdump-3.9.8/interface.h tcpdump-3.9.8_modified/interface.h
--- tcpdump-3.9.8/interface.h 2007-06-14 02:03:20.000000000 +0100
+++ tcpdump-3.9.8_modified/interface.h 2009-07-27 19:40:55.831913794 +0100
@@ -74,6 +74,7 @@
#define PT_CNFP 7 /* Cisco NetFlow protocol */
#define PT_TFTP 8 /* trivial file transfer protocol */
#define PT_AODV 9 /* Ad-hoc On-demand Distance Vector Protocol */
+#define PT_DOMAIN 10 /* Domain Name Service */
#ifndef min
#define min(a,b) ((a)>(b)?(b):(a))
diff -ru tcpdump-3.9.8/print-udp.c tcpdump-3.9.8_modified/print-udp.c
--- tcpdump-3.9.8/print-udp.c 2007-06-14 02:03:21.000000000 +0100
+++ tcpdump-3.9.8_modified/print-udp.c 2009-07-27 19:39:13.893442797 +0100
@@ -520,6 +520,11 @@
tftp_print(cp, length);
break;
+ case PT_DOMAIN:
+ udpipaddr_print(ip, sport, dport);
+ ns_print((const u_char *)(up + 1), length, 0);
+ break;
+
case PT_AODV:
udpipaddr_print(ip, sport, dport);
aodv_print((const u_char *)(up + 1), length,
diff -ru tcpdump-3.9.8/tcpdump.c tcpdump-3.9.8_modified/tcpdump.c
--- tcpdump-3.9.8/tcpdump.c 2007-09-26 02:59:54.000000000 +0100
+++ tcpdump-3.9.8_modified/tcpdump.c 2009-07-27 19:27:40.199449150 +0100
@@ -718,6 +718,8 @@
packettype = PT_TFTP;
else if (strcasecmp(optarg, "aodv") == 0)
packettype = PT_AODV;
+ else if (strcasecmp(optarg, "domain") == 0)
+ packettype = PT_DOMAIN;
else
error("unknown packet type `%s'", optarg);
break;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1415 次 |
| 最近记录: |