android开发通过wireshark实现flutter应用抓包
<h1 id="android开发通过wireshark实现flutter应用抓包">android开发通过wireshark实现flutter应用抓包</h1><h2 id="1-为什么要使用wireshark抓包">1. 为什么要使用wireshark抓包</h2>
<ul>
<li>
<p>1.有了上一篇Charles的抓包文章,为什么还写这篇抓包文章呢?单独论http请求抓包的话Charles比wireshark好用</p>
</li>
<li>
<p>2.这是因为flutter应用使用的不是系统的证书,而是使用flutter框架自己的证书,这就导致了Charles即使配置了系统证书抓包不了,所以只能使用wireshark通过网络代理实现抓包</p>
</li>
<li>
<p>3.wireshark抓包工具下载地址:https://www.wireshark.org/download.html</p>
</li>
</ul>
<h2 id="2-flutter应用实现抓包的方法">2. flutter应用实现抓包的方法</h2>
<h3 id="1-方法一-有源代码">1. 方法一 (有源代码)</h3>
<ul>
<li>
<p>1.如果是自己的应用,也就是有源代码,这个方法一就是就好处理的</p>
</li>
<li>
<p>2.一般flutter应用的网络请求都是通过dio框架实现的,那就给dio设置代理ip和端口就搞定</p>
</li>
<li>
<p>3.给dio网络请求添加代理如下:</p>
<pre><code>import 'package:dio/dio.dart';
var dio = Dio();
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
client.findProxy = (uri) { return 'PROXY 192.168.137.1:8888';};//设置为Charles代理ip,查看方法:Help -> Local IP Address
client.badCertificateCallback = (X509Certificate cert, String host, int port) => true; //忽略证书
};
</code></pre>
</li>
<li>
<p>4.这样就能实现抓包了,连之前说的在手机安装Charles证书都不用,因为flutter应用不走系统代理使用的都不是系统的证书,而且自己的框架内部的。</p>
</li>
</ul>
<h3 id="2-方法二-没源代码">2. 方法二 (没源代码)</h3>
<ul>
<li>
<p>1.没有源代码,那怎么办?那就只能hook了,使用frida框架hook住flutter框架的关键点,让它支持代理抓包</p>
</li>
<li>
<p>2.实现起来有点麻烦,网上自己找方法试一下吧,这里随便贴一遍作为参考:https://blog.csdn.net/weixin_51111267/article/details/131733067</p>
</li>
</ul>
<h3 id="3-方法三-没源代码">3. 方法三 (没源代码)</h3>
<ul>
<li>
<p>1.连Charles工具抓包都无能为力了,还有其他方法吗?有的,就是本文要讲解的使用wireshark通过网络代理实现抓包</p>
</li>
<li>
<p>2.首先window电脑开启热点,然后让手机连接电脑开启的热点,这样手机访问的网络必然经过这个热点,然后使用wireshark工具抓包这个热点网络的通信数据就可以了</p>
</li>
<li>
<p>3.window开启热点方法如下<br>
<img src="https://img2024.cnblogs.com/blog/1020339/202408/1020339-20240821122424734-565849258.png"></p>
</li>
<li>
<p>4.安装wireshark工具,然后打开它。安装的时候会提示安装其他插件比如tcpdump,最好尽量都安装上,安装多了不影响。<code>打开wireshark工具后选择window开启的热点</code>,进行追踪抓包<br>
<img src="https://img2024.cnblogs.com/blog/1020339/202408/1020339-20240821122719838-921864194.png"></p>
</li>
<li>
<p>5.通过http过滤器过滤出http请求,也可以通过<code>http && ip.src==192.168.137.12 、 ip.addr==xx</code>等等过滤规则过滤出自己想要的抓包数据<br>
<img src="https://img2024.cnblogs.com/blog/1020339/202408/1020339-20240821123150553-868414222.png"></p>
</li>
<li>
<p>http流追踪分析,能具体查看http请求数据和响应数据,使用红色区分,默认红色部分是请求数据,蓝色部分是响应数据<br>
<img src="https://img2024.cnblogs.com/blog/1020339/202408/1020339-20240821144642198-44585985.png"></p>
</li>
<li>
<p>统计http请求数据<br>
<img src="https://img2024.cnblogs.com/blog/1020339/202408/1020339-20240821144649231-198678385.png"></p>
</li>
<li>
<p>其他高级用法自己搜索学习,不过抓包一般就这些使用,wireshark比charles强大,就是抓包使用起来没有charles方便,主要还是看个人习惯吧</p>
</li>
</ul>
<h3 id="附">附:</h3>
<p>新增一种flutter应用抓包方式以及工具推荐:</p>
<ol>
<li>ProxyPin开源flutter写的抓包工具:https://github.com/wanghongenpin/network_proxy_flutter</li>
<li>Reqable也行flutter写的不开源不过有免费版:https://reqable.com/zh-CN/download</li>
</ol><br><br>
来源:https://www.cnblogs.com/yongfengnice/p/18371513
頁:
[1]