如何用scapy重新计算IP校验和?

时间:2011-05-24 15:30:15

标签: python ip spoofing scapy

  

可能重复:
  How to calculate a packet checksum without sending it?

我已经在捕获的数据包中欺骗了源IP和MAC地址,但是现在我需要重新计算校验和,以便在收到它后检查它(当然是在注入网络之后)。我自己并不想真正实现校验和,我认为scapy可以为我做这个。我读到show2()函数应该重新计算校验和,但我似乎无法让它工作。

那么,如何使用scapy重新计算(并替换)捕获的+欺骗数据包的校验和?

谢谢!

2 个答案:

答案 0 :(得分:8)

作为shown here,您必须先从.chksum

调用show2()方法之前删除scapy属性

答案 1 :(得分:3)

让我们说为了论证我们正在处理一个IP头并希望在下一跳之后重新计算校验和:

>>> 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字段有您的答案。