我正在尝试生成STP数据包并使用wireshark捕获它。基本上我所做的是>>>发送(STP())来自Scapy,来自wireshark的结果是: 53918 2671.938356000 00.00.00 00.00.00 FC 49 [格式错误的数据包] 我的问题是如何配置STP数据包,wireshark的结果是STP数据包而不是FC。请帮助:)
答案 0 :(得分:1)
您需要使用sendp()函数而不是send(),并且还需要在STP()之前添加Ether()和LLC()层。例如:
sendp(Ether(dst="01:80:c2:00:00:00")/LLC()/STP(), iface=“eth0”)
答案 1 :(得分:0)
send
函数用于在第3层发送数据包,而STP
是第2层协议:
In [1]: from scapy.all import STP
In [2]: STP
Out[2]: scapy.layers.l2.STP
因此,您应该使用sendp
功能。
有关详细信息,请参阅scapy
's docs:
send()
函数将在第3层发送数据包。也就是说它将为您处理路由和第2层。sendp()
函数将在第2层工作。您可以选择正确的接口和正确的链路层协议。
official API documentation也说明了这一点:
send(pkts, inter=0, loop=0, verbose=None)
使用
conf.L3socket
超级套接字在第3层发送数据包。
sendp(pkts, inter=0, loop=0, iface=None, iface hint=None, verbose=None)
使用
conf.L2socket
超级套接字在第2层发送数据包。