[英]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.