CyberChef Hexdump — 互转

分类:数据格式 Operations:To Hexdump, From Hexdump
Hexdump Hex 查看 二进制 数据分析 调试

什么是 Hexdump?

Hexdump(十六进制转储)把二进制数据用十六进制展示,并常在同一行附上对应的 ASCII(或可打印字符)列,便于并排对照。它是调试、逆向与数据分析中最基础的手段之一,可用来查看文件、网络包、内存转储等任意二进制内容的精确字节。

这种展示方式源自 Unix 下的 hexdumpxxd 等工具,已成为查看二进制的一种通用习惯。每一行通常包含:偏移地址、若干字节的十六进制、以及这些字节的 ASCII 解释。

为何用 Hexdump? 二进制对人不可读,纯十六进制又少了“像不像文本”的直觉。Hexdump 在十六进制与 ASCII 之间折中,便于发现字符串、文件魔数、重复模式与数据结构边界。

Hexdump 行结构

看懂一行里各列的含义,是阅读二进制的前提:

典型 Hexdump 布局
00000000 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 0a 54 68 |Hello, World!.Th| 00000010 69 73 20 69 73 20 61 20 68 65 78 64 75 6d 70 20 |is is a hexdump | 00000020 65 78 61 6d 70 6c 65 2e 00 |example..|
各部分说明:
  • 偏移(蓝):该行首字节在文件/缓冲区中的位置(十六进制),常从 00000000 起算
  • 十六进制字节(绿):每个字节用两位十六进制表示(00–FF)
  • ASCII 列(橙):可打印字符直接显示;不可打印常显示为点号等占位

读数值时的字符范围

Hex 十进制 ASCII 说明
00-1F 0-31 . 控制字符(不可打印)
20 32 (space) 空格
30-39 48-57 0-9 数字
41-5A 65-90 A-Z 大写字母
61-7A 97-122 a-z 小写字母
7F-FF 127-255 . 扩展 ASCII / 二进制数据

To Hexdump Operation

CyberChef 的 To Hexdump 将任意输入转为 hexdump 文本,便于查看二进制文件、排查编码问题或分析原始结构。

典型用途:

示例:生成 Hexdump

原文:

The quick brown fox jumps over the lazy dog.

Hexdump 输出:

00000000 54 68 65 20 71 75 69 63 6b 20 62 72 6f 77 6e 20 |The quick brown | 00000010 66 6f 78 20 6a 75 6d 70 73 20 6f 76 65 72 20 74 |fox jumps over t| 00000020 68 65 20 6c 61 7a 79 20 64 6f 67 2e |he lazy dog.|

每个字符对应其 ASCII 的十六进制,例如 T=0x54、h=0x68、e=0x65,空格=0x20

To Hexdump 配置项

To Hexdump 通常提供多种输出格式选项,例如:

Width(宽度)
每行显示的字节数(常见为 16)
Uppercase Hex
十六进制用大写 A–F 或小写 a–f
Include ASCII
是否显示右侧 ASCII 列
Show Offset
是否显示左侧偏移

常见行宽:

From Hexdump Operation

From Hexdump 执行相反过程:把 hexdump 文本还原为原始二进制(或字节序列)。适用于日志、文档、邮件里夹带的 hex 转储需要还原成文件或再处理的情形。

典型用途:

示例:从 Hexdump 还原

Hexdump 输入:

00000000 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 |Hello, World!|

还原后的数据:

Hello, World!

该 Operation 会解析常见 hexdump 版式,提取十六进制字节并还原为原始字节序列。

Hexdump 格式变体

不同工具输出的细节略有差异。From Hexdump 通常能兼容多种常见样式:

常见 xxd 风格

00000000: 4865 6c6c 6f20 576f 726c 6421 Hello World!

hexdump -C 风格

00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 |Hello World!|

纯 Hex(无偏移)

48 65 6c 6c 6f 20 57 6f 72 6c 64 21

连续 Hex 串

48656c6c6f20576f726c6421
兼容性:CyberChef 的 From Hexdump 对常见版式较宽容,通常能自动忽略偏移、ASCII 列与多余分隔符,只抽取有效十六进制字节。

实践示例

示例 1:识别文件类型

文件签名(魔数)

通过文件头魔数判断格式:

00000000 50 4b 03 04 14 00 00 00 08 00 b6 8c 6d 51 4a 89 |PK........m.QJ.| 00000010 f2 0c 20 00 00 00 2c 00 00 00 08 00 1c 00 74 65 |.. ...,.......te|

开头 50 4b 03 04 通常表示 ZIP 压缩包。

常见魔数:
  • FF D8 FF — JPEG
  • 89 50 4E 47 — PNG
  • 50 4B 03 04 — ZIP
  • 25 50 44 46 — PDF(即 %PDF
  • 4D 5A — Windows 可执行(MZ)
  • 7F 45 4C 46 — Linux 可执行(ELF)

示例 2:调试二进制协议

网络报文片段
00000000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a |GET / HTTP/1.1..| 00000010 48 6f 73 74 3a 20 65 78 61 6d 70 6c 65 2e 63 6f |Host: example.co| 00000020 6d 0d 0a 0d 0a |m....|

可见 HTTP GET 请求片段;行尾为 CRLF(0d 0a)。

示例 3:发现嵌入字符串

隐藏可读串
00000000 de ad be ef 00 00 00 00 00 00 00 00 53 45 43 52 |............SECR| 00000010 45 54 5f 4b 45 59 3a 20 31 32 33 34 35 00 00 00 |ET_KEY: 12345...|

在二进制中嵌入的 ASCII 串在右侧列中往往一目了然。

CyberChef Recipe 思路

与 hexdump 相关的组合示例:

命令行对照

在 CyberChef 之外,也可用下列工具生成类似输出:

Unix/Linux

# 标准 hexdump hexdump -C filename # xxd(很常见) xxd filename # od(八进制/十六进制) od -A x -t x1z -v filename # 导出为 hexdump 文本 xxd filename > file.hex # 从 hexdump 还原 xxd -r file.hex > restored_file

Windows

# PowerShell Format-Hex filename # CertUtil certutil -encodehex input.bin output.txt # 使用 WSL wsl xxd filename

技巧与注意点

高效阅读

常见陷阱

性能

学习价值

练习阅读 hexdump 有助于建立底层直觉:

学习顺序建议:从简单文本文件的 hexdump 理解 ASCII 开始,再过渡到二进制文件、抓包与可执行文件。读得越多,对模式与结构的反应越快。
← 返回操作指南