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

Python 如何使用scapy重新计算IP校验和?,python,ip,spoofing,scapy,Python,Ip,Spoofing,Scapy,可能重复: 我在捕获的数据包中伪造了一个源IP和MAC地址,但现在我需要重新计算校验和,以便它在接收到数据包后(当然是在注入网络后)进行校验。我真的不想自己实现校验和,我想scapy可以帮我实现。我读到show2()函数应该重新计算校验和,但我似乎无法让它工作 那么,如何使用scapy重新计算(并替换)捕获+伪造数据包的校验和 谢谢 As,在从scapy调用show2()方法之前,您必须删除.chksum属性。为了参数起见,假设我们正在处理IP头,并希望在下一跳后重新计算校验和: >&g

可能重复:

我在捕获的数据包中伪造了一个源IP和MAC地址,但现在我需要重新计算校验和,以便它在接收到数据包后(当然是在注入网络后)进行校验。我真的不想自己实现校验和,我想
scapy
可以帮我实现。我读到
show2()
函数应该重新计算校验和,但我似乎无法让它工作

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


谢谢

As,在从
scapy

调用
show2()
方法之前,您必须删除
.chksum
属性。为了参数起见,假设我们正在处理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
字段有您的答案。

另外,如果有另一个易于使用的Python库在这种情况下可以很好地工作-我洗耳恭听。我选择这个答案是因为我必须
del
chksum字段。以前,我在校验和字段中用空字节手动重建数据包。这样做,然后调用
show2()
不会重新计算校验和。首先使用
del
删除字段可以提供正确的行为。