FIddler : CustomRules.js脚本解析get请求被加密的参数
来源:互联网 发布:数据挖掘 常用模型 编辑:程序博客网 时间:2024/05/18 22:17
背景:app上报计数时,上报的参数加密了。fiddler抓包只能看到加密后的文件。每次都要从客户端log里才能看到报数。为了解决这个问题,在fiddler脚本文件中对计数请求的参数进行解密,这样,fiddler抓包就能看到明文的log了。
编写脚本前提:
1、安装fiddler;
2、安装fiddler的fiddler script插件(fiddlersyntaxsetup.exe);
http://www.telerik.com/docs/default-source/fiddler/addons/fiddlersyntaxsetup.exe
注:这个是有语法提示的,并且有语法错误时保存时会报错,对编写fiddler脚本有很大的帮助。
编写脚本:
在CustomRules.js文件的class中添加解码函数。放在OnBeforeRequest方法外面。一定注意加“public static”。
public static function decodeDT(str){ var decrypt_str=' !_#$%&\'()*+,-.ABCDEFGHIJKLMNOP?@/0123456789:;<=>QRSTUVWXYZ[\\]^"`nopqrstuvwxyzabcdefghijklm{|}~'; var new_str = ""; for(var i=0; i<str.length; i++) { var ch = str[i]; if(ch >= 32 && ch <= 126){ new_str += decrypt_str[int(ch)-32]; } else{ new_str += ch; } } return new_str; }
- 在OnBeforeRequest方法中处理url请求:
- 获取url的路径和参数
- 拆分路径和参数
- 获取单个参数
- 单个参数值解密
- 拼接参数和请求路径
- 替换url的请求参数和路径
代码如下:
//dt报数参数解码 if(oSession.uriContains("xxx.com")){ oSession["ui-color"] = "blue"; var qstr = oSession.PathAndQuery.Split('?'); var qpath = qstr[0]; var qarg = qstr[1]; //FiddlerObject.alert(qstr[0]); //FiddlerObject.alert(qstr[1]); var args = qarg.Split('&'); var enc = args[0].Split('=')[1]; var appkey = args[1].Split('=')[1]; var ltype = args[2].Split('=')[1]; var log = args[3].Split('=')[1]; //FiddlerObject.alert(enc); //FiddlerObject.alert(appkey); //FiddlerObject.alert(ltype); //FiddlerObject.alert(log); ltype = decodeDT(ltype); log = decodeDT(log); log = log.Replace("%D1", ","); log = log.Replace("%I0", "{"); log = log.Replace("%DD", "_"); log = log.Replace("%I2", "}"); log = log.Replace("%DB", " "); log = log.Replace("%D4", "A"); log = log.Replace("%E3", "P"); //FiddlerObject.alert(ltype); //FiddlerObject.alert(log); args[0] = 'enc=' + enc; args[1] = 'appkey=' + appkey; args[2] = 'ltype=' + ltype; args[3] = 'log=' + log; qarg = args.join('&'); //FiddlerObject.alert(qarg); qstr = [qpath,qarg].join('?'); //FiddlerObject.alert(qstr); oSession.PathAndQuery = qstr; }
编写过程中遇到的问题:
自定义函数放在哪里?
放在OnBeforeRequest方法外面。一定注意加“public static”。否则会报错。获取字符的ascii码值不能直接用js的charCodeAt()去获取。
可能因为Fiddler本身是C#写的:js中字符获取ascii码值直接取int()就行,不需要单独获取;函数定义时,要加public static;js中对象获取方法和属性是用的是C#的System对象。
0 0
- FIddler : CustomRules.js脚本解析get请求被加密的参数
- 修改fiddler中CustomRules.js的Request或Response
- Fiddler模拟post和get请求,分析请求的参数、请求的数据
- 获取页面请求参数的JS脚本
- Js脚本加密思路解析
- 解析get参数被编码的参数
- js获取get请求后面的参数列表
- Netty4 HTTP请求参数解析(GET, POST)
- Get 请求中文参数乱码解析
- Netty4 HTTP请求参数解析(GET, POST)
- js解析GET参数解析一次性解决
- Fiddler构造HTTP-GET请求
- js脚本对url参数加密
- GET请求和POST请求的参数
- Fiddler模拟请求GET/POST请求
- 抓包工具Fiddler的使用教程(十四):Fiddler模拟get请求
- 基于dvwa的sql注入,使用fiddler修改请求参数
- 让fiddler自动解析出请求的hostip配置方法
- 第七章
- android集成微信支付
- 基本乐理知识
- linux下使用UDP实现简易的多人聊天室
- 4725: [POI2017]Reprezentacje ró?nicowe
- FIddler : CustomRules.js脚本解析get请求被加密的参数
- Spring Aop 日志管理
- ACM-二分贪心U-21
- 数据结构之一元多项式相乘
- CentOS 6.5 Git服务器搭建
- LibGDX
- 苍木之凭
- scala broadcast
- YV12 and NV12