I am trying to generate STP packet and to capture it with wireshark.Basically what I do is >>> send(STP()) from Scapy and the result from wireshark is: 53918 2671.938356000 00.00.00 00.00.00 FC 49 [Malformed Packet] My question is how to configure the STP packet, the result from wireshark to be STP packet not FC.Please help :)
问题:
回答1:
You need to use the sendp() function instead of send(), and you also need to add the Ether() and LLC() layers before STP(). For instance:
sendp(Ether(dst="01:80:c2:00:00:00")/LLC()/STP(), iface=“eth0”)
回答2:
The send
function is used to send packets in layer 3, while STP
is a layer 2 protocol:
In [1]: from scapy.all import STP
In [2]: STP
Out[2]: scapy.layers.l2.STP
Therefore, you should use the sendp
function.
See scapy
's docs for further information:
The
send()
function will send packets at layer 3. That is to say it will handle routing and layer 2 for you. Thesendp()
function will work at layer 2. It’s up to you to choose the right interface and the right link layer protocol.
The official API documentation states this as well:
send(pkts, inter=0, loop=0, verbose=None)
Send packets at layer 3, using the
conf.L3socket
supersocket.
sendp(pkts, inter=0, loop=0, iface=None, iface hint=None, verbose=None)
Send packets at layer 2 using the
conf.L2socket
supersocket.