gptind826-dotcom/eXcap-Android
GitHub: gptind826-dotcom/eXcap-Android
eXcap 是一款免 root 的 Android 网络抓包诊断应用,通过本地 VPN 接口实现按应用级别的 TCP/UDP/HTTP/TLS 流量捕获与导出。
Stars: 0 | Forks: 0
# eXcap
[](https://github.com/gptind826-dotcom/eXcap-Android/actions/workflows/debug-build.yml)
**eXcap 是一款专业的免 root Android 网络诊断应用。** 它会创建一个本地 Android VPN 接口,将连接归属于已安装的应用,重建网络流,并在设备上处理数据包。
## 可检查的内容
| 功能 | eXcap 显示的内容 |
|---|---|
| **按应用抓包** | 捕获单个选定的应用、选定的一组应用或整个设备 |
| **TCP/UDP 流** | 源/目标地址、端口、协议、状态、时序、方向和字节数 |
| **DNS** | 查询、解析的地址和应用归属 |
| **明文 HTTP** | 请求方法、主机、URL、标头、状态、响应元数据和 payload 视图 |
| **HTTPS/TLS 元数据** | 远程 endpoint、端口、SNI/服务器名称(如果可用)、TLS 元数据、时序和加密字节数 |
| **原始 payload** | 对抓包引擎可见的 payload 字节的文本和十六进制视图 |
| **导出** | 面向 Wireshark 或其他分析工具的 PCAP、PCAPNG、CSV 和 HAR |
| **实时分析** | 连接列表、应用统计、主机、国家/地区、协议和实时流量总计 |
| **高级路由** | 可选的 SOCKS5、远程收集器、UDP 导出器和 root 接口抓包模式 |
### 重要的 HTTPS 限制
正常的 HTTPS 内容是端到端加密的。eXcap **不会绕过 TLS**,默认情况下无法显示加密的请求或响应体。它仍然可以显示连接元数据,例如目标 IP、端口、应用、SNI(如果可观察到)、时序和流量。
针对独立的上游 TLS 插件和用户安装的 CA,存在一条可选的兼容路径。它需要进行显式设置,可能不适用于证书固定(certificate-pinned)的应用,并且只能在获得授权的情况下使用。该功能默认未启用。
## 产品原则
- **本地优先:** 捕获解析在 Android 设备上进行。
- **明确同意:** Android 会显示其标准的 VPN 授权提示。
- **操作可见:** 在进行抓包时会显示一条持续的通知。
- **无需 root:** 标准引擎使用 Android 的 `VpnService`。
- **不收集凭证:** eXcap 不提供用于提取密码、token 或私钥的自动化功能。
- **用户控制的导出:** 数据仅通过显式选择的导出、收集器或转发功能离开应用。
## 抓包工作流
1. 打开 **eXcap** 并选择抓包模式。
2. 启用 **目标应用** 并选择一个应用进行针对性检查,或者将其关闭以捕获整个设备的流量。
3. 点击状态环或 **Start**。
4. 批准 Android 的本地 VPN 提示。
5. 使用选定的应用生成流量。
6. 打开 **Connections** 检查其 TCP/UDP 流和 HTTP/TLS 元数据。
7. 在需要时停止抓包并导出 PCAP/PCAPNG、CSV 或 HAR。
## 架构
```
Selected Android apps
│
▼
Android VpnService / optional root interface
│
▼
Native capture engine (zdtun + nDPI)
│
├── flow reconstruction and app/UID attribution
├── DNS, HTTP, TLS/SNI and protocol metadata
├── connection and payload model
└── PCAP/PCAPNG/CSV/HAR exporters
│
▼
Java + Material Components user interface
```
有关数据流、信任边界和实现细节,请参阅 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
## 本地构建
### 要求
- Linux、macOS 或 Windows
- **JDK 21**
- Android SDK,包含:
- `platforms;android-37.0`
- `build-tools;37.0.0`
- `ndk;28.2.13676358`
- `cmake;3.22.1`
- 已初始化 Git 子模块
### 命令
```
git clone --recurse-submodules https://github.com/gptind826-dotcom/eXcap-Android.git
cd eXcap-Android
./gradlew testStandardDebugUnitTest lintStandardDebug
./gradlew assembleStandardDebug
```
生成的可安装调试版 APK 位于:
```
app/build/outputs/apk/standard/debug/app-standard-debug.apk
```
调试版 APK 使用 Android 生成的调试密钥进行签名,适合用于测试。生产环境的分发应使用在代码仓库之外配置的受保护的发布版 keystore。
## GitHub Actions APK
`.github/workflows/debug-build.yml` 会在推送(push)、拉取请求(pull request)、打标签(tag)和手动调度时运行。它会:
1. 检出所有原生子模块;
2. 安装 JDK 21 和指定的 Android/NDK 工具链;
3. 运行单元测试和 Android lint;
4. 构建 `assembleStandardDebug`;
5. 生成 SHA-256 校验和;并且
6. 将 APK、校验和、lint 报告和测试报告作为工作流产物(artifact)上传。
诸如 `v1.0.0` 的标签也会创建一个包含已验证调试版 APK 的 GitHub Release。对于公开发布版本,应将调试签名替换为由代码仓库/环境密钥支持的发布签名任务。
## 测试
该项目包含针对数据包、连接、过滤、HTTP、DNS、IP、解密列表和实用工具行为的上游单元测试。有关此 eXcap 构建的验证运行记录在 [`docs/TESTING.md`](docs/TESTING.md) 中。
## 隐私与安全
- 在使用包含个人数据的抓包结果之前,请阅读 [`PRIVACY.md`](PRIVACY.md)。
- 使用 [`SECURITY.md`](SECURITY.md) 报告漏洞。
- 抓包文件可能包含敏感的 URL、标头、DNS 名称和明文 payload。请谨慎存储和分享。
- eXcap 自身的应用 ID 是 `app.excap.network`(调试构建为 `app.excap.network.debug`)。
## 许可与致谢
本项目是 [PCAPdroid](https://github.com/emanuele-f/PCAPdroid) 的修改版分发,最初由 **Emanuele Faranda** 及其贡献者创建。经过验证的抓包引擎在 **GNU GPL v3 或更高版本** 下被重复使用。我们有意保留了上游的版权、源码头信息、子模块历史和许可声明。
eXcap 的名称、网络节点图标、产品文案、包标识、仪表板、配色系统、隐私文档和 CI 打包均为本项目的修改内容。请参阅 [`NOTICE`](NOTICE) 和 [`COPYING`](COPYING)。
标签:Android, DSL, JS文件枚举, PCAP, UML, VPN接口, 后台面板检测, 域名枚举, 情报分析, 网络抓包, 网络诊断, 防御绕过