网友 陆伯言 说:
*帖最后由 陆伯言 于 2022-7-16 15:04 编辑
**混淆后的代码扒到*地无法运行
背景表述:工作需要在一个网站上填报数据,数据已经*地excel收集好,但是填报只能单项填写,故想用python编写小脚*程序批量提交。因工作原因无法放出网址。
网站分析
1、每次提交数据前,需要点开一个填表框架,会加载2个**代码
NwV*IEYG3ebdApP.js;crypto-js.min.js
2、每次提交数据会产生一个值
seKey:e85cacbf856bec1835290aa45b56a8e20fe231a6b056b89df30b858ca83225d4774aa8a4ac069bb7dc003c561f06**62
该值由上述两个js代码生成,但是NwV*IEYG3ebdApP.js是被混淆的无**常读取,seKey数据加密方式为AES,将代码扒下来后因为混淆无法在*地正常运行,求大佬支招。
但是在-部分在线**网站上是可以正常运行
https://www.dute.org/js-run
https://jsrun.net/new?mode=black
代码放在这里
https://txtpad.cn/0716demo
*地环境问题
1.*地使用pycharm专业版,已经安装nodejs插件,配置好环境变量,运行别的不加密的**代码可以正常使用。
2.*地运行出现的问题如下
- const _0x3d940d = Crypto**[_0xfdc6(‘\x30\x78\x65’, ‘\x7a\x65\x6a\x4d’)][_0xfdc6(‘\x30\x78\x31\x35’, ‘\x38\x4e\x6a\x5
- d’)][‘\x70\x61\x72\x73\x65’](AES_KEY);
- ^
- TypeEr**r: Cannot read p**perties of undefined (reading ‘Utf8’)
网友 陆伯言 说:
已经找到解决办法,谢谢大佬们的帮助,在此再一次感谢不知名的大佬的答案。
该问题出现的核心是
浏览器环境和 node 环境全局变量赋值方式有差别
需要建运行的函数全局化。
# 附上大佬答案
查找 t.Crypto** = r() 在这之后添加这些代码,就能在 node 环境运行了:
; // 分号结束
globalThis.Crypto** = r() // 将 Crypto** 暴露给 node 的 globalThis ,保证之后的 Crypto** ,其实就是 globalThis.Crypto** 能正常调用。
*地就可以直接 node xxx.js 直接获得 getSkey 的结果了。
爱主机