gpt4 book ai didi

python - libnet 创建带有无效校验和的 UDP 数据包

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:36 26 4
gpt4 key购买 nike

我正在使用 pylibnet 构建和发送 UDP 数据包。我用这种方式构造的 UDP 数据包似乎都有无效的校验和。示例:

# python
Python 2.4.3 (#1, Sep 3 2009, 15:37:12)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import libnet
>>> from libnet.constants import *
>>>
>>> net = libnet.context(RAW4, 'venet0:0')
>>> ip = net.name2addr4('www.stackoverflow.com', RESOLVE)
>>> data = 'This is my payload.'
>>> udptag = net.build_udp(sp=54321, dp=54321, payload=data)
>>> packetlen = IPV4_H + UDP_H + len(data)
>>> iptag = net.autobuild_ipv4(len=packetlen, prot=IPPROTO_UDP, dst=ip)
>>>
>>> net.write()

在发送主机上捕获上述数据包显示无效校验和:

# tcpdump -i venet0:0 -n -v -v port 54321
tcpdump: WARNING: arptype 65535 not supported by libpcap - falling back to cooked socket
tcpdump: listening on venet0:0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
08:16:10.303719 IP (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto: UDP (17), length: 47) 192.168.55.10.54321 > 69.59.196.211.54321: [bad udp cksum 50c3!] UDP, length 0

我是不是做错了什么?

最佳答案

这与 tcpdump 错误或校验和卸载无关。 Libnet 也在用户模式下计算校验和(仅供引用)。问题与您没有指定 UDP header 的长度有关。这不是在 pylibnet 或 libnet 中自动计算的,因此您必须暂时指定它。以下是您的代码的更正版本。我将对 pylibnet 应用补丁以自动检测 rc6 中的 header 长度。敬请关注http://sourceforge.net/projects/pylibnet更新。我将推出解决此问题的新版本。顺便说一句,如果您有错误或功能请求,请随时通过 sourceforge 的 pylibnet 页面与我联系。我喜欢听取使用我的软件的开发人员的意见 :)


import libnet
from libnet.constants import *

net = libnet.context(RAW4, 'venet0:0')
ip = net.name2addr4('www.stackoverflow.com', RESOLVE)
data = 'This is my payload.'
udptag = net.build_udp(len=UDP_H+len(data), sp=54321, dp=54321, payload=data)
packetlen = IPV4_H + UDP_H + len(data)
iptag = net.autobuild_ipv4(len=packetlen, prot=IPPROTO_UDP, dst=ip)

net.write()

关于python - libnet 创建带有无效校验和的 UDP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1903500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com