hexdump() 主函数
🖨️ myhexdump 的主入口,r0capture 实际调用的函数。
📎 源码在线查看:
myhexdump.py#L297-L330(hexdump)
r0capture 的调用
python
gen = hexdump.hexdump(data, result="generator", only_str=True)
str_gen = ''.join(gen)
logger.info(f"{str_gen}")result="generator":返回生成器,逐行惰性求值only_str=True:只取 ASCII 可读栏(不打印十六进制栏),适合纯文本流量''.join(gen):把生成器所有行拼成一个字符串
签名
python
def hexdump(binary, size=2, sep=' ', result='print', only_str=False)| 参数 | 默认 | 含义 |
|---|---|---|
binary | — | 待 dump 的二进制数据 |
size | 2 | hex 文本块长度(每字节一组) |
sep | ' ' | hex 块分隔符 |
result | 'print' | 输出方式:print/generator/return |
only_str | False | 只输出 ASCII 栏 |
result 三种模式
| 值 | 行为 | 适用 |
|---|---|---|
print | 逐行 print | 命令行直接看 |
generator | 返回生成器,逐行 yield | r0capture 用(大流量省内存) |
return | 返回完整字符串 | 一次性拿全结果 |
only_str 模式
r0capture 抓的明文多是 HTTP 等文本协议,only_str=True 让输出更紧凑可读。
实现要点
hexdump 内部调 dumpgen(binary, size, sep) 拿到生成器(逐行产出格式化文本),再按 result 模式分流:print 模式逐行打印,generator 模式直接返回生成器,return 模式 '\n'.join。only_str 则在产出后只截取 ASCII 栏部分。