繁体   English   中英

Scapy-在其他两个层之间插入数据包层

[英]Scapy - insert packet layer between two other layers

我正在使用scapy库进行python联网工作。 我的项目涉及嗅探数据包,并填充第3层和第4层之间的新层。

使用本指南, 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  |>>>>>
>>> 

可能有一种更简单的方法,但是我认为上面的方法很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM