2011-05-24 54 views
6

可能重複:
How to calculate a packet checksum without sending it?如何用scapy重新計算IP校驗和?

我欺騙在捕獲數據包源IP和MAC地址,但現在我需要重新計算校驗和,以便它檢查出來,一旦其(被注入網絡之後)。我並不是真的想要自己執行校驗和,而且我認爲scapy可以爲我做到這一點。我讀過show2()函數應重新計算校驗和,但我似乎無法使其工作。

那麼,我怎樣才能使用scapy重新計算(並替換)一個捕獲的+欺騙數據包的校驗和?

謝謝!

+0

此外,如果有另一個易於使用的Python庫,在這種情況下很好地工作 - 我都是耳朵(眼睛)。 – 2011-05-24 15:37:46

回答

7

由於shown here,你必須調用從scapy

+1

我選擇了這個答案,因爲關鍵是我必須「去除」chksum字段。以前我在校驗和字段中用空字節手動重建數據包。這樣做,然後調用'show2()'沒有重新計算校驗和。先用'del'刪除字段提供了正確的行爲。 – 2011-05-24 18:18:36

3

show2()方法比方說,爲了便於討論,我們正在處理的IP報頭,並希望下一跳後,重新計算校驗和之前刪除.chksum屬性:

>>> iph = IP(import_hexcap()) 
0000 4500 0064 000f 0000 fe01 3726 c0a8 0108 
0010 c0a8 030b 
>>> iph.ttl = iph.ttl - 1 
>>> del iph.chksum 
>>> iph.show2() 
###[ IP ]### 
version= 4L 
ihl= 5L 
tos= 0x0 
len= 100 
id= 15 
flags= 
frag= 0L 
ttl= 253 
proto= icmp 
chksum= 0x3826 
src= 192.168.1.8 
dst= 192.168.3.11 
options= 

.chksum字段有你的答案。