【笔记】Android无root下纯Java类似tcpdump监测和控制app的网络访问

3 篇文章 0 订阅
2 篇文章 0 订阅

一直都有一个想法去写一个app来控制哪些app可以访问网络,并且像tcpdump一样监测网络包发了什么东西好调试自己写好的网络应用。

最开始一直都想着围绕Google的ToyVxN的例子去得到packet的IO instance,这样就可以dump出来packet的具体内容了;也就是说使用Android VxN的接口,在本地开一个假的VxN,得到所有网络连接,这样就可以做到tcpdump的功能,再逐个对连接调用protect()放行;但是琢磨了半天,没有找到一个比较好的方法去relay网络流,原封不动的把流量从Android本地再发出去。自己写我的兴趣又不太在这上面。

https://android.googlesource.com/platform/development/+/master/samples

于是今天再次尝试搜索,终于找到了

https://github.com/httptoolkit/httptoolkit-android

它介绍了如何具体relay网络流,里面使用了另一个人写的东西

https://github.com/LipiLee/ToyShark

虽然是2019年的了,git clone下来gradlew build一下,还是可以用的,sdk到28也不老;而且明显可以改到最新的31。ToyShark从名字看就知道是致敬网络抓包WinShark工具。这样运行ToyShark以后,会启动一个假的VxN,实则得到所有IP流量的packet,然后以列表的方式打印出来。
在这里插入图片描述

这些显示在UI上的代码都在 com/lipisoft/toyshark/PacketListAdapter.java 里。其实不难发现,只要把这些信息和packet里的内容都dump到一个文件里写成.cap,就算完成tcpdump的功能了。

至于对每个app进行网络访问控制,可以通过接口函数进行allow和reject,这样就加强了Android的安全管理,就是说虽然现在Android已经有了对某个app进行网络权限的设置,但是有时候我们并不知道哪个app在背后访问网络。有了这个工具,流量就基本跑不掉了。基于这个原理,后面的工具就是加一个界面,列出所有app,然后匹配packet了。

好了,可以安心调试app的网络api request了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值