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

如何将Wireshark捕获的图片十六进制数据包还原为JPG图片?

当然可以把Wireshark捕获的十六进制数据还原成图片!

我刚好做过类似的操作,给你分步骤讲清楚怎么实现:

第一步:从Wireshark提取目标数据

首先你需要把捕获到的图片十六进制数据从Wireshark里导出来,操作很简单:

  • 在Wireshark的数据包列表里,找到你发送图片数据的那个TCP会话里的任意一个数据包,右键点击它,选择「Follow」→「TCP Stream」。
  • 在弹出的窗口中,先确认数据方向(比如你是客户端发往服务器,就选对应的方向),然后把显示格式切换为「Raw」——这样就能看到你实际发送的原始字节内容了。
  • 你可以直接把窗口里的内容复制下来,或者点击「Save As」按钮,把它保存成一个文本文件(比如命名为captured_hex_data.txt)。

第二步:用Python将捕获数据还原为图片

因为你是把图片二进制转成十六进制字符串(ASCII形式)发送的,所以Wireshark捕获到的其实是这些十六进制字符的ASCII字节(比如字符f对应的字节是0x66)。我们需要把这些ASCII字节还原成十六进制字符串,再转回二进制图片数据。

写个简单的Python脚本就能搞定:

import binascii

# 读取Wireshark导出的捕获文件
with open('captured_hex_data.txt', 'rb') as input_file:
    # 读取字节并解码为ASCII字符串,去掉首尾可能的空白
    hex_string = input_file.read().decode('ascii').strip()

# 将十六进制字符串转回二进制数据
image_binary = binascii.unhexlify(hex_string)

# 写入JPG文件
with open('recovered_image.jpg', 'wb') as output_file:
    output_file.write(image_binary)

注意事项

  • 确保你提取的是纯图片的十六进制数据:如果你的Socket会话里还发送了其他无关数据(比如握手信息、额外的指令),那在Follow TCP Stream的时候,要手动选中并复制图片对应的那部分数据,避免把无关内容混进去。
  • TCP分段不用怕:Wireshark的「Follow TCP Stream」会自动把同一个会话里的分段数据拼接完整,不用你手动合并。
  • 检查数据完整性:如果还原后的图片打不开,大概率是捕获的数据不完整——可以去Wireshark里确认有没有数据包丢失,或者调整捕获缓冲区大小重新抓包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:32:22