您的位置:首页 > 移动开发 > 微信开发

利用fiddler 截获微信传输数据 (方便抓取公众号信息)

2017-05-18 16:29 489 查看
前言:本文章是搭配《批量获取微信公众号》一文,介于群里朋友很热情,我就趁着上班测完bug 来撰写该文章,那么读完本文,你会学习到什么呢?
什么是fiddler,他和其他抓包软件有什么区别,如何使用fiddler进行抓包
如何利用fiddler抓取https 的流量,如何安装证书
实战:利用fiddler配合按键精灵批量刷微信公众号的文章页(经测试语音也可以)

好的,小葵花妈妈咳咳 我们开课了。。。


0x01 初识fiddler

我不了解看我文章的读者是什么水平,反正我记得当年黑客X档案08还是09有一个上传漏洞 用到的就是抓包改包然后菜刀提交。。。当时惊呆了小伙伴,那么当时的抓包工具是什么呢,


Wireshark





 

对就是这货,比较强大,按照网络七层协议这个抓包能抓到数据链路层、网络层(network layer)、传输层或应用层(application layer)

比几年前见到的好用多了 还可以自带抓取电话啊 无线啊 想想就他喵的激动





既然这个屌玩儿这么强大我们为啥还用fiddler,额 就是因为太强大 所以会让我们看到一些很杂乱的东西 比如SYN三次握手什么的,UDP流量啊 QQ消息啊。。。。额就当我没说吧

那这个fiddler能干嘛 很简单 他的protocol 就能让他搞http协议 当然包含https什么的 我们这些弄爬虫的 通信的 和网页打交道 就这个就行了,没必要泡方便面还要法式厨房。





这个时候这个屌玩儿就可以http报文了

他如何实现的呢 他是修改你IE本地浏览器设置,





让所有本地HTTP流量经过他的代理相当于自己搭建了一台代理服务器,但是如果想要做https代理 那么我们还需要做一点小小的设置。


0x02 小小的设置

没错 正如你看到的很多fiddler教程一样,我也要开始教你怎么样设置了

也许你没有很多关于MITM的知识,不好意思 关我屁事 没学过还他喵的嘚瑟不去Google!!!!!!

啥?你说要给钱==好嘞,大爷我这就给您讲,记得好评哦

要抓取走 HTTPS 的 JS 内容,Fiddler 必须解密 HTTPS 流量。但是,浏览器将会检查数字证书,并发现会话遭到窃听。为了骗过浏览器,Fiddler 通过使用另一个数字证书重新加密 HTTPS 流量。Fiddler 被配置为解密 HTTPS 流量后,会自动生成一个名为 DO_NOT_TRUST_FiddlerRoot 的 CA 证书,并使用该 CA 颁发每个域名的 TLS 证书。若 DO_NOT_TRUST_FiddlerRoot 证书被列入浏览器或其他软件的信任 CA 名单内,则浏览器或其他软件就会认为
HTTPS 会话是可信任的、而不会再弹出“证书错误”警告。

好吧我承认我很懒上面一段是抄别人的,不过我先声明 在MITM环境下没有任何情况是安全的。(这不是量子通信还没实现不是喵)

你懂这个原理以后我们开始操刀设置fiddler

首先,打开 Fiddler,在菜单栏中依次选择 【Tools】->【Fiddler Options】->【HTTPS】,勾上如下图的选项。





勾上后,Fiddler 会提示你安装一个证书。安装完后点击上图中的 “Export Root..” 按钮,将证书下载到桌面。

又是抄别人的教程是吧,我的咋没有 export root certificate to desktop 对 我也是这样想的,为啥你们高级啊 我的从官网上最新版本都没有,我想说的是别急,听我慢慢道来。

如果这个时候我们不管他 本地是绝对不会安装证书的,到时候就会抱一个傻逼错误叫做


Fiddler “creation of the root certificate was not successful”

这个需要我们手动安装

如何安装呢

简单,在fiddler目录下有一个makecert.exe

你在这个建一个bat脚本 输入以下命令就好,返回成功就不要运行第二次了,运行第二次他妈的后面又有问题,你要删除多余证书,真他妈傻逼。

makecert.exe -r -ss my -n “CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com” -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2012

如果我们要监听手机app

怎么办 简单,我笔记本开一个热点,然后手机连接上热点,那么笔记本就和手机同处一个局域网,然后让手机访问你的电脑局域网IP

怎么看呢 ipconfig 谢谢

比如查到的ip为192.168.xx.38

那么你手机浏览器访问的就是192.168.xx.38:8888





(如果你的手机安卓没有设置手势密码什么的是不行的)

然后安装一个证书就可以愉快的被窃听https流量了


0x03 实战微信公众号的爬取

让我们用按键精灵打开微信公众号

我们可以看到成功抓取我们想要的数据



但是这时候我们会考虑如果我想把这些请求生成一个txt多好,我的Python或者java直接读取其中的key 那不是美了美了醉了醉了的感觉么,我也是这么想的,怎么做呢,简单

看到菜单了么 选择rules 那个 customs rules那个选项,如果先让你安装一个你就先安装 然后重启一下进入到如图所示的界面





保存Request

(代码已经修正空格,可以复制了,如果你发现有任何错误请及时与我联系 QQ:1027968932)

把下面代码贴在
OnBeforeRequest()
方法末尾

12345678910111213if (oSession.fullUrl.Contains("mp.weixin.qq.com")) {     var fso;     var file;     fso = new ActiveXObject("Scripting.FileSystemObject");     //文件保存路径,可自定义     file = fso.OpenTextFile("c:\\Sessions.txt",8 ,true, true);     file.writeLine("Request url: " + oSession.url);     file.writeLine("Request header:" + "\n" + oSession.oRequest.headers);     file.writeLine("Request body: " + oSession.GetRequestBodyAsString());     file.writeLine("\n");     file.close(); }
保存Response把下面代码贴在
OnBeforeResponse()
方法末尾

1

2

3

4

5

6

7

8

9

10

11

12

13

if
(oSession.fullUrl.Contains("mp.weixin.qq.com"))

{

    
oSession.utilDecodeResponse();//消除保存的请求可能存在乱码的情况

    
var
fso;

    
var
file;

    
fso
=
new
ActiveXObject("Scripting.FileSystemObject");

    
//文件保存路径,可自定义

    
file
=
fso.OpenTextFile("C:\\Response.txt",8
,true,
true);

    
file.writeLine("Response
code: "
+
oSession.responseCode);

    
file.writeLine("Response
body: "
+
oSession.GetResponseBodyAsString());

    
file.writeLine("\n");

    
file.close();

}

这里感谢Heiniu提供的方法,我已经捐赠一点心意作为答谢,这里也希望能够让更多人看到你的代码,在这里表示感谢。

为了避免有些傻吊以前没搞过什么函数式编程 把上面的代码粘贴错了 或者大括号搞丢了

我给你一个图

依葫芦画瓢总行了吧





以上,如果觉得我的创作对你有用,记得点击喜欢或者评论哦 打钱也是再好不过啦嘿嘿嘿~

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Fiddler