簡體   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