ssl_log 函数详解
📝 r0capture.py 的核心:把抓到的明文写日志 + 写 pcap。
📎 源码在线查看:
r0capture.py#L131-L512(ssl_log)
函数签名
python
def ssl_log(p, data, pcap_file=None, ...):参数
| 参数 | 含义 |
|---|---|
p | message payload(含 type/src_addr/dst_addr/...) |
data | 二进制明文载荷 |
pcap_file | pcap 文件句柄(-p 模式下非 None) |
做了什么
终端输出格式
[SSL_write] 192.168.1.5:54321 --> api.app.com:443
POST /api/login HTTP/1.1
...
0000 47 45 54 20 ... GET ...- 第一行:方向 + 五元组(人类可读 IP)
- 中间:明文(可打印部分)
- hexdump:二进制视图
IP 可读化
p["src_addr"] 是大端 uint32,ssl_log 用 socket.inet_ntop 转成点分字符串显示:
python
src = socket.inet_ntop(socket.AF_INET, struct.pack(">I", p["src_addr"]))与 log_pcap 的协作
ssl_log 负责高层逻辑(解析、打印、决定是否写 pcap),log_pcap 负责底层包构造。ssl_log 调 log_pcap:
python
if pcap_file:
log_pcap(pcap_file, p["src_addr"], p["src_port"], p["dst_addr"], p["dst_port"], data)