小编fat*_*mus的帖子

带有VpnService的Android防火墙

我正在尝试使用VpnService为BS项目实现一个简单的Android防火墙.我选择VpnService是因为它将在非root设备上运行.它将记录连接并让您过滤连接.(基于IP)

有一个应用程序这样做是有可能的.

Google Play应用商店

我做了一些研究,发现VpnService创建了一个Tun接口.而已.(没有VPN实现只是一个隧道)它允许您为此接口添加地址并添加路由.它返回一个文件描述符.您可以读取传出的包并写入传入的包.

我创建了一个VpnService派生类,我开始服务.我可以tun0使用VpnService.Builder类进行配置.当我查看mobiwol's与adb shell netcfg它的连接时,创建一个tun010.2.3.4/32地址的接口.它将所有程序包路由到此专用网络并发送到Internet.我也在尝试.创建了10.0.0.2/32地址的接口.添加了具有addRoute功能的路由.0.0.0.0/0所以据我所知,我可以从所有网络捕获所有包.(我对这个主题很新,还在学习.我在互联网上找到了作品,所以我不太确定.如果我错了,请纠正我.)

我在服务中创建了2个线程.一个从文件描述符读取并使用受保护的套接字将其写入127.0.0.1.(我不确定我是否应该读/写127.0.0.1.也许这就是问题所在.)

我分析了从文件描述符中读取的数据包.例如:

01000101    byte:69     //ipv4 20byte header
00000000    byte:0      //TOS
00000000    byte:0      //Total Length
00111100    byte:60     //Total Length
11111100    byte:-4     //ID
11011011    byte:-37    //ID
01000000    byte:64     //fragment
00000000    byte:0      //"
01000000    byte:64     //TTL
00000110    byte:6      //Protocol 6 -> TCP
01011110    byte:94     //Header checksum
11001111    byte:-49    //Header checksum
00001010    byte:10     //10.0.0.2
00000000    byte:0
00000000    byte:0
00000010    byte:2
10101101    byte:-83    //173.194.39.78 //google
00111110    byte:-62
00100111    byte:39 …
Run Code Online (Sandbox Code Playgroud)

java networking android packet-capture tun

29
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×1

java ×1

networking ×1

packet-capture ×1

tun ×1