说起抓包,很多人以为就是用个工具,简简单单地抓一下就可以了。
昨天在面试一个安卓逆向,直接告诉我【抓包没有技术含量】。
在这里,我必须发一个教程,解析一下抓包神器——Fiddler。
Fiddler仅仅是一个抓包工具?不好意思,Fiddler用得好,真的可以为所欲为。

Fiddler的作者

  • Fiddler 的作者是 Eric Lawrence 是个大师级的人物, 目前在微软总部西雅图工作。 他的博客是: http://www.ericlawrence.com/Eric/
  • 博客中能看到他的简历,以及一些生活照.

Fiddler的介绍

  • Fiddler是强大的抓包工具,它的原理是以web代{过}{滤}理服务器的形式进行工作的,使用的代{过}{滤}理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。
  • 代{过}{滤}理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代{过}{滤}理服务器会将数据包进行拦截,代{过}{滤}理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代{过}{滤}理服务器也会将数据拦截,再返回给客户端。
  • Fiddler可以抓取支持http代{过}{滤}理的任意程序的数据包,如果要抓取https会话,要先安装证书。


这两点,希望大家牢记。接下来,给大家介绍Fiddler超级强大的地方之一——Fiddler Script.
论坛有很多Fiddler的使用教程,这里就不多说了。但是,却没有一个人说到最强大的脚本功能!

Fiddler 包含了一个脚本文件可以自动修改Http Request 和Response.这样我们就不需要手动地下"断点"去修改了,实际上它是一个脚本文件CustomRules.js 
位于: C:\Documents and Settings\[your user]\My Documents\Fiddler2\Scripts\CustomRules.js 下,你也可以在Fiddler 中打开CustomRules.js 文件,  启动Fiddler, 点击菜单Rules->Customize Rules...
Fiddler Script 的官方帮助文档必须认真阅读, 地址是:http://www.fiddler2.com/Fiddler/dev/ScriptSamples.asp

小常识:Fiddler Script 是用JScript.NET语言写的

那么Fiddler Script到底有什么用?我这里来列举一些大家肯定遇到过的问题:

场景1:一个付费验证,是否付费会返回一个json。里面有一个时间戳和一个false。如果时间戳和客户端不一致,则为破解失败。
那么你一定会这么想,有没有一个功能,可以只替换json里面部分参数,然后返回给客户端,而不是全部写死呢?于是,我们需要使用到script了!代码如下:如一个json是这个内容,baidu.com,返回了一个【name:吾爱破解,付费:false】

if (oSession.fullUrl.Contains("http://www.baidu.com"))
         {

// 获取Response Body、Request Body中JSON字符串,转换为可编辑的JSONObject变量
             var responseStringOriginal =  oSession.GetResponseBodyAsString();
             var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);
             var requestStringOriginal=oSession.GetRequestBodyAsString();
             var requestJSON = Fiddler.WebFormats.JSON.JsonDecode(requestStringOriginal);
             ){ //请求参数中,若type为1,对返回值做如下修改

responseJSON.JSONObject['付费'] = "true";
                 // 重新设置Response Body
                 var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);
                 oSession.utilSetResponseBody(responseStringDestinal);
             }
         }
}

通过以上代码,即可每次在baidu返回数据时,自动将付费改为true,从而达到了破解的效果。

场景2:我想要修改request的Body里面的部分参数,每次下完断点,修改完再提交,总会网络超时或者APP超时。这该怎么办?难道只能靠手速?

if(oSession.uriContains("http://www.baidu.com"))
    {
        var strBody=oSession.GetRequestBodyAsString();// 获取Request 中的body字符串
        strBody=strBody.replace("false","true");// 用正则表达式或者replace方法去修改string,将false改为true
        FiddlerObject.alert(strBody);// 弹个对话框检查下修改后的body 
        oSession.utilSetRequestBody(strBody);// 将修改后的body,重新写回Request中
    }

场景3:我想要修改cookie,改成一个付费过的cookie,但是需要实时生成,不能靠手速。这该怎么办?

if (oSession.HostnameIs('www.baidu.com') && oSession.uriContains('pagewithCookie') && oSession.oRequest.headers.Contains("Cookie")) 
     { 
var sCookie = oSession.oRequest["Cookie"]; 
     //  用replace方法或者正则表达式的方法去操作cookie的string
     sCookie = sCookie.Replace("付费=false", "付费=true"); 
     oSession.oRequest["Cookie"] = sCookie;

场景4:我想要知道他到底有没有请求具体哪个网址,用查找速度太慢了。过滤也很慢。

if (oSession.HostnameIs("www.baidu.com")) {
            oSession["ui-color"] = "red";
        }

场景5:我想要自动保存某个接口的数据到本地,怎么才能实现?

if (oSession.fullUrl.Contains("www.baidu.com/playurl/v1/") ){  
                        oSession.utilDecodeResponse();//消除保存的请求可能存在乱码的情况
                        var fso;
                        var file;
                        fso = new ActiveXObject("Scripting.FileSystemObject");
                        //文件保存路径,可自定义
                        file = fso.OpenTextFile("D:\\Sessions.txt",8 ,true, true);
                        //file.writeLine("Response code: " + oSession.responseCode);
                        file.writeLine("Response body: " + oSession.GetResponseBodyAsString());
                        file.writeLine("\n");
                        file.close();
                }

——————————————————————————————————————————————————————————————————————
以上就是Fiddler script经常使用到的功能,免费奉献给大家。直接复制即可使用。

Fiddler的脚本介绍到这里,那么,说到底Fiddler还是只能抓包啊,即使基于xpoesd能抓到https的包,还是发现有很多包抓不到啊!!!等等,本文还没完呢!
(接下来的内容,公布过后,会涉及到技术滥用,因此,仅公布原理。)
首先来讲https,也就是安卓APP证书这一款,目前论坛上已经有不少的朋友发了相关的一些程序,大家可以去下载。
如:https://www.52pojie.cn/thread-854170-1-1.html

但是,我个人比较倾向于just trust me这个插件,这是最全能的。just trust me是hook了安卓框架验证机制,更加棒~

————————————————————————————————————————————————————————
首先,大家抓包会遇到一个问题,为什么即使绕过了APP证书验证,为什么还是抓不到包!难道不是http协议?
其实并不是,APP大多数还是走的http协议,那为什么抓不到优酷的视频?抓不到关键的访问——原因在于此,代{过}{滤}理!

目前有非常多的APP,都为了防止被抓包,不仅仅是只用了https这么简单。而使用fiddler抓不到包,本质原因在于wifi代{过}{滤}理!很多APP会检测你是否用了wifi代{过}{滤}理,如果设置了,则APP无法正常使用。这样就会从根本上杜绝被抓包

那么,我们要怎么做才能防止这种情况的发生呢?
比较笨的一种办法依旧是使用xposed上的just trust me,依旧hook相关函数,即可破解该策略。

—————————————————————————————————————————————————————————
等等,我发现用了trust me过后,还是抓不到包,这到底是怎么回事!!!
非常简单,他们就是利用了本地服务器中转,这样的话Fiddler是抓不了包的。比如著名APP:麻花影视、电视家

那么,有没有办法能抓到这种操作的包呢?当然是有的。
这边只能透露几点,不能正大光明地公布,否则大量非法分子就可以破解非常多的APP了。

提示:Fiddler的本质其实就是代{过}{滤}理服务器,那么,如果是代{过}{滤}理服务器,所有的请求是不是都会走这台服务器呢?那是肯定的。

——————————————————————————————————————————————————————————
最后,抓包除了破解APP以外,还有什么用?
第一:抓接口,可以将所有的视频点播类APP都抓下来!
如麻花视频:
————————

GET http://api.acgplusplus.com/api/a ... &time=1547183436020 HTTP/1.1

Content-Type: application/json

Accept: application/json

accessToken: 936b8872c4f81b6537eaa80f4e2e78c7807cebbcb02548d8d4da1e55c61c6509

X-Client-NonceStr: FbWu9jFnpG

X-Client-IP: 127.0.0.1

X-Client-TimeStamp: 1543592259810

X-Client-Version: 1.1.1

X-Client-Sign: 61274de99728b3981041d657bec4528b416658cd651110f9cf950dd3fbc0b15f

X-Auth-Token: mb_token:25361603:1211f5511483be1def9af655c10ede12

X-Client-Token:

Host: api.acgplusplus.com

Connection: Keep-Alive

User-Agent: okhttp/3.10.0

Accept-Encoding: identity

——————————————————————————————————

这个接口大家可以用用,永不失效的接口!返回出来的地址就是这样。(大家可以直接用,哈哈,本来麻花视频也是盗版的)

再比如优酷的播放接口:

GET https://ups.youku.com/ups/get.json?ckey=不公布,免得被盗用
User-Agent: Youku;7.5.0;Android;6.0.1;MuMu
Host: ups.youku.com
Connection: Keep-Alive
Accept-Encoding: gzip, deflate

这些接口,全都是永久有效的!

拥有抓包技术,你就可以自己制作任何的视频APP,调用第三方的接口即可!!!

另外楼主尝试过支付宝等相关APP,依旧能抓到部分的包。所以——
抱歉,抓包抓得好真的可以为所欲为。

[转载]Fiddler 解析!抓包抓得好真的可以为所欲为 [一]的更多相关文章

  1. 使用Fiddler抓包抓取不了数据包的问题

    一:(我)抓包遇到的问题. ①:抓包一直出现这个问题 解决办法:  如果你遇到上面的问题,就可能是证书的问题(我的本地证书是用系统生成证书的一个软件生成的个人证书,所以出现了问题,我抓的所有数据都出现 ...

  2. 抓包 抓nodejs的包 抓浏览器的包 抓手机的包

    应用场景: 确认接口是能用的,但自己使用时就是不行,参数有没有传正确?格式对不对?傻傻分不清. 抓包工具:这里演示 charles , 常用的还有 Fiddler, HttpWatch, WireSh ...

  3. day2_抓包-抓包工具Charles

    1.Charles功能简单描述 1)定位问题,前端的.后端的问题 2)发出去的请求,请求头.请求体,返回的数据 3)拦截请求,修改请求 2.Charles抓包(Android手机) 1.要求手机得和你 ...

  4. 天天记录 - Android抓包 - 抓取HTTP,TCP协议数据

    需要两个工具tcpdump和Wireshark,  tcpdump的使用需要root权限     一  tcpdump   1. 下载 tcpdump首页  http://www.tcpdump.or ...

  5. tcpdump 为何抓包 抓到本机IP 都是内网IP

    接收端 22:49:01.729351 IP 192.168.0.3.21918 > ***.**.**.**.44498 22:49:01.727980 IP ***.**.**.**.444 ...

  6. fiddler电脑抓包和手机抓包

    概述 以前听别人说抓包抓包的,听起来很神秘高大上的样子,想入门又不知道从何学起.今天偶然在工作中遇到了以下2个需求: 改线上的代码,特别是PC端js代码. 写了一个移动端页面,由于跨域,改了host地 ...

  7. pcapng文件的python解析实例以及抓包补遗

    为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生.关于它的介绍详见<PCAP Next Generation Dump File Format> 当前的w ...

  8. Fiddler抓包工具-全网最全教程,没有之一

    初识Fiddler fiddler,译为骗子 是位于客户端.服务器端的HTTP代理,是Web调试的利器. 是c#编写的程序 Fiddler主要功能: 监控http.https流量 查看.分析请求内容细 ...

  9. Fiddler抓包(以谷歌浏览器、安卓手机为例)

    fiddler抓包流程与whistle相同,所以本章内容会相对简洁.如果需要详细说明,可参考whistle抓包. 这里以谷歌浏览器.安卓手机为例. 1.fiddler安装 下载安装包,默认安装. 2. ...

随机推荐

  1. python-css基础知识

    CSS 是指层叠样式表 (Cascading Style Sheets),样式定义如何显示html,用于对页面进行美化. css样式的存放位置有三种: 第一种,直接写在html标签里: <div ...

  2. 关于最新create-react-app使用react-app-rewired2.x添加webpack配置

    使用过create-react-app(以下简称cra)的朋友都知道,这是react官方的一款脚手架工具,内部集成了babel,webpack,webpack-dev-server等等. 以前我们要在 ...

  3. Google Analytics电子商务篇(Universal版)

    Google Analytics是一款用于统计分析网站流量.浏览行为,可用于衡量用户与您网站的互动情况的全新方式.最近刚接触不久,发现其功能真的十分强大,记录下电子商务配置方法.(新手,老鸟勿喷) G ...

  4. python3爬虫_环境安装

    一.环境安装 1.python3安装 官网:https://www.python.org/downloads/ 64 位系统可以下载 Windows x86-64 executable install ...

  5. nginx配置文件详解----第一篇【访问与错误日志】

    error_log错误日志    access_log访问日志 log_format指令 语法: log_format name string …;默认值: log_format combined “ ...

  6. HDFS的上传与下载(put & get)

    最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...

  7. FastDFS 与 Nginx 实现分布式图片服务器

    FastDFS 与 Nginx 实现分布式图片服务器 本人的 Ubuntu18.04 用户名为 jj 点我下载所有所需的压缩包文件 一.FastDFS安装 1.安装 fastdfs 依赖包 ① 解压 ...

  8. c# .net core 设置缓存

    1.开启ResponseCaching的缓存(ResponseCaching相当于老版本的OutPutCache): 在Startup.cs文件中设置: public void ConfigureSe ...

  9. 运用python发邮件

    1.网上有许多发送邮件的代码,运行了几次都不成功(使用python3),转用Python2之后,发送成功 2.代码样例: 参考教程:http://www.runoob.com/python/pytho ...

  10. baidu-map

    1 var map = new BMap.Map("wcp"); // 创建Map实例 2 map.centerAndZoom(new BMap.Point(9.123469591 ...