gpt4 book ai didi

python - pyshark:访问原始 udp 有效负载

转载 作者:行者123 更新时间:2023-12-01 09:20:08 25 4
gpt4 key购买 nike

我是 pyshark 新手。我正在尝试为自定义 UDP 数据包编写一个解析器。我使用 FileCapture 对象从文件中读取数据包。

>>> cap = pyshark.FileCapture('sample.pcap')
>>> pkt = cap.next()
>>> pkt
<UDP/DATA Packet>
>>> pkt.data.data
'01ca00040500a4700500a22a5af20f830000b3aa000110da5af20f7c000bde1a000006390000666e000067f900000ba7000026ce000001d00000000100001726000100000000000000000000000017260500a4700500a22a608600250500a8c10500a22a608601310500a8c10500a22b608601200500a8cc0500a22a6086000c'
>>> dir(pkt.udp)
['DATA_LAYER', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__format__', '__getattr__', '__getattribute__', '__getstate__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_all_fields', '_field_prefix', '_get_all_field_lines', _get_all_fields_with_alternates', '_get_field_or_layer_repr', '_get_field_repr', '_layer_name', '_sanitize_field_name', 'checksum', 'checksum_status', 'dstport', 'field_names', 'get', 'get_field', 'get_field_by_showname', get_field_value', 'layer_name', 'length', 'port', 'pretty_print', raw_mode', 'srcport', 'stream']

我需要一种方法来简单地访问数据包的 UDP 负载。我发现访问原始数据包数据的唯一方法是 pkt.data.data,但这会返回数据包的全部内容,而我只对 UDP 部分感兴趣。类似pkt.udp.data。有没有办法简单地做到这一点,或者我需要使用 pkt.data.data 并计算数据放置的偏移量?

最佳答案

The only method I found to access raw packet data is pkt.data.data,

正确。

but this returns the entire content of the packet while I'm only interested to UDP portion.

不正确:.data.data 属性是 UDP 负载本身的十六进制字符串表示形式。

例如,如果您的 UDP 负载是 ASCII 字符串“hello”,您可以通过以下方式检索它:bytearray.fromhex(pkt.data.data).decode()

(echo -n hello >/dev/udp/localhost/12345 是在 lo:12345 上执行 pyshark 捕获时在 Linux 控制台上验证这一点的快速方法。)

关于python - pyshark:访问原始 udp 有效负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50857673/

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