Skip to content

ssl_log 函数详解 ​

📝 r0capture.py 的核心:把抓到的明文写日志 + 写 pcap。

📎 源码在线查看:r0capture.py#L131-L512(ssl_log)

函数签名 ​

python
def ssl_log(p, data, pcap_file=None, ...):

参数 ​

参数含义
pmessage payload(含 type/src_addr/dst_addr/...)
data二进制明文载荷
pcap_filepcap 文件句柄(-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)

相关文档 ​

基于 VitePress 构建 · 教学用途