Android如何利用VpnService来抓包

Android如何利用VpnService来抓包,第1张

通过这张图可以看出在未使用VpnService的情况下,App会走系统网络来进行各种网络通信。而在使用VpnService的情况下,IP层网络通信传输的包将经由本地的虚拟通道交由VpnService来处理,这样一来我们便可以捕获这些数据从而达到抓包的目的。

至今还没有完全理解这个API的意义。按照google的文档来说就是:

看起来像是添加一个虚拟IP地址的意思,然而按照教程中的描述则为:

参数变成了子网掩码,但是按照实际的使用来看更偏向于第一种。

添加路由来过滤发送特定IP地址的流量,如果不进行任何过滤则需要设置为0.0.0.0/0或::/0

添加DNS服务器的地址,如果不添加的话将使用手机默认的DNS服务器。

添加白名单,白名单中的app的流量将不会经过vpn虚拟通道而直接走系统网络。

设置是否为阻塞模式,默认为非阻塞。个人感觉很重要的API,github上的很多项目没有设置为阻塞导致具体实现的时候用的都是线程轮询的方式,这一样一来大大提升了系统的开销。设置为阻塞模式后将大大减少进程上下文的切换。

设置虚拟通道的最大传输字节数,需要根据具体情况具体分析。在抓包的场景下最好尽可能得设置大一些。

简单来说是否允许一些app在使用一些非主流的方式访问网络的情况下不走虚拟通道。个人觉得最好允许。

VpnService启动后创建Builder进行各种初始化,结束后调用establish()获得本地虚拟通道的文件描述符(mFD)。通过输入流读取需要发送IP数据包后解析包的解析(网上有各种第三方的库可供选择)。首先判断是版本是IPV4还是IPV6,之后根据不同的版本来判断使用的是什么协议。

实际抓包的时候可以看到很多协议种类,当然主要的还是UDP与TCP。

可以创建一个稀疏数组,key为源端口,value为Datagram通道,通过Datagram通道向外发送UDP数据,从而减少系统开销。最终通过Datagram通道拿到UDP响应数据后写入mFD的输出流。

TCP的情况比较麻烦,涉及到三次握手以及四次分手,在github上看到个人感觉比较好的做法是,本地建立一个代理服务器来模拟这个过程。这个还需要深入研究。

套接字在发送之前一定要调用protect来防止循环链接,否则发出去的包又回回到mFD的输入流造成死循环。

另外mFD如果不关闭的话是没办法停止VpnService的。

pull request就是请求别人pull自己的仓库。

当然,一般发起pull request的人都是从被请求人,那里clone的代码(github上则可以直接fork),一般比被请求人的项目提前若干commit。

pull request只是一种项目合作形式,github只是整合了相应功能,脱离github照样能pull request。

比如Linux内核项目,直接给linux发邮件,标题就是Pull Request。邮件里写上git的url和新增的feature或者修的bug。

如果linux觉得ok,就会根据给出的git url去git pull,github只是把上述过程集成在了站内,更加方便新人。

扩展资料:

github 合作开发模式主要有三种。

一、Fork 方式。

开发者 fork 自己生成一个独立的分支,跟主分支完全独立,pull代码后,项目维护者可根据代码质量决定是否merge代码。

二、组织。

组织的所有者可以针对不同的代码仓库建立不同访问权限的团队。

新建一个组织,然后添加项目成员,根据提示设置完毕,在仓库的Collaborators 下面的Teams就可以添加或者remove组织成员

三、合作者。

代码仓库的所有者可以为单个仓库增加具备只读或者读写权限的协作者。

合作者方式比较实用,也很方便,新建一个Repository,完毕之后,进入Repository的Settings,然后在Manage Collaborators里就可以管理合作者了。

参考资料来源:百度百科——github

V免签 —— 个人开发者收款解决方案

V免签 是基于SpringBoot 2.1.1 实现的一套免签支付程序,主要包含以下特色:

收款即时到账,无需进入第三方账户,收款更安全

使用H2-Database,仅需安装Java环境,简单配置,一键搭建

超简单Api使用,提供统一Api实现收款回调

免费、开源,无后门风险

支持监听店员收款信息,可使用支付宝微信小号/模拟器挂机,方便IOS用户

免root,免xp框架,不修改支付宝/微信客户端,防封更安全

如果您不熟悉Java的配置,您可以使用PHP版本的服务端

V免签仅供个人开发者调试测试使用,请勿用于非法用途,商用请您申请官方商户接口

项目详情和地址更多核心内容在文章最后压轴

后台演示:

安装

下载已经编译好的war

确认本机已经拥有java的运行环境(JDK>=1.8),如果没有,请您安装java的运行环境

在war包的同级目录,在控制台输入启动命令 java -jar v.war

请将v.war替换成您下载的war包的名字

如果您需要自定义项目的运行端口,请您在启动的时候使用:java -jar v.war --server.port=9090 (9090可以替换成任意端口)

打开浏览器,访问 localhost:8080

点击系统设置,进入设置页面,修改系统的默认配置

下载V免签监控端到安卓手机或安卓模拟器,开启辅助服务,实现收款回调功能

默认管理账号为:admin

默认通讯密钥为:admin

保存配置后,即可开始使用

升级说明:请您直接下载新版本覆盖旧版本即可!

说明

请部署完成后访问后台,有详细的Api说明

注意

本系统原理为监控收款后手机的通知栏推送消息,所以请保持微信/支付宝/V免签监控端后台正常运行,且添加到内存清理白名单!

v免签的原理是监控手机收到收款后的通知栏推送信息,所以不适合于商用多用户的情况,如果您想用于商用,请二次开发!

v免签拥有双语言服务端,当您使用php版本服务端遇到问题的时候,请您尝试使用java版本服务端,php版本服务端配置略复杂,需要配置伪静态规则,请知悉!

v免签支持的通知有:

支付宝个人收款的推送通知

支付宝商家二维码的收款推送通知

支付宝店员通绑定的店员账号收款的推送通知

微信二维码收款推送通知

微信店员收款推送通知

Github 地址

https://github.com/zql001/liaotui_public/blob/master/READEME3.md


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11655781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存