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

Wireshark高级过滤:移除pcap数据包13-110字节私有头部后分析方法

移除PCAP中的私有头部并在Wireshark中显示

当然可以!你有几种可靠的方式来处理这个需求——要么直接修改PCAP文件移除私有头部,要么让Wireshark在解析时跳过这部分内容。下面是三个实用方案:

方法一:命令行工具组合(tshark + editcap)

如果不想写代码,用Wireshark自带的命令行工具就能搞定。思路是提取每个数据包中除13-110字节外的内容,重新生成一个干净的PCAP:

  • 首先用tshark导出每个数据包的原始十六进制数据,过滤掉不需要的部分:

    tshark -r input.pcap -T fields -e data | while read line; do
      # 保留前12字节(1-12)和从111字节开始的内容
      echo "${line:0:24}${line:220}"
    done > filtered_data.txt
    

    解释:十六进制每两个字符对应一个字节,所以12字节就是24个字符,110字节是220个字符,从220位置开始截取后面的内容。

  • 然后用text2pcap把处理后的十六进制数据转回PCAP文件:

    text2pcap -l 1 filtered_data.txt output.pcap
    

    -l 1指定链路层类型为以太网(如果你的原始PCAP是其他类型,比如PPP,需要改成对应编号)。

方法二:Python脚本(Scapy库)

如果需要更灵活的控制,用Scapy库写个小脚本是最佳选择:

  • 先安装Scapy:

    pip install scapy
    
  • 编写脚本处理PCAP:

    from scapy.all import rdpcap, wrpcap
    
    def remove_private_header(packet):
        # 移除第13到110字节(字节串索引从0开始,对应索引12到109)
        new_payload = packet.load[:12] + packet.load[110:]
        packet.load = new_payload
        return packet
    
    # 读取原始PCAP并处理每个数据包
    original_packets = rdpcap("input.pcap")
    filtered_packets = [remove_private_header(pkt) for pkt in original_packets]
    # 保存处理后的PCAP
    wrpcap("output.pcap", filtered_packets)
    

    运行脚本后,output.pcap就是移除了私有头部的文件,直接用Wireshark打开即可。

方法三:Wireshark Lua脚本实时解析(无需修改文件)

如果不想修改原始PCAP文件,可以写个Lua脚本让Wireshark在解析时自动跳过私有头部:

  • 打开Wireshark,点击编辑 -> 首选项 -> Protocols -> Lua,在Lua字符串里输入以下内容:

    local private_header_length = 98  -- 110-13+1=98字节,即要跳过的字节数
    local original_dissector = nil
    
    function my_dissector(tvbuf, pktinfo, root_tree)
        -- 跳过私有头部,截取剩余内容
        local new_tvbuf = tvbuf:range(private_header_length):tvb()
        -- 调用原始以太网解析器(如果是其他链路层,替换成对应协议名)
        original_dissector:call(new_tvbuf, pktinfo, root_tree)
    end
    
    -- 替换以太网的解析器,让Wireshark用我们的逻辑处理
    original_dissector = Dissector.get("eth")
    DissectorTable.get("wtap_encap"):set(wtap.ENCAP_ETHERNET, my_dissector)
    
  • 点击确定后重新打开PCAP文件,Wireshark就会自动跳过13-110字节的私有头部,直接解析后面的内容。如果你的私有头部位置不同,调整private_header_length参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:47:47