You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Scapy中从PCAP加载的UDP(ISAKMP)载荷中查找十六进制序列?

解决UDP载荷(ISAKMP)中查找特定十六进制序列的问题

这个问题我碰到过!其实不用纠结show()/show2()或者hexdump的格式化输出,直接拿UDP载荷的原始字节数据转成连续十六进制字符串就搞定了,给你两种靠谱的方法:

方法一:直接提取原始载荷并转换(最优解)

这是最简洁高效的方式,直接获取ISAKMP载荷的bytes数据,再转成无空格的连续十六进制字符串,就能直接用字符串查找操作定位目标序列了:

from scapy.all import rdpcap
import binascii

# 加载目标PCAP文件
packets = rdpcap("your_capture.pcap")

# 遍历数据包,筛选出含UDP且带有ISAKMP载荷的包
for pkt in packets:
    if UDP in pkt and pkt[UDP].payload:
        # 获取ISAKMP载荷的原始字节数据
        isakmp_raw = bytes(pkt[UDP].payload)
        # 转换为连续的十六进制字符串(小写,如需大写可加.upper())
        hex_sequence = binascii.hexlify(isakmp_raw).decode("utf-8")
        
        # 查找你需要的特定十六进制序列,比如"a1b2c3"
        target_hex = "a1b2c3"
        if target_hex in hex_sequence:
            print(f"找到目标序列!数据包时间戳:{pkt.time}")
            print(f"完整十六进制序列:{hex_sequence}")

为什么这个方法管用?

  • show()/show2()返回的是格式化后的可读文本,不是原始字节数据,自然没法直接查找;
  • binascii.hexlify()会把字节直接转成十六进制编码的bytes,再用decode()转成普通字符串,得到的就是无空格的连续十六进制序列,完美匹配你的查找需求。

方法二:从hexdump输出中提取中间列(备选方案)

如果你非要从hexdump的输出里提取中间列的十六进制字符串,也可以通过字符串分割处理实现:

from scapy.all import rdpcap, hexdump

packets = rdpcap("your_capture.pcap")

for pkt in packets:
    if UDP in pkt and pkt[UDP].payload:
        # 获取hexdump的输出文本(dump=True让它返回字符串而不是直接打印)
        dump_text = hexdump(pkt[UDP].payload, dump=True)
        # 按行分割并过滤空行
        dump_lines = [line.strip() for line in dump_text.split("\n") if line.strip()]
        
        # 提取每行的中间十六进制部分并拼接
        hex_parts = []
        for line in dump_lines:
            # 分割成「地址、十六进制、ASCII」三部分
            line_segments = line.split("  ", 2)
            if len(line_segments) >= 2:
                # 去掉十六进制部分的空格,加入列表
                clean_hex = line_segments[1].replace(" ", "")
                hex_parts.append(clean_hex)
        
        # 拼接成连续的十六进制字符串
        full_hex_str = "".join(hex_parts)
        
        # 执行查找操作
        if "a1b2c3" in full_hex_str:
            print("找到目标序列!")
            print(full_hex_str)

不过这种方法需要处理格式化输出的格式,不如第一种方法直接高效,优先推荐方法一。

内容的提问来源于stack exchange,提问作者Owensteam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:13:38