myhexdump 模块总览
🐍 r0capture 内联的十六进制 dump 工具,把抓到的明文字节渲染成可读文本。
在 r0capture 里的角色
r0capture.py 的 on_message 拿到 SSL hook 的明文字节流后,调用本模块的 hexdump() 把字节渲染成「偏移量 + 十六进制 + ASCII」三栏格式打印。控制台里那行行 00000000: 47 45 54 20 ... GET ... 就是本模块的产物。
教学价值
| # | 价值 | 说明 |
|---|---|---|
| 1 | 经典 hexdump 格式算法 | Wireshark/hd/xxd 都是这格式 |
| 2 | Python 2/3 字符串模型 | bytes vs str,如何写兼容代码 |
| 3 | 生成器惰性求值 | 大流量不一次性占内存 |
| 4 | 序列/文件统一抽象 | 鸭子类型分派 |
来源
fork 自 anatoly techtonik 的 hexdump 库(Public Domain),r0capture 内联进仓库省去 pip install hexdump 依赖。
输出格式
00000000: 00 00 00 5B 68 65 78 64 75 6D 70 5D 00 00 00 00 ...[hexdump]....
00000010: 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF .."3DUfw........三栏:
- 偏移量(8 位十六进制)
- 十六进制字节(每行 16 字节,中间多一空格分两半)
- ASCII 可读字符(不可打印字符显示为
.)
核心函数
| 函数 | 作用 |
|---|---|
hexdump() | 主入口,支持 print/generator/return 三种输出 |
dumpgen() | 生成器版,逐行 yield |
dump() | 二进制 → hex 字符串(如 00 DE AD) |
dehex() | hex 字符串 → 二进制(反向) |
chunks() | 序列定长分块生成器 |
chunkread() | 文件流分块生成器 |
genchunks() | 鸭子类型分派(序列 or 文件) |
restore() | 从 hex dump 还原二进制 |
normalize_py() | Windows stdout 切二进制模式 |