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

2024-04-19 17:10:21 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
How to calculate a packet checksum without sending it?

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

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

谢谢!


Tags: toippacketmacit数据包校验scapy
2条回答

为了参数起见,假设我们正在处理一个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字段有您的答案。

作为shown here,在从scapy调用show2()方法之前,必须删除.chksum属性

相关问题 更多 >