2015-04-23 48 views
1

我正在做一個使用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() 

然而,因爲,我想接入層,到我已經嗅包,我想簡單地修改原始數據包,而不是從頭開始創建新數據包。

任何幫助,將不勝感激!

+0

也許這有助於:http://stackoverflow.com/questions/29133482/scapy-how-to-insert-a-new-layer-802-1q-into-existing-packet –

回答

2

下面是顯示如何層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