Ubuntu使用wireshark抓取https数据

简介

  • 一般来说这些抓包根据是无法直接看到https的真实数据;但也是有办法的。

  • 解决办法大概有以下几种

    • 中间人攻击(这一类工具有:Fiddler、Charles 和 whistle);
    • 设置web服务器使用RSA作为交换密钥算法;
    • 如果是用chrome,firefox,可以设置导出pre-master-secret log,然后wireshark设置pre-master-secret log路径,这样就可以解密了。
  • 本文会介绍使用第三种办法

安装wireshark

  • 直接使用命令
 sudo apt install wireshark
  • 默认情况下,tcpdump的权限是root:root,普通用户运行wireshark无法调用tcpdump,会报没有权限,导致无法抓包。为了让普通用户也可以使用wireshark
sudo chmod +x /usr/sbin/tcpdump

配置环境变量抓取所有https网站

  • 首先编辑~/.profile文件,为什么编辑它而不是~/.bashrc?因为~/.profile中的变量可以用于所有软件,而~/.bashrc里的变量只能用在Terminal中,即Ctrl + Alt + T打开的终端。而通常我们打开Chrome浏览器是直接点击图标,而不是在Terminal运行google-chrome命令。
  • vim ~/.profile加入
export SSLKEYLOGFILE=/home/zzq/temp/sslkey.log
  • 这个sslkey.log文件会在chrome运行时自己创建和写入,所以自己可以不创建它。

  • 注销当前用户,打开wiresharkchrome,wireshark选择哪个网卡就不说了,看自己的电脑环境。

  • 进入后把视图->解析名称 里面全部勾上;这样信息方便观察;菜单栏Edit——Preferences——Protocols——SSL(注意,不论是SSL还是TLS这里都是SSL,没有单独的TLS选项),在(Pre)-Master-Secretlog filename中选择刚才设置的变量值。
    在这里插入图片描述

  • 网站的话,我就以我的csdn主页为例;https://blog.csdn.net/baidu_19473529

  • 首先简单的设置下过滤规则ssl and ip.addr==47.95.47.253后面的ip地址是我ping blog.csdn.net出来的,csdn这种大网站肯定不是单服务,每个人每个地区可能ip都不一样。

  • 这样设置过后会软件显示都不一样了,有些会出现Decrypted SSL
    在这里插入图片描述

  • 我请求https://blog.csdn.net/baidu_19473529后得到这些信息; 这里有个请求/api/ArticleHighWords/list
    在这里插入图片描述

  • 验证下请求和返回数据对不对
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 结果是一致的,成功了。

手机https抓包

  • 如果是手机https抓包的话,可以使用Fiddler、Charles 和 whistle这类的根据做代理;也就是前面说的第一种方法。后面我实际操作后有时间再把详细步骤写下了。
发布了293 篇原创文章 · 获赞 174 · 访问量 106万+

猜你喜欢

转载自blog.csdn.net/baidu_19473529/article/details/104572671