之前有介绍《Wireshark抓包分析——TCP/IP协议》,那如果是HTTPS协议,可以抓包分析吗?基于好奇,查阅了下相关资料分享给大家。在讲解密之前先来看下HTTPS与HTTP的不同之处,HTTPS是在TCP/IP与HTTP之间,增加一个安全传输层协议,而这个安全传输层协议一般用SSL或TLS,类似于下图。即我们所说的HTTPS=HTTP+SSL/TLS。

SSL协议分为SSL记录协议层和SSL握手协议层。SSL握手协议建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL记录协议将数据块进行拆分压缩,计算消息验证码,加密,封装记录头然后进行传输。如下图显示,这里不展开,有兴趣的童鞋可以继续自行深入了解。

应用层协议

SSL握手协议

SSL记录协议

TCP

IP

Wireshark在对HTTP请求分析时,一般是通过选定数据右键鼠标,查看Follow TCP Stream。

即可以看到请求的详细内容了。

Wireshark对HTTPS请求数据又是如何分析的呢,实际操作了下,以访问CSDN首页为例,可以看到抓取的数据包如下:

根据截图会发现2个略“神奇”的东东,(1)虽然过滤条件设置了SSL,但过滤结果满屏都是TLS的身影,随机找了其他一些网站也都是用TLS。简单查阅了下资料,发现TLS是以建立在SSL V3.0的基础上,两者的加密算法和MAC算法都不一样,而协议本身差异性不大。TLS协议也是由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议。忽略协议的差异性,后面会拿TLS来解密。现在来看另外1个满屏满眼的东东。(2)好多hello呀,Client Hello和Server Hello好多,这是什么呢?这是TLS的握手。整个握手阶段如下,可分为5步。

第一步,浏览器给出协议版本号、一个客户端生成的随机数,以及客户端支持的加密方法。

第二步,服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。

第三部,并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey。

第四部,浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。

第五部,服务器发给浏览器一个session ticket。

具体握手过程也可以通过Wireshark的抓包一步步验证,这里不再详述,还是专心来看看如何使用Wireshark来数据解密。我们现在获取到的Wireshark抓包数据在握手完成之后,还是各种TLSv1.2的东东,都是加密后的数据。

解密方式有好几种,介绍我觉得最简单的,通过浏览器保存的TLS 会话中使用的对称密钥来进行数据解密。在浏览器接收到数据之后,会使用秘钥对数据进行解密,部分浏览器会在某个地方会存储这个密钥,我们只要获取浏览器中的会话密钥就能解密数据。以windows系统+Chrome浏览器为例,首先要导出浏览器存储的密钥,通过计算机属性——高级系统设置——环境变量,新建一个变量名“SSLKEYLOGFILE”的变量,变量值是导出的密钥具体文件地址。

设置后可以通过Chrome浏览器打开任意一个HTTPS网址,此时查看变量值对应路径,已经生成sslkey.log。

密钥成功导出到本地啦。现在可以将密钥应用到Wireshark了。具体路径如下:菜单栏Edit——Preferences——Protocols——SSL(注意,不论是SSL还是TLS这里都是SSL,没有单独的TLS选项),在(Pre)-Master-Secretlog filename中选择刚才设置的变量值。

配置完成,看下效果:

看到有HTTP了,之前都是TLSv1.2。同时,WireShark下面会有一个“Decrypted SSL data”即已解密的SSL Data的标签,点击之后你就可以如上图所示的看到已经解密的TLS数据包的相信信息了。

觉得这样太难看了?OK,也可以像HTTP一样,通过鼠标右键在菜单栏中选择“Follow SSL Stream”,查看完整的HTTPS解密之后的请求数据哦。

除此之外,上面还有很多TLSv1.2的东东,比如:client_key_exchange、Session Ticket,这是最初提到过的TLS握手过程的第四步和第五步,并不是请求数据包的内容,因此看到其中像是没有解密的内容也不要奇怪哦。

——推荐阅读——

网易云信IM小程序上线?我们是这么做的!>>

全面复盘!深度剖析直播答题产品架构的难点与坑>>

如何快速设计短信验证码>>

如何做好Android 端音视频测试>>

Wireshark对HTTPS数据的解密相关推荐

  1. Wireshark基础使用,SSL解密及http抓包入门教程

    Wireshark VS Fiddler/Charles (一)下载与安装 (二)抓取https等解密 (三)报文传输各层简要介绍 Wireshark VS Fiddler/Charles Wires ...

  2. wireshark 无法解密tls_为什么Wireshark无法解密HTTPS数据

    问题 由于需要定位一个问题,在服务器上tcpdump抓取https数据包,然后下载到本地打开wireshark分析.然后我们下载域名私钥配置到wireshark,发现数据包居然无法解密.是wiresh ...

  3. 如何使用wireshark抓取HTTPS数据包?

    1.wireshark 抓包为什么不显示出来? wireshark 是基于网络层的抓包工具,通过捕获通信双方的TCP/IP包实现内容提取.对于应用层的数据,如果应用层协议是公开的,就可以直接显示数据. ...

  4. [转]HTTPS网络流量解密方法探索系列(一)

    前言 分析网络流量总是绕不开HTTPS,因其广泛使用甚至是强制使用逐渐被大众熟知,在保证其安全的同时也提高了对流量进行研究的难度.目前解析HTTPS协议的文章很多,有很多不错的文章可以带着入门,老实说 ...

  5. (在客户端)https抓包解密

    (一)原理分析 https的数据包是用对称秘钥(https协议协商出来的随机数)加密后的密文. 对称秘钥在传输线路上是密文的(被非对称加密过),但是在client.server端是明文的(因为要用于加 ...

  6. T-SQL问题解决集锦——数据加解密

    问题一:如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码.卡号,一般不能使用正常数值来存储.否则会有安全隐患.以往的加密解密都有前端应用程序来辅助完成.而数据库一般只能加密 ...

  7. Wireshark的https代理抓包(whistle中间人代理)

    为什么80%的码农都做不了架构师?>>>    目的 查看手机设备上面的请求的,按照SquidMan+Wireshark代理抓包方法抓包之后,发现接口都是https请求的.看了一些资 ...

  8. HTTPS-使用Fiddler抓取HTTPS数据包原理

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  9. SpringBoot 优雅地对接口进行数据加解密

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华.如果小伙伴们觉得不错就一键三连吧~ 声明: 原作者:掘金:https://juejin.cn/user/3650034336532824 原文 ...

最新文章

  1. 最短路算法整理 1557 热浪
  2. 播放视频一会,出错并自动关闭
  3. 语言生日创意代码_你生日那天的宇宙什么样子知道?我全部给你吧!
  4. 数据结构与算法问题 AVL二叉平衡树
  5. SPOJ - SUBLEX 【后缀自动机】
  6. kohana php,[php框架]kohana中文译本.pdf
  7. Coherence Step by Step 第三篇 缓存(一) 介绍(翻译)
  8. 24.Linux-Nand Flash驱动(分析MTD层并制作NAND驱动)
  9. 【求助】如何从 Spark 的 DataFrame 中取出具体某一行?我自己的一些思考
  10. 用python实现网上书店
  11. mdb access2000 中文密码破解
  12. linux终端文件保存,Linux 终端中命令输出保存到文件中的方法
  13. 瑞星搜狐畅游合作 “云安全”首次嵌入网游客户端
  14. 编译原理 -- 词法分析程序设计
  15. Java实现开发短信验证码的完整教程
  16. Chrome插件开发--后台监控网页并自动刷新,点击页面元素
  17. MacBook Pro设置外接显示器竖屏显示,2k 字体小
  18. web端登录需要验证码-python获取验证码数值
  19. 北理工大学计算机专硕学硕,计算机2年制专硕越来越少,生活终于对我下手了吗?...
  20. 运放脉冲宽度放大_下一代Ka波段雷达系统应用脉冲行波管放大器(twta),工作频率为34至36GHz,峰值功率为1000瓦,占空比为10%。...

热门文章

  1. 搜索引擎Solr系列(二): Solr6.2.1 从MySql中导入数据
  2. 编译Android源码
  3. 深入理解JavaScript的变量作用域(转)
  4. 进入软件开发行业必须要掌握的基础知识(2005-5-18)
  5. Python DataFrame数据清洗后行索引不连续——reset_index
  6. 2021-11-18哈希值
  7. centos7修改系统语言为简体中文
  8. mysql 登录_Spring boot redis +mysql实现登录功能
  9. 服务器上有图片但是app不显示不出来,网络app图片显示不出来的
  10. SQLite中的高级SQL