【问题标题】:How to Get uid from packet - android如何从数据包中获取 uid - android
【发布时间】:2015-05-09 22:05:52
【问题描述】:
我正在 android 中开发一个防火墙应用程序,我需要根据 uid 识别应用程序。我创建了一个 vpn 服务,并且能够捕获数据包并获取目标 IP 地址。
有什么方法可以从数据包或数据报套接字中获取应用程序的 uid。
【问题讨论】:
-
直接访问 /proc/ 文件不再适用于 android-Q Refer
标签:
android
network-programming
vpn
packet
【解决方案1】:
您必须为此编写一些本机代码才能在内核级别进行通信。
【解决方案2】:
解析数据包,对于 TCP/UDP,可以检索 (local_ip, local_port, remote_ip, remote_port) 元组。然后读取解析/proc/net/tcp或/proc/net/udp,里面有uid字段。
这是一个所有者 uid 为 10117 的环回套接字:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
7: 0100007F:8FC5 0100007F:0438 01 00000000:00000000 00:00000000 00000000 10117 0 242607 1 00000000 21 4 26 10 -1