【问题标题】:How to recalculate IP checksum with scapy? [duplicate]如何使用 scapy 重新计算 IP 校验和? [复制]
【发布时间】:2011-05-24 15:30:15
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 另外,如果有另一个易于使用的 Python 库可以在这种情况下很好地工作 - 我全神贯注(眼睛)。

标签: python ip spoofing scapy


【解决方案1】:

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

【讨论】:

  • 我选择了这个答案,因为关键是我必须del chksum 字段。以前我在校验和字段中手动重建带有空字节的数据包。这样做然后调用show2() 并没有重新计算校验和。首先使用 del 删除该字段可提供正确的行为。
【解决方案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 字段有你的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2015-01-30
    • 1970-01-01
    • 2012-09-03
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多