TLS 解密场景与局限 — 动手前先搞清能解什么、解不了什么
为什么需要解密
现代应用几乎全部使用 TLS 加密传输。在 PCAPdroid 的 Connections 列表中,这些连接只能看到 IP、流量大小、连接状态——完全看不到请求路径、请求参数、响应 body。解密之后:
- ✅ 看到完整的 HTTP 请求:方法(GET/POST)、路径、header、body
- ✅ 看到完整的 HTTP 响应:状态码、content-type、response body
- ✅ 看到应用实际发送了什么:有没有把明文密码、token、隐私数据直接发给服务器
- ✅ 逆向应用API 协议:比如一款 Android App 背后用的 REST API 端点和 JSON 结构
解密的前提是应用信任 PCAPdroid 生成的 CA 证书,否则 TLS 握手会失败,应用会主动断开。
支持的协议
- ✅ TLS 1.0 / 1.1 / 1.2 / 1.3(所有主流 TLS 版本)
- ✅ HTTPS(HTTP over TLS),这是最常见的场景
- ✅ 应用层 HTTP:Android App 里 Retrofit、OkHttp 等主流库发的 HTTPS 请求
目前不支持的协议
- ❌ QUIC:基于 UDP 的新传输协议(HTTP/3 底层),PCAPdroid 使用的 mitmproxy 底层库还不支持。Chrome、Google 全家桶、某些 App 会优先用 QUIC
- ❌ STARTTLS:明文协议在连接建立后升级到 TLS 的模式(比如 SMTP、IMAP、XMPP),mitmproxy 尚未处理
- ❌ 其他协议特定限制详见 mitmproxy 官方文档
QUIC 的临时解决方案
PCAPdroid 设置里提供了主动阻断 QUIC 连接的选项。开启后:
- PCAPdroid 检测到目标应用发起 QUIC 时主动阻断
- 应用发现 QUIC 走不通,会自动回退到传统 TLS 1.3
- 回退成功后 TLS 解密就能生效
缺点是某些应用强制 QUIC,阻断后会直接拒绝联网而不回退,这时只能另想办法。
法律与合规提示
动手解密之前,请先确认目标应用的用户协议(ToS)是否允许这类操作。有些应用条款明确禁止中间人攻击或逆向工程,违反协议可能导致账号被封禁。仅在用于个人学习、安全研究或自己开发的应用调试场景下使用。
<img src="images/tls-intro.png" alt="TLS 解密相关界面" title="TLS 解密场景" />