了解tpcdump -d选项

问题描述 投票:0回答:1

我是该论坛的新手,如果我违反这里的任何规则,请您道歉(可以更正和/或重定向)

那是:我试图了解tpcdump中的“ -d”选项的作用(即tcpdump -i any -d

运行上面的示例命令,很明显输出与没有-d时有所不同,但是我不理解输出或其目的

手册页中的状态

“将已编译的数据包匹配代码以人类可读的格式转储到标准输出并停止。”

但是我在解析含义时遇到了麻烦-数据包匹配代码是什么意思?使用此输出的目的是什么?

非常感谢您的答复

linux tcpdump
1个回答
1
投票

当将捕获过滤器与tcpdump -i <any> tcp port 443一起用于tcpdump时,您正在过滤的不是TCP数据包或未在端口443上发送的out数据包。但是,您问tcpdump如何知道如何这样吗?

此处的分组匹配代码是指BPF(伯克利包过滤器)语法代码。换句话说,tcp port 443分解为较低的水平是什么?如果运行tcpdump -i <any> tcp port 443,我们可以看到:

$ tcpdump -i en0 -d tcp port 443
(000) ldh      [12]
(001) jeq      #0x86dd          jt 2    jf 8
(002) ldb      [20]
(003) jeq      #0x6             jt 4    jf 19
(004) ldh      [54]
(005) jeq      #0x1bb           jt 18   jf 6
(006) ldh      [56]
(007) jeq      #0x1bb           jt 18   jf 19
(008) jeq      #0x800           jt 9    jf 19
(009) ldb      [23]
(010) jeq      #0x6             jt 11   jf 19
(011) ldh      [20]
(012) jset     #0x1fff          jt 19   jf 13
(013) ldxb     4*([14]&0xf)
(014) ldh      [x + 14]
(015) jeq      #0x1bb           jt 18   jf 16
(016) ldh      [x + 16]
(017) jeq      #0x1bb           jt 18   jf 19
(018) ret      #262144
(019) ret      #0

有关人们使用tcpdump -d的信息,请参阅文章on it。要彻底了解BPF代码的工作方式,tshark.dev上带有article

© www.soinside.com 2019 - 2024. All rights reserved.