当前位置: 首页 > news >正文

使用fiddler抓取手机上的HTTPS包

最近想抓取手机上app的数据包,在电脑上抓包可选的工具有很多, 比如wireshark,Linux命令行下有tcpdump等等工具。可是在这些工具在手机上都没法使用,这怎么搞

img_8e56b34df3239b944b989772ca5e6b4d.png

后来想了想能不能用网络代理抓包呢,说干就干。从网上查到,用fiddler可以代理手机的网络。

第一步下载fiddler

去下载一个fiddler,建议去官网下载传送门。

img_ff96814520f5547699a41610498a4aa5.png
fiddler
勾选协议,填写邮箱,然后下载就可以

第二步安装fiddler

双击下载的.exe文件,然后选择目录,next,next,完成安装

第三步安装CertMaker插件

fiddler默认生成的证书不能满足Android和iOS系统的要求,需要使用这个插件 传送门 往下找,找到图片的地方,点击下载,下载后,双击安装

img_774633a17525607bd831d3a2de3afaf9.png
CertMaker

第四步配置fiddler代理

想要抓HTTPS的数据包,必须安装证书,

img_a5d8d3d22c8853b8a8baf4f2cedf6938.png
fiddler

点击tools->options,然后出现这个界面,按照我标注的1,2,3,4都勾选,中间会出现一些提示,都点 yes
img_2849bc0bea8592ebe942ca44c4462a7b.png


img_00a07ad3e976113ae9d9d7873536e695.png

img_6d82521837676c93dfb428837c37ef1b.png
ca2.png

img_bf28a4370220ec31c338249e94c7373c.png
ca_ok.png

最后出现这个对话框说明证书已经安装成功。

第五步配置代理(手机和电脑在同一个网络中)

重启fiddler,开始手机的配置。查看电脑的IP地址,我的是192.168.31.56然后打开手机的浏览器(苹果手机一定要用Safari),输入IP地址:端口号 我的是192.168.31.56:8888 这个根据具体情况设置

img_4b3f568cbe665b6cb52799a4daeba3a0.png
iPhone

img_887de6107b523fab07154c7a9eb4e569.png
iPhone

下载证书,点击允许,安装证书.

重点、重点、重点

这时候一定要把安装的证书设置为信任的证书
去手机的设置->通用->关于本机->证书新人设置,把刚才安装的证书设置为信任的证书。再去网络设置中,给WiFi设置代理(电脑和手机一定在同一个网络中)

img_733b821cab4cdc9617c2a03552ba5920.png
iPhone

然后打开手机上的app,在fiddler中就可以看到,http的数据了,打开一个HTTPS的连接,可以看到,数据是没有加密的
img_bde8dbdef78cfda90c1aa0d7b0f90b0f.png
fiddler

这时候如果没有抓到数据包,或者错误,应该是证书配置有问题,把之前的证书清除,按照步骤重新配置一遍.重启fiddler,重新在手机安装证书.


img_835605785c6ed84e7e7ffce706f14142.png
清除证书

总结

fiddler代理可以抓到大多数的数据包,但不是所有的数据包都能抓到。fiddler并不支持全部协议,目前已知的有http2、tcp、udp、websocket等,如果应用走了以上协议,那么fiddler肯定是抓不到的。因为fiddler是基于.net framework实现的,因为.net framework不支持http2,所以fiddler无法抓取http2。
还有一种情况,app使用自带的证书,我们给手机安装的证书,app不信任.这样也是无法抓到的。fiddler抓包的原理是中间人攻击,也就是说,两头瞒,欺骗客户端&&欺骗服务器端,如果https证书写死在app里,app只信任自己的证书,fiddler没法瞒客户端了,因此fiddler也就抓取不到包了。

相关文章:

  • 云栖科技评论第76期:车用半导体混战 中国怎么战?
  • 兼容性总结
  • 运维技术(一)用docker安装elk之CentOS7.4
  • 时间复杂度分析经典问题——最大子序列和
  • Android Studio踩过的坑
  • 细说Redis(一)之 Redis的数据结构与应用场景
  • Python变量的相互转换
  • 2018.10.23-dtoi-1770不设找零No Change (nochange)
  • 【NOIP2017D2T3】列队
  • Algs4-1.3.13判断正确的出队次序
  • Dubbo分析之Exchange层
  • QML-qmake大法
  • DreamWeaver使用小结
  • Js jquery常用的身份证号码 邮箱电话等验证
  • POI 2018.10.27
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Bootstrap JS插件Alert源码分析
  • EOS是什么
  • ERLANG 网工修炼笔记 ---- UDP
  • Gradle 5.0 正式版发布
  • isset在php5.6-和php7.0+的一些差异
  • jquery cookie
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • passportjs 源码分析
  • redis学习笔记(三):列表、集合、有序集合
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue UI框架库开发介绍
  • Vue2.x学习三:事件处理生命周期钩子
  • Vue组件定义
  • 前端性能优化——回流与重绘
  • 什么是Javascript函数节流?
  • 小李飞刀:SQL题目刷起来!
  • No resource identifier found for attribute,RxJava之zip操作符
  • #、%和$符号在OGNL表达式中经常出现
  • #大学#套接字
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (二)斐波那契Fabonacci函数
  • (五)网络优化与超参数选择--九五小庞
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)创业家杂志:UCWEB天使第一步
  • .NET 8.0 中有哪些新的变化?
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .Net多线程总结
  • .NET命令行(CLI)常用命令