记录一下用FiddlerWebSocket收发的数据进行抓包分析和篡改数据,只找到这么一个方法,能用就行吧。
时间:2019-3-29
环境: win7 + Fiddler 5.0

Fiddler抓取WebSocket数据

Fiddler中双击WebSocket Session即可查看此连接收发的数据。可惜此选项卡内没有带发送数据的功能(一个输入框(HEX文本) + 一个按钮),要是有就基本完美了。

开启https支持

如果需要抓取httpswss请求,需要在Fiddler菜单Tools > Options > HTTPS 中开启HTTPS支持。在Actions菜单中,设置电脑系统信任Fiddler的根证书。

手机简单支持

如果需要抓取手机中的数据,需要在Tools > Options > Connections中设置允许客户端连接,然后在手机wifi连接中设置使用电脑的ipFiddler监听的端口作为代理。

然后手机浏览器访问电脑ip + 端口 进入Fiddler页面下载根证书,并信任(安装)此证书。

完成以上操作才有可能监控httpswss请求,大部分是能监控的。

修改WebSocket数据

Fiddler界面中并未找到修改WebSocket数据的地方,搜索也没找到多少直接的资料信息,不过写怎么打印WebSocket数据日志的倒蛮多(Fiddler 4.5开始已没有这个必要了)。另外看到一篇利用fiddler core api 拦截修改 websocket 数据的。两个综合一下就大功告成了。

Fiddler菜单Rules > Customize Rules中实现Handlers类的OnWebSocketMessage方法,此方法可以得到WebSocket收发的数据,而且可以修改。另:Fildder主界面中FildderScript也可以直接修改脚本代码。

脚本语法

Fiddler采用的JScript.Net语法,这个语法不熟?没关系,我也不熟,但对JavaScriptC#任意一个熟就行了。

Classic ASP 用户可能对JScript和它的好基友VBScript比较熟,这两个除了写ASP外,Windows上的vbs js脚本代码也是主力使用方向。

简单点,把JScript当做IE 6来写就ojbk了,绝对的原味,反正下面的例子里面js代码居多。参考文章结尾的测试代码,不要在意那些拼音或者缩写的奇丑变量名。

Echo测试结果

测试完整代码在文章结尾。

发送echo测试数据test edit:ddd,结果截图:

Log中已打印我们的修改日志信息,可以看到echo响应中完全包含了被修改后的发送数据,我特意用不同颜色标记了一下。


Fiddler自己的WebSocket记录信息,它记录的为我们修改之后的。

WebSocket发送数据

没找到方法,不知道怎么用Fiddler来发送WebSocket数据,参考第一节中的遗憾。

附:测试代码

class Handlers
{
//实现此方法,拦截处理数据
static function OnWebSocketMessage(oMsg: WebSocketMessage) {
var arr=oMsg.PayloadAsBytes();
var bs=Utilities.ByteArrayToString(arr);
var txt=bytesToViewText(arr);//此文本为英文,可读的文本信息,不可读的乱码、中文都过滤掉了
var newTxt=""; //假设的修改场景,只要收发的数据中包含了 test edit: 就干它
var edit=false;
if(txt.indexOf("test edit:")+1){
var nbs=bs;
var m1=/(test edit:)(.*)/.exec(txt)||[];
nbs=nbs.Replace(strToHex(m1[0]||""),strToHex(m1[1]+(oMsg.IsOutbound?"send":"onmessage")+" change:"+m1[2])); edit=true;
oMsg.SetPayload(hexToBytes(nbs)); newTxt=bytesToViewText(oMsg.PayloadAsBytes());
} //并未直接提供获取SessionID的方法,应该是没有公开
var all=oMsg.ToString();
var m1=/#(\d+)/.exec(all)||[];
var sessionID=m1[1]||-1; FiddlerApplication.Log.LogString(
sessionID+":["+oMsg.ID+"]"
+"["+(oMsg.IsOutbound?"出":"入")+"]"
+"["+(edit?"改:"+newTxt:"")+"]"
+txt+"\n");
} //以下为一些功能函数
static function bytesToViewText(arr:byte[]){
var s="";
for(var i=0;i<arr.length;i++){
if(arr[i]>=32 && arr[i]<=126){
s+=String.fromCharCode(arr[i]);
}
}
return s;
}
static function strToHex(str:String){
var byts=new byte[str.Length];
for(var i=0;i<str.Length;i++){
byts[i]=(byte)(str.charCodeAt(i));
}
return Utilities.ByteArrayToString(byts);
}
static function hexToBytes(hexString:String)
{
hexString = hexString.Replace(" ", "");
var length = hexString.Length / 2;
var hexChars = hexString.ToCharArray();
var d = new byte[length];
for (var i = 0; i < length; i++)
{
var pos = i * 2;
d[i] = (byte)(charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}
static function charToByte(c:String)
{
return "0123456789ABCDEF".indexOf(c);
} .......

只找到这么一个方法对WebSocket抓包分析和篡改数据,比较土,完.

from:https://www.cnblogs.com/xiangyuecn/p/10618982.html

【转】Fiddler抓包和修改WebSocket数据,支持wss的更多相关文章

  1. Fiddler抓包和修改WebSocket数据,支持wss

    记录一下用Fiddler对WebSocket收发的数据进行抓包分析和篡改数据,只找到这么一个方法,能用就行吧. 时间:2019-3-29 环境: win7 + Fiddler 5.0 Fiddler抓 ...

  2. Fiddler抓包12-AutoResponder返回本地数据(mock)

    前言 mock可以说是面试必问的话题的,我第一次接触mock的时候也是一脸懵逼.虽然fiddler工具用了很久,里面的打断点,设置自动返回数据功能都用过. mock说的通俗一点就是模拟返回数据,只是面 ...

  3. 利用fiddler core api 拦截修改 websocket 数据

    一般的中间人攻击基本都是拦截修改普通的http协议里面的内容,而对于怎么拦截修改websocket协议传输的内容好像都没有多少介绍. talk is cheap show me the code us ...

  4. fiddler抓包-4-简单对数据进行mock

    前言 Fiddler中有一个 AutoRespinder 选项,我们可以用它作为mock数据,可以修改它的参数等等.所有信息的返回,与我们断点类似,但这里也可以mock状态码直接是404或者跳转至另一 ...

  5. 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

    1 引言 在编写网络爬虫时,第一步(也是极为关键一步)就是对网络的请求(request)和回复(response)进行分析,寻找其中的规律,然后才能通过网络爬虫进行模拟.浏览器大多也自带有调试工具可以 ...

  6. fiddler抓包App数据

    在做手机或移动端APP的接口测试时,需要从开发人员那里获取接口文档,接口文档应该包括完整的功能接口.接口请求方式.接口请求URL.接口请求参数.接口返回参数.如果当前项目没有接口文档,则可以使用fid ...

  7. Python3,x:Fiddler抓包工具如何进行手机APP的数据爬取

    示例一:苹果手机抓取教程 https://www.cnblogs.com/lizm166/p/8693085.html https://blog.csdn.net/cui130/article/det ...

  8. Fiddler 抓包工具总结

    阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). AutoResponder 允许拦截制 ...

  9. Python+Requests接口测试教程(1):Fiddler抓包工具

    本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测 ...

随机推荐

  1. 钻石diamaund外语

    Whenever I fail as a father or husband... a toy and a diamond always works. I never worry about diet ...

  2. pip笔记(译)

    从PyPI中安装包 >>> pip install SomePackage [...] Successfully installed SomePackage 从PyPI或其他地方安装 ...

  3. CentOS - Eclipse安装Shelled

    一,下载Shelled: https://sourceforge.net/projects/shelled/ 二,打开Eclipse,以离线方式安装: Help->Install New Sof ...

  4. unity shader入门(三)逐像素光照,Blinn-Phong模型

    与上篇逐顶点光照很像,只是改为在片元着色器中计算光照,下为逐像素光照shader Shader "study/Chapter6/PixelShader"{ Properties{ ...

  5. ubuntu 下 VNC Viewer 通过网线连接树莓派的网络设置

    1 本机环境 Ubuntu 19.10 Raspberry 3B+ (Raspbian.开启了 vnc 服务) 2 Ubuntu 网络设置 1. Identity 下选择 Mac Address(如: ...

  6. 关于base64编码Encode和Decode编码的几种方式

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  7. TPA测试项目管理系统-测试用例管理

            Test Project Administrator(简称TPA)是经纬恒润自主研发的一款专业的测试项目管理工具,目前已广泛的应用于国内二十余个整车厂和零部件供应商.它可以管理测试过程 ...

  8. scrapy框架爬取智联招聘网站上深圳地区python岗位信息。

    爬取字段,公司名称,职位名称,公司详情的链接,薪资待遇,要求的工作经验年限 1,items中定义爬取字段 import scrapy class ZhilianzhaopinItem(scrapy.I ...

  9. Supermarket(贪心/并查集)

    题目链接 原创的博客 题意: 超市里有N个商品. 第i个商品必须在保质期(第di天)之前卖掉, 若卖掉可让超市获得pi的利润. 每天只能卖一个商品. 现在你要让超市获得最大的利润. n , p[i], ...

  10. Spring Cloud 微服务:Eureka+Zuul+Ribbon+Hystrix+SpringConfig实现流程图

    相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新 ...