Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

r0capture HAR Edition

面向 Android 应用的 Frida 加密流量采集工具,当前仓库以 r0capture_har.py + script_har.js 为主,支持将解密后的应用层数据同时保存为 PCAP 和 HAR 1.2。

上游项目与许可证

本项目是基于以下开源项目的个人二次开发版本,不代表上游项目的官方发行版:

本仓库保留原始许可证和版权声明,详见 LICENSE。新增代码、修复和行为差异均属于本仓库维护范围;上游项目的问题请优先在对应上游仓库查询。

本项目特征

相较于传统的 SSL 日志脚本,本版本重点增强了采集完整性、HAR/PCAP 重组和 Android 新版本兼容性:

  • Frida Spawn / Attach 两种模式:支持 USB 设备和远程 frida-server,Spawn 模式先注入 Hook 再恢复进程,减少启动阶段漏包。
  • Native SSL + Java 网络层联合采集:默认覆盖 SSL_read、SSL_write、Java Socket/Keystore 以及 SSL 会话和端点元数据。
  • 多进程采集:默认跟踪同一应用的普通子进程,可用 --main-only 或 --no-multi-process 缩小范围。
  • WebView/Chromium 进程规避:对 Android 16/Trichrome 常见的 sandboxed_process、renderer 进程进行识别,避免无效的 ptrace 注入导致宿主应用崩溃。
  • Native 热路径缓冲:使用 Frida CModule ring buffer 批量转发 SSL 明文,降低在网络线程中直接调用 JavaScript 的阻塞风险。
  • PCAP 输出:将捕获的明文 TCP 流重组为可供 Wireshark 分析的 PCAP 文件。
  • HAR 1.2 输出:支持 HTTP/1.x 和 HTTP/2 的请求、响应、头部、正文、连接信息及进程来源标记;HTTP/2 解码依赖 hpack。
  • WebSocket HAR 扩展:识别 HTTP/1.1 101 Upgrade,解析掩码、分片、文本、二进制、Ping/Pong/Close 帧,并以 Chrome 兼容的 _resourceType: websocket 与 _webSocketMessages 字段保存;permessage-deflate 提供尽力解压。
  • 周期 HAR 检查点:默认每 10 秒将已完成条目原子写入目标 HAR,App 或 Session 中途退出时仍保留此前结果。
  • Session Crash 记录:记录 detached reason 和 Frida 提供的完整 Native Crash report,并在退出统计中汇总脱离与崩溃次数。
  • HTTP/2 容错:严格等待 HEADERS + CONTINUATION 完成后解码;Header Block 被打断或 HPACK 失败时只重置当前连接方向,避免污染其他连接。
  • 重定向保真:对无响应体的 3xx 记录原始 wire response,并将后续最终响应归并到同一逻辑请求,避免状态码和正文不一致。
  • 本地时间保留:HAR 的 startedDateTime 使用采集主机的本地时区和 ISO-8601 偏移。
  • 诊断开关:提供 --no-java-hooks、--no-native-metadata、--no-multi-process、--main-only 等选项,用于定位特定 ROM、进程或 Hook 问题。
  • 可选详细日志:-v 模式输出调用栈和十六进制数据;普通模式保留低噪声进度信息。

环境要求

  • Android 设备或模拟器上的 Frida 注入环境;
  • 电脑端 frida 与设备端 frida-server 使用相同核心版本;
  • Python 3.9+(推荐 Python 3.11);
  • Windows 用户可按需安装 win_inet_pton;
  • HTTP/2 HAR 解码建议安装 hpack。

安装 Python 依赖:

python -m pip install frida frida-tools loguru hpack

-v 模式使用仓库内的 myhexdump.py,不需要额外安装 hexdump 包。

快速开始

USB Spawn 模式

python r0capture_har.py -U -f \
  com.example.app

USB Attach 模式

python r0capture_har.py -U \
  com.example.app

远程 frida-server

python r0capture_har.py -H 192.168.1.10:886 \
  com.example.app

详细输出

python r0capture_har.py -U -f -v \
  com.example.app

命令行参数

参数 说明
-U, --isUsb 连接 USB 设备
-f, --isSpawn Spawn 应用并在恢复前加载 Hook
-H HOST:PORT 连接远程 frida-server
--output-dir PATH 默认输出根目录,默认为脚本目录下的 output
-p PATH, -pcap PATH 覆盖默认 PCAP 文件路径
--no-pcap 不生成 PCAP;默认生成
--har PATH 覆盖默认 HAR 文件路径
--no-har 不生成 HAR;默认生成
--har-checkpoint SECONDS HAR 原子检查点间隔,默认 10 秒;0 表示禁用
-v, -verbose 输出详细日志、调用栈和 hexdump
--main-only 仅 Hook 主进程
--no-multi-process 禁用普通子进程采集
--no-java-hooks 禁用 Java Socket/Keystore 采集
--no-native-metadata 禁用 SSL 端点和会话元数据查询
-ssl LIB 指定需要 Hook 的 SSL 库匹配模式
--ssl-api classic|ex 选择 SSL_read/write 或显式 SSL_read_ex/write_ex,默认 classic
--list-targets 仅列出主进程、子进程和跳过项,不执行注入
-w SECONDS 等待指定秒数后开始处理
PROCESS 应用包名、Frida 应用名或进程 PID

完整参数可使用:

python r0capture_har.py --help

输出说明

未指定 -p、--har 时,PCAP 和 HAR 现在默认生成,并与日志按类型和目标分类:

output/
├─ logs/<目标>/r0capture_<时间戳>.log
├─ pcap/<目标>/capture_<时间戳>.pcap
└─ har/<目标>/capture_<时间戳>.har

同一次运行共用毫秒级时间戳。目录名会自动替换 Windows/Linux 不允许的字符。可通过:

python r0capture_har.py --output-dir D:\captures -U com.example.app

整体切换根目录,也可以继续用 -p、--har 单独覆盖文件路径。

  • PCAP:明文 TCP 流,适合使用 Wireshark 检查连接和协议内容;
  • HAR:适合浏览器开发者工具、HAR 分析器和自动化测试工具;
  • Log:保存抓包进度、Session Crash、完整性统计和最终文件位置。

HAR 条目包含 _r0capture.processId 和 _r0capture.processName 字段,用于区分多进程来源。抓包数据可能包含账号、令牌和业务正文,请在上传仓库前确认已清理本地输出文件。

WebSocket 连接保留标准 HTTP 101 握手条目,并增加:

{
  "_resourceType": "websocket",
  "_webSocketMessages": [
    {"type": "send", "time": 0.0, "opcode": 1, "data": "hello"}
  ]
}

该字段是 Chrome HAR 自定义扩展,不属于 HAR 1.2 标准字段。目前支持 HTTP/1.1 Upgrade,不处理 RFC 8441 的 HTTP/2 Extended CONNECT WebSocket。

文件结构

r0capture_har.py   # Python 采集、流重组、PCAP/HAR 输出
script_har.js      # Frida Hook、Native ring buffer、Java 网络层采集
myhexdump.py       # -v 模式使用的本地 hexdump 实现
pic/               # README 配图
LICENSE            # 上游许可证和版权声明

已知边界

  • 独立 WebView/Chromium renderer 中、且未经过宿主 Cronet/Conscrypt 的流量,可能无法通过 ptrace Hook 获取;
  • HTTP/3、QUIC、自定义 native 网络栈以及完全独立的进程需要单独适配;
  • Frida 客户端和设备端 frida-server 版本不一致时,Spawn、Child-gating 或 Java API 解析可能失败;
  • 设备 ROM 的 ptrace、SELinux、Frida 兼容性问题可能影响注入结果。

致谢

感谢上游作者及相关项目维护者:

本仓库的修改内容仅代表当前维护者,不改变上游项目的归属和许可证要求。

About

安卓应用层抓包通杀脚本

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages