Scapy生成STP(生成树协议)数据包

时间:2014-11-09 11:34:59

标签: scapy

我正在尝试生成STP数据包并使用wireshark捕获它。基本上我所做的是>>>发送(STP())来自Scapy,来自wireshark的结果是: 53918 2671.938356000 00.00.00 00.00.00 FC 49 [格式错误的数据包] 我的问题是如何配置STP数据包,wireshark的结果是STP数据包而不是FC。请帮助:)

2 个答案:

答案 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层发送数据包。