PCAPdroid 扩展元数据 — 在 PCAP 里嵌入应用名和 UID
它是什么
PCAPdroid extensions(旧版本叫 PCAPdroid trailer)在导出抓包时给每个包额外附加一段元数据,包括:
- 进程 UID:产生这条流量的应用 UID(
-1表示无法关联) - 应用包名:截断到 19 字符的包名字符串
这些信息在 PCAPdroid 应用内部本来就有(Connections 列表里每一行都显示应用图标和名字),但导出到 PCAP 文件后就丢失了——PCAP/PCAPNG 标准格式本身不存储"这个包属于哪个 App"。PCAPdroid extensions 就是补上这块缺失。
两种格式下的嵌入方式
PCAP 格式(免费版)
在 PCAP 模式下,extension 给每个包添加了一段模拟的 Ethernet 头(14 字节)+ PCAPdroid trailer(28 字节),然后尾部 padding 保证 trailer 对齐。完整覆盖:
| 字段 | 大小 | 说明 |
|---|---|---|
| magic | 4 bytes | 0x01072021,标识这是 PCAPdroid trailer |
| uid | 4 bytes (int32) | 进程 UID,-1 = 未知 |
| appname | 20 bytes (string) | 应用包名,最多 19 字符 + null |
PCAPNG 格式(付费版)
PCAPNG 是更现代的扩展格式,extensions 用 Custom Block(PEN 62652) 存储:
- 每种应用存一个
pcapng_pd_uid_map_block:UID → 包名 → 应用名 映射 - 每个 Enhanced Packet Block 加一个 Comment Option,内容是
"u-<uid>"
优点:包方向、应用归属都保留,且应用信息只存一次(节省空间)。
Wireshark 中查看
把 PCAPdroid 仓库里的 pcapdroid.lua 插件放到 Wireshark plugins 目录(%APPDATA%\Wireshark\plugins),重启 Wireshark:
- 包详情里会多出 App UID 和 App Name 字段
- 可以直接按 UID 或 App Name 做 Wireshark 过滤器
Linux 下也可以不安装,直接命令行加载:
wireshark -X lua_script:pcapdroid.lua my_capture.pcapng
<img src="images/pcapdroid-extensions.png" alt="Wireshark 里的 PCAPdroid 扩展元数据" title="扩展元数据在 Wireshark 中可见" />