Scapy - 在两个其他层之间插入数据包层
问题描述:
我正在做一个使用python scapy库的网络项目。我的项目涉及在包嗅探,和匀场层3和4Scapy - 在两个其他层之间插入数据包层
之间一个新的图层使用本指南,http://www.secdev.org/projects/scapy/doc/build_dissect.html
我能够创建一个新的包层。我可以通过做类似的事情轻松地在现有数据包的顶部添加图层,
packet = newlayer()/packet
而newlayer()图层将放置在IP层下面。然而,我想要在第3层和第4层之间夹层这个新层(而不是在IP之下)。但我似乎无法找到一个简单的方法来实现这一点。
我知道我可以只创建一个新的数据包,这样做,
packet = Ether()/IP()/newlayer()/TCP()
然而,因为,我想接入层,到我已经嗅包,我想简单地修改原始数据包,而不是从头开始创建新数据包。
任何帮助,将不胜感激!
答
下面是显示如何层1和层2之间注入另一Dot1Q()
头一个例子(计数Ether()
作为层0):
>>> pkt = Ether()/Dot1Q()/IP()/TCP()
>>> payload = pkt.getlayer(1).payload
>>> payload
<IP frag=0 proto=tcp |<TCP |>>
>>> pkt.getlayer(1).remove_payload()
>>> pkt
<Ether type=n_802_1Q |<Dot1Q |>>
>>> newPkt = pkt/Dot1Q()/payload
>>> newPkt
<Ether type=n_802_1Q |<Dot1Q type=n_802_1Q |<Dot1Q type=IPv4 |<IP frag=0 proto=tcp |<TCP |>>>>>
>>>
有可以是更简单的方法,但上述易我觉得够了。
+0
完美!谢谢! – user3509258
也许这有助于:http://*.com/questions/29133482/scapy-how-to-insert-a-new-layer-802-1q-into-existing-packet –