我遇到捕获流量的问题。
我的系统配置了两个接口 - ethX和tunelX。 tunelX是一个隧道接口。
scapy和tcpdump捕获不同数量的数据包。
问题是tcpdump运行,如果"任何" iterface设置在cooked mode
,但scapy不是。
cooked mode
表示将创建SOCK_DGRAM
而不是SOCK_RAW
。它是必要的,因为在隧道包装中的一些数据"在链路层中可能丢失或包含不包含数据以确定数据包的类型。
当我用 scapy sctipt 进行strace时,我看到了这一点。
927698 socket(PF_PACKET, SOCK_RAW, 768) = 4
927689 recvfrom(3, "..some-data..."..., 65535, 0, {sa_family=AF_INET6, sin6_port=htons(53), inet_pton(AF_INET6, "...some address...", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 105
927689 recvfrom(3, "..some-data..."..., 32767, 0, {sa_family=AF_PACKET, proto=0x86dd, if4, pkttype=PACKET_HOST, addr(6)={1, 30d17e75727f}, [18]) = 246
927689 recvfrom(3, "..some-data..."..., 32767, 0, {sa_family=AF_PACKET, proto=0x86dd, if4, pkttype=PACKET_HOST, addr(6)={1, 30d17e75727f}, [18]) = 86
927689 recvfrom(3, "..some-data..."..., 32767, 0, {sa_family=AF_PACKET, proto=0x86dd, if4, pkttype=PACKET_HOST, addr(6)={1, 30d17e75727f}, [18]) = 86
927689 recvfrom(3, "..some-data..."..., 32767, 0, {sa_family=AF_PACKET, proto=0x86dd, if4, pkttype=PACKET_OUTGOING, addr(6)={1, 90e2ba55f6e8}, [18]) = 271
唯一的最后一个数据包被添加到转储中。
问题是: 我的假设是对的吗? :)我如何在熟食模式下启动scapy?我无法在手册中找到它。
谢谢。