js逆向-某网站cookies生成逻辑分析_2025-03-08
本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负! 如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦!
网站
aHR0cDovL2FwcC55eHguZ292LmNuL3lvbmd4aW5nL3p3Z2svNTU0NjUvNTU0NjYvNTU2MzEvNTU2NTUvNTU5NzIvaW5kZXguaHRt
加密参数分析
接口数据平平无奇,但是不携带cookies请求就会返回412
。通过经验分析这个状态码大概率是瑞数的标志,但是本文的这个案例不是,一个常规AES
加密。
代码分析
cookies加密可以才用油猴脚本hook相关的内容。
但是需要注意一下hook的时机,本案例在document
刚开始加载的时候就要注入。
重新清除网站的cookies内容,可以发现hook已经生效了。
向上跟栈,
发现此处用已经将cookie赋值,整个js文件使用ob混淆,不是很复杂,才用手动解混淆比较方便。
继续向上跟栈,发现是_0x3c8d7e
函数生成了cooke的参数。
其他所需参数都在该函数附近,手动解混淆。
第一个是时间戳,_0x5acce9
是从第一个cokie中取值。l
是组合参数在一个数组中。
中间的一段for循环是在判断属性,没什么说的,继续向下。
I永远是一个定值-1,继续向l
数组添加元素,将所需的数据都放进去,然后使用join
方法将数组变成字符串。
这一串就是cookie加密的第二个值。
继续向下看。
D下方,p这个地方进行了一个短路运算,获取了32位的密钥。
D = _0x3c8d7e(p, D)
,这一步将秘钥和待加密字符串放入函数,完成加密,cookie也就完成了加密。
进入函数。
还是一个比较简单的控制流,只需要将混淆部分解一下,逻辑还是比较清晰的。
大致效果如下:
其中_0x55139e
对象是一个标准的AES
对象。
根据这些特征能够知道使用了aes-js
库。
npm install aes-js // 安装即可
因为是AES cbc加密,还必须有一个iv
的值,此处的iv是一个16位的随机字符串。
验证
可以发现已经没有任何问题了