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

Protocol 43200解包后仅显基础字段,如何修改Python抓包代码?

解决Python抓包中协议43200字段无法显示的问题

你的代码仅处理了ICMP(1)、TCP(6)、UDP(17)三种常见协议,对于协议号43200这类自定义/少见协议没有对应的解析逻辑,因此只能显示IP层基础信息。需要做以下几处修改:

1. 正确获取IPv4头部的协议号

首先要确保从ipv4_packet的返回值中拿到协议号,否则后续的协议分支判断根本不会触发。假设你的ipv4_packet返回的是字典,补充协议号的赋值:

ipv4_info = ipv4_packet(data)
proto = ipv4_info['proto']  # 根据实际返回结构调整,比如如果是对象就用ipv4_info.proto

同时要保证ipv4_packet函数正确解析协议字段(IPv4头部第10字节为协议号),示例实现如下:

def ipv4_packet(data):
    version_header_len = data[0]
    version = version_header_len >> 4
    header_len = (version_header_len & 0x0F) * 4
    ttl = data[8]
    proto = data[9]  # 提取协议号
    src_ip = socket.inet_ntoa(data[12:16])
    dest_ip = socket.inet_ntoa(data[16:20])
    payload = data[header_len:]
    
    return {
        'version': version,
        'header_length': header_len,
        'ttl': ttl,
        'proto': proto,
        'src_ip': src_ip,
        'dest_ip': dest_ip,
        'payload': payload
    }

2. 添加协议43200的专属解析函数

根据协议43200的实际报文结构,编写对应的解析函数。比如假设该协议头部包含2字节版本号、4字节会话ID,剩余为负载:

def parse_proto_43200(data):
    # 按协议实际结构解析,以下为示例,需根据真实协议调整
    version = int.from_bytes(data[:2], byteorder='big')
    session_id = int.from_bytes(data[2:6], byteorder='big')
    payload = data[6:]
    
    return (
        f"{TAB_2}Version: {version}\n"
        f"{TAB_2}Session ID: {session_id}\n"
        f"{TAB_2}Payload (hex): {payload.hex()}"
    )

然后在主循环的协议判断分支中添加:

elif proto == 43200:
    proto_details = parse_proto_43200(ipv4_info['payload'])
    print(TAB_1 + 'Protocol 43200 Packet:')
    print(proto_details)

3. 增加未知协议的通用处理分支

为了覆盖所有未定义的协议,添加默认分支显示原始负载数据,方便后续排查:

else:
    print(TAB_1 + f'Unrecognized Protocol ({proto}):')
    print(TAB_2 + f'Payload length: {len(ipv4_info["payload"])} bytes')
    print(TAB_2 + f'Payload (hex): {ipv4_info["payload"].hex()}')

完成以上修改后,协议43200的数据包就能按照你定义的逻辑显示具体字段,其他未知协议也能输出负载的基础信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 23:55:15