上篇文章,我们已经找到了加密的地方,关键代码是这样的:

_$Ww = _$Tk["enc"]["Utf8"]["parse"](window['_$pr']["toString"]()), _$Wu = _$Tk["AES"]["encrypt"](_$Ww, window["_$qF"], {'mode': _$Tk["mode"]["ECB"],'padding': _$Tk["pad"]["Pkcs7"]
}),
window['_$ss'] = _$Wu["toString"]();

现在各个击破,抠出加密的函数。

这是一个很明显的AES加密,我们来看第一个参数 _$Ww 它的结果就是第一行代码,也很简单,找到 window['_$pr'] 赋值的地方即可。

全局搜索 _$pr,发现有七处地方,分别打上断点:

刷新页面,停到断点处:

这是它初始化的地方,继续执行,来到这里:

在控制台,分别输入实参和结果:

这里特别要注意,它前四次的加密在同一个地方,但是第五次换到了另外一处,因此要改变变量名及其调用。

这个时候来看加密参数和cookie值,会惊奇的发现:

1. 加密参数 m 的值,就是最后一次加密的时间戳

2.cookie字段m的值,就是最后一次函数调用的结果

现在第一个参数_$Ww 以加密的位置已经找到了,来看第二个参数 window["_$qF"],全局搜索 _$qF 定位到这里:

代码很简单,继续全局搜索 _$is,定位到了这里。

原来就是最后一个时间戳进行base64编码,取前16位作为AES的key值:

_$8K['_$qF'] = CryptoJS['enc']['Utf8'][_$UH[255]](_$8K['btoa'](_$8K['_$is']).slice(0, 16))

现在就剩 f 参数不知道在哪里,看起来也像个时间戳。

下面就来找找它在哪里生成的,如下图所示:

点击红色箭头处的 X,然后再点击Initiator这一列,数据接口的这一行:

有个 anonymous,跟进去看看:

注意标黄的这一行,点击 {} 进行格式化,往下翻,知道f赋值的地方:

原来是 window.$_zw[23],注意,是个全局变量,控制台输入,看看有值没:

这么一看,确实是一模一样,那 f 的值就是 window.$_zw[23]了,看看 $_zw 在哪些地方进行了赋值:

还真不少,那怎么知道第23个元素是哪个变量呢?控制台输入 $_zw 看看它的元素分别是啥:

以 "明说了,这个数组是指纹" 这句话,往后数相同的位移,得到了

$_aiding.$_zw.push($_t1);

$_t1 就是第23个元素,来看看它赋值的地方:

只有这一句,至此,所有的加密参数都已全部知道出来,剩下的就是抠代码了。

代码怎么抠,我就不讲了。很简单的东西,不过这里有个天坑。我们在追 AES加密函数的第一个参数的时候,代码是这样的:

_$Wa = _$f$();
_$Is[_$Fe] = "m=" + b(_$Wa) + "; path=/";
_$8K['_$pr']['push'](b(_$Wa));
delete _$8K['_$Jy'];
delete _$8K['_$tT'];
_$8K['_$Jy'] = _$TT();
_$8K['_$tT'] = _$TT() - _$f$();

全局变量 _$Jy' 和 _$tT 的变化会引起b函数结果的变化,因此这里要特别注意。

还有一个坑就是 window['_$6_'] 也是变化的。具体怎么变,请读者自行发现,这里不做多的讲解。

下面是福利时间,这是本人的星球,主要讲解JavaScript代码的反混淆,趁着双11,也来搞个半折优惠。

JS逆向:猿人学爬虫比赛第五题详细题解(下)相关推荐

  1. JS逆向:猿人学爬虫比赛第九题详细题解

    实战地址 http://match.yuanrenxue.com/match/9 抓包分析 地址栏输入 地址,按下F12并回车,浏览器停在这里: 不用理会它,点击下图所示的按钮: 按下F8,让浏览器继 ...

  2. Js逆向 | 猿人学爬虫攻防大赛 | 第一题: js 混淆 - 源码乱码(多图预警!!手把手教学!!)

    地址: 第一题地址 题目: 抓取所有(5页)机票的价格,并计算所有机票价格的平均值,填入答案. 初探: 进入网站,惯例先开F12康康 这里被 debugger 卡住了: 你可以 选中行号点右键点 Ed ...

  3. [007]爬虫系列 | 猿人学爬虫攻防大赛 | 第二题: js 混淆 - 动态Cookie

    一.题目 链接: <猿人学爬虫攻防大赛 | 第二题: js 混淆 - 动态Cookie> 二.分析 按照以往习惯,我们先按F12打开控制台,Network抓包,勾选preserve log ...

  4. php-5.3.3.tat.gz,[JS逆向 JS混淆] 猿人学 爬虫攻防赛 第五题

    [JavaScript] 纯文本查看 复制代码var _$8K = {}; var _$ev = [], _$Uy = String.fromCharCode; function _$HY(_$5X) ...

  5. webpack打包后引用cdn的js_JS逆向:Webpack打包后的代码怎么搞?猿人学爬虫比赛第十六题详细题解...

    实战地址 http://match.yuanrenxue.com/match/16 抓包分析 地址栏输入 地址,按下F12并回车,发现数据在这里: 查看cookie,无加密相关的字段.请求的接口倒是有 ...

  6. AST反混淆实战:猿人学爬虫比赛第二题详细题解

    缘起 应星友要求,写下此文,哎,有钱能使鬼推磨. 实战地址: http://match.yuanrenxue.com/match/2 抓包分析 由于谷歌浏览器某些请求不会显示,建议使用火狐浏览器来抓包 ...

  7. 《封号码罗》关于js逆向猿人学第一题m值的获取[纯补环境](二十四)

    网上有很多资料,包括视频都讲解了m值的生成方式,但是我自己总是看过之后,有很多疑惑,所以我自己再总结一遍. 抓包看看请求 m值得生成位置 用AST简单解混淆一下,源码就是整个混淆的js复制到本地文件 ...

  8. [007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(中)

    一.备注 在阅读此文章前,请先阅读前一篇<[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(上)> 二.找参数来源(二) 在前一篇文章中,我们找出了Cookie ...

  9. [007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(下)

    一.备注 在阅读此文章前,请先阅读前两篇 <[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(上)> <[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第 ...

最新文章

  1. 将类别加入到别人的名称空间内
  2. 解决ThinkPHP关闭调试模式时报错的问题汇总
  3. 小程序的前端坑(持续更新)
  4. python写错了怎么更改-Python中如何修改文件?Python文件修改方法
  5. Redis Monitor命令 - 实时打印出Redis服务器接收到的命令,调试用
  6. android选择多个文件_一分钟合并多个Excel、PDF文件,3种方法任你选择,好用到没朋友...
  7. php redis type,redis中的几种常用基础对象介绍
  8. lisp块改色_关于CAD制图的技巧:篇九,快速修改颜色。
  9. 软件安全性与软件可靠性
  10. Swiper.js实现无缝滚动
  11. 【IOS】《捕鱼达人》的简单实现(一)
  12. Dynamics 365——设置视图可编辑
  13. 静心戒躁--半个学期来的小结
  14. 笔记本计算机在桌面显示器,解决笔记本电脑屏幕出现条纹的五大方法
  15. getchar,putchar与gets,puts的区别
  16. HDU 6105 Gameia 树上博弈(思路题)(内附官方题解)
  17. 【论文阅读】Paraformer工业级非自回归端到端语音识别模型
  18. git 命令使用(持续更新)
  19. “C9、国防七子、两电一邮、两财一贸”...,你知道几个大学的称号?
  20. 实战:使用yolov3完成肺结节检测(Luna16数据集)及肺实质分割

热门文章

  1. 由浪潮大型机M13说开去
  2. html5 td上下居中显示,css表格垂直居中怎么设置?
  3. python花萼长度表_读取iris数据集中的花萼长度数据(已保存为csv格式),并对其进行排序、去重,并求出和、累积和、均值、标准差、方差、最小值、最大值...
  4. 百度统计 渠道分析 渠道名称显示 未知
  5. Windows Server 2012R2 实现AD双域控制器互为冗余
  6. CRM——验证码(JWT技术)、接口资源鉴权
  7. 【计算机基础】文件存储单位及其换算
  8. Linux nacos下载安装
  9. 万字长文,62道Java核心面试题,一次性打包送给积极向上的你
  10. 51单片机超声波测距带语音播报(源程序+原理图+原理图讲解)