帮朋友看一个税某局的加密算法。 传送门 (需要帐号登陆的 普通人没授权也看不了)
废话不多说直接抓包开干
这里可以看到一个headers中的加密参数 lzkqow23819 以及url路径里面的6eMrZlPH(这个有点像瑞数里面的)
还有就是cookies里面的这几个参数 可以验证出来 如果不带上的话 也通过不了校验
{
"lzkqow39189": "231a7c3a94914127bbd6e6a9bb11f507",
"DTSwUOYx7MiWN": "d18715cc80dba894f002f109cf084873a97923a06cdba92d37b021dd2a9942eb",
"refer": "etax.guangdong.chinatax.gov.cn",
"lzkqow38189": "1744359226393",
"MKls83gqduGS": "f8f40fd3eb3079003befc674315acd0af295cef9dbf20f9d5799148ef16a04eab3f6c5b587f98a69da784479f02eef51",
"c_time": "12"
}
好了 简单分析完毕 我们直接进入正题 先找下加密入口
这里会有个无限debugger的坑在里面 可以参考我以前的文章如何去跳过 传送门:
网络爬虫-绕过debugger反爬(Paused in debugger)
但是这里我们直接用firefox的内置功能即可 一把梭直接过 (实则偷懒- -!)
这里我们先定位到关键入口函数
不难发现是把第一次不通过的“dunm_data” 也就是04开头的这一大串字符串拿去跟一系列的环境/url/请求报文等混合在一起做了混淆和校验
我们再往上层回溯过去 可以看到window中一个方法很像加密入口
然后我们就补环境大法即可 jsdom一把朔搞起来 这里贴部分需要校验的环境(很多坑要踩 比如鼠标移动轨迹 变量检测 console检测等)
window = global;
document = {
};
var _console = console;
Error = function (){};
Navigator = function (){};
screen = {
availHeight: 1032,
availLeft: 0,
availTop: 0,
availWidth: 1920,
colorDepth: 24,
height: 1080,
isExtended: false,
onchange: null,
orientation: {
ScreenOrientation: { angle: 0, type: 'landscape-primary', onchange: null }
},
pixelDepth: 24,
width: 1920
}
Window.toString = function toString(){
return 'function Window() { [native code] }'
}
Window.toString.toString = function toString(){
return 'function toString() { [native code] }'
}
window.setTimeout = function setTimeout() {}
window.onerror = {}
window.localStorage = {
getItem :function getItem(){
return null
}
}
window.sessionStorage = {}
window.indexedDB = {}
window.chrome = {}