用于 TLS 客户端问候和 TCP SYN 的 Scapy BPF 过滤器

Scapy BPF filter for TLS client hello and TCP SYN

我正在尝试为 scapy sniff() 编写一个 BPF 过滤器来捕获 TLSClientHello 数据包或 TCP SYN 数据包。这是我拥有的:

sniff(filter="tcp dst port 443 and ((tcp[((tcp[12] & 0xf0) >> 2)] = 0x16) or (tcp[13] & 0x02 = 1))", prn=process_packet, iface=iface, store=False)

嗅探只在 TLSClientHello 上进行。由于某种原因,SYN 数据包无法通过。 BPF 有什么问题?

过滤器部分的逻辑 and 应该捕获 TCP SYN 将 return 2,而不是 1。所以这个:

(tcp[13] & 0x02 = 1)

应该是:

(tcp[13] & 0x02 = 2)

或者(至少使用 tcpdump,我还没有尝试使用 Scapy):

(tcp[tcpflags] & tcp-syn != 0)