wireshark - 使用 scapy 和 wireshark 生成 STP 流量 [格式错误的数据包]
问题描述
我正在尝试生成一个 STP 数据包并使用wireshark 捕获它,这是我的代码:
from scapy.all import STP
import scapy
from scapy.all import *
sendp(Dot3(dst="01:00:0c:cc:cc:cd", src="08:17:35:51:29:2e")/LLC(dsap=0xaa, ssap=0xaa)/SNAP(OUI=0x0c, code=0x010b)/STP(), iface="eth1", count=200)
解决方案
我跑了一些东西,看看为什么。
难道不是padding的问题。我尝试在网络中强制将数据包填充到 60B。(你的wireahrd说捕获57B所以它在下面)。这对我来说从来都不是问题,但我必须检查一下。
我从wireshark打开一个示例捕获。 https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=view&target=stp.pcap 我使用 wireshar 打开了第一个数据包(它很高兴),然后使用 scapy 打开它:
从 scapy.utils 导入 rdpcap
数据包 = rdpcap("/home/fgagnaire/Downloads/stp.pcap") 数据包[0].show()
输出:
###[ 802.3 ]###
dst = 01:80:c2:00:00:00
src = 00:1c:0e:87:85:04
len = 38
###[ LLC ]###
dsap = 0x42
ssap = 0x42
ctrl = 3
###[ Spanning Tree Protocol ]###
proto = 0
version = 0
bpdutype = 0
bpduflags = 0
rootid = 32868
rootmac = 00:1c:0e:87:78:00
pathcost = 4
bridgeid = 32868
bridgemac = 00:1c:0e:87:85:00
portid = 32772
age = 1.0
maxage = 20.0
hellotime = 2.0
fwddelay = 15.0
###[ Padding ]###
load = '\x00\x00\x00\x00\x00\x00\x00\x00'
现在看起来它们是building
没有 SNAP 层的。
尝试在没有 SNAP 层的情况下构建:
from scapy.layers.inet import SNAP
from scapy.layers.l2 import LLC, STP, Dot3
from scapy.packet import Padding
from scapy.utils import wrpcap
packets = []
packet = Dot3(dst="01:00:0c:cc:cc:cd", src="08:17:35:51:29:2e") / LLC() / STP()
wrpcap("/tmp/test_file.pcap", packets)
这让wireshark 很高兴。这也有助于我理解您的问题不是关于 STP 而是关于 PVSTP+。
如果您的问题是关于 PVSTP+,那么我认为 scapy 不支持开箱即用。您必须自己构建图层。
推荐阅读
- if-statement - 这个公式中的矩阵大小是如何声明的?
- python - 意图不起作用,只有启动请求是
- pygame - 你如何解决:“AttributeError:'tuple'对象没有属性'player'”?
- python - 即使在按键释放时仍会打印文本
- python-3.x - 如何在 keras 序列模型中添加注意力层(以及 Bi-LSTM 层)?
- android - 启动闪屏活动,同时将主要活动隐藏在下方,完成所有布局和测量后,隐藏闪屏活动
- python - “ContentCreateUpdateView”对象没有属性“module_id”
- android - 如何在活动中收听地理围栏广播接收器?
- flutter - 在 RenderBox HitTest 之后添加到对象
- amazon-s3 - 是否可以在没有查询参数的情况下生成 S3 下载 URL?