Fiddler抓包原理解析

Fiddler抓包原理解析

一、Fiddler简介:

Fiddler是一款免费且功能强大的数据包抓取软件。是位于客户端和服务器端之间的http(s)代理,它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,记录所有客户端和服务器间的http请求,针对特定的http(s)请求,分析网络传输的数据,支持监视,还可以设置断点、修改请求的数据和服务器返回的数据。Fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展。

二、Fiddler工作原理:

Fiddler工作于OSI七层模型中的应用层,Fiddler在浏览器与服务器之间建立一个代理服务器,能够捕获通过的http(s)请求。Fiddler启动后会自动将代理服务器设置成本机,默认端口为8888。Fiddler不仅能记录PC上浏览器的网络请求数据,还可以记录同一网络中的其他设备的HTTP(S)请求数据。数据传递流程大致如下:

Fiddler抓包原理解析

 

三、Fiddler抓取HTTPS原理:

现在APP中的数据传输基本上都使用HTTS传输,传输的数据都是经过加密的,这增加了我们分析数据包的难度,还好Fiddler除了可以抓取HTTP数据包,还可以抓取HTTPS数据包。由于HTTPS传输需要使用到CA证书,所以抓取https数据包时需要做一些特殊配置。Fiddler截取HTTPS报文的流程大致如下:
Fiddler抓包原理解析

(1) 客户端请求建立HTTPS链接,发送客户端支持的加密协议及版本列表等信息给服务器端。

(2) Fiddler接受客户端请求,并伪装成客户端向WEB服务器发送相同的请求。

(3) WEB服务器收到Fiddler的请求以后,从请求中筛选合适的加密协议。并返回服务器CA证书,证书中包括公钥信息。

(4)Fiddler收到WEB服务器的响应后,保存服务器证书并伪造一个自签名的CA证书,伪装成服务器,把该证书下发给客户端。

(5)客户端验证证书合法性。(Fiddler能否抓取到HTTPS报文关键看这一步)

(6)客户端生产对称密钥,并使用伪造的公钥证书进行加密,发送给服务器。

(7)Fiddler拦截客户端的请求以后,使用伪造的私钥解密该报文,获取对称加密秘钥,并使用真正服务器证书中带的公钥加密该对称密钥发送给WEB服务器。(此时对称密钥已经泄露了,以后可以使用该秘钥解密客户端和服务器端传输的数据)

(8)WEB服务器接收到客户端发送的加密的对称密钥后,使用私钥解密,并使用对称密钥加密测试数据传给客户端。

(9)Fiddler使用前面获取的对称密钥解密报文。

(10)客户端验证数据无误以后,HTTPS连接就建立完成,客户端开始向服务器发送使用对称密钥加密的业务数据。

(11)Fiddler使用前面获取的对称密钥解密客户端发送的数据,并重新加密转发给服务器端。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114600.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Python读写excel表格的方法一

    Python读写excel表格的方法一

    2022年3月4日
  • MATLAB GUI图形界面设计一个学生管理系统

    MATLAB GUI图形界面设计一个学生管理系统设计一个简单的学生成绩管理程序,包含如下功能:1、可创建不少于100名学生成员;2、每名成员的记录包括:学号、姓名、专业和5门课程的成绩; 3、能够实现添加、删除、修改学生成员;(增加非法字符警告)4、能够实现添加、删除、修改学生成员的课程成绩;(增加非法字符警告)5、分别计算每一门课程的平均成绩;6、每一门课程单独排序,输出由高到低的课程、姓名、成绩信息。7、提供图形界面实现上述功能,界面包含 系统登录界面 添加、删除、修改界面 被选中学生信息显示界面(基本信息,课程成绩,平均成

    2022年5月25日
  • java switch是什么意思_java switch语句详解[通俗易懂]

    java switch是什么意思_java switch语句详解[通俗易懂]switch语句的格式:switch(整型或字符型变量){case变量可能值1:分支一;break;case变量可能值2:分支二;break;case变量可能值3:分支三;break;…default:最后分支;}在switch的语法里,我们要学到4个关键字:switch、case、break、default。在 switch(变量) 这一行里,变量只能是整型…

    2022年7月7日
  • hadoop生态圈的理解「建议收藏」

    hadoop生态圈的理解「建议收藏」 hadoop部分:hadoop生态圈的理解(HDFS,MapReduce,HBASE,zookeeper,hive,sqoop,flume,kafka,yarn,spark) 一、简介       &am

    2022年5月22日
  • 软件测试工作基本流程[通俗易懂]

    软件测试工作基本流程[通俗易懂]最近在为面试新工作做准备,所以想想整理一下软件测试的基本工作流程,大致梳理一遍,这样也便于自己在面试过程中可以沉着的面对面试官的测试工作如何进行的问题。首先,作为测试人员需要学习并了解业务,分析需求点为什么测试人员要参加需求分析?也就是进行测试需求分析的目的是什么?第一、把用户需求转化为功能需求:1)对测试范围进度量2)对处理分支进行度量3)对需…

    2022年5月29日
  • asp.net中英文转换

    asp.net中英文转换一、中英文切换主要是依靠资源文件(Resources):资源文件名称格式:"页面名称加后缀.resx"      资源文件分为本地[App_LocalResources]和全球化[App_GlobalResources]二、实现过程:  本地资源:1.添加文件夹[App_LocalResources]                    2.创建以.resx结尾的资源文件   …

    2022年10月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号