例如,我发现的 WireShark 捕获过滤器示例 -tcp[13] & 8 == 8
代表带有 PSH 标志的数据包。
我如何計算8
?
根据维基百科图片,
PSH 位于 TCP 标志段的中间。从 NS 标志开始数 1,PSH 位表示应该是 6 ?
任何指导都值得感激。
答案1
你应该看看tcpdump 手册页,“捕获具有特定标志组合的 TCP 数据包”部分 - 这里有很多细节。
答案2
是时候了解二进制算法了!要从字节中获取最右边的第 N 位,您需要执行byte & (1 << N)
,因此最右边的位是byte & (n << 0)
,而右边的第 4 位是byte & (n << 3)
,这与 相同byte << 8
。
答案3
你也从错误的地方开始计数。NS 可能是第一个标志,但它也是字节 12 的结束位。字节 13(如tcp[13]
)从第四行(标记为“八位字节 12”)的第 8 位开始,一直到同一行的第 15 位。