JS 混淆后的代码扒到本地无法运行

2022-07-17 09:31:35 +08:00
 luboyan

JS 混淆后的代码扒到本地无法运行

背景表述:工作需要在一个网站上填报数据,数据已经本地 excel 收集好,但是填报只能单项填写,故想用 python 编写小脚本程序批量提交。因工作原因无法放出网址。

网站分析

1 、每次提交数据前,需要点开一个填表框架,会加载 2 个 JS 代码 NwVqIEYG3ebdApP.js ; crypto-js.min.js

2 、每次提交数据会产生一个值

seKey:e85cacbf856bec1835290aa45b56a8e20fe231a6b056b89df30b858ca83225d4774aa8a4ac069bb7dc003c561f069662

该值由上述两个 js 代码生成,但是 NwVqIEYG3ebdApP.js 是被混淆的无法正常读取,seKey 数据加密方式为 AES ,将代码扒下来后因为混淆无法在本地正常运行,求大佬支招。

但是在部分在线 JS 网站上是可以正常运行

https://www.dute.org/js-run

https://jsrun.net/new?mode=black

代码放在这里 https://txtpad.cn/0716demo

本地环境问题

1.本地使用 pycharm 专业版,已经安装 nodejs 插件,配置好环境变量,运行别的不加密的 JS 代码可以正常使用。

2.本地运行出现的问题如下

const _0x3d940d = CryptoJS[_0xfdc6('\x30\x78\x65', '\x7a\x65\x6a\x4d')][_0xfdc6('\x30\x78\x31\x35', '\x38\x4e\x6a\x5 d')]'\x70\x61\x72\x73\x65'; TypeError: Cannot read properties of undefined (reading 'Utf8')

一些疑惑

本地使用 nodeJS 无法运行上述 js 代码,但是在线的部分网站可以运行,在线 JS 运行时要是标注解释器时 nodeJS 的也无法使用,是不是解释器和该代码冲突,如果是应该换用什么解释器,同时可以用 pycharm 编写后续 post 发包表单数据构造。

1.这种就可以正常运行出结果

2.这种是 nodeJS 的就不能

需求

1 、求助大佬帮忙解答下,小白摸石头过河找不到方向,本地是否应该换另外一种 JS 编译器,是的话应该是什么; 2 、或者其他的解决办法,能在每次提交数据表单时获取到这个 seKey 值,seKey 是实时改变的,应该和时间戳有很大关系,但是源代码混淆了无法阅读。

2272 次点击
所在节点    问与答
10 条回复
wunonglin
2022-07-17 09:43:35 +08:00
他不是提示找不到 CryptoJS 了吗,引入一个不就好了
eote
2022-07-17 09:45:50 +08:00
感觉跟 node 没关系,可能漏了一些文件。不想死磕的话可以找个 PhantomJS 类似的包模拟浏览器点击 ( https://github.com/detro/ghostdriver
luboyan
2022-07-17 09:48:39 +08:00
@wunonglin 引入了原代码调用的就是 crypto-js.min.js 这个,现在的问题是我把他们拼接在一起,通过在线的 JS 运行 https://www.dute.org/js-run
https://jsrun.net/new?mode=black ;是可以运行得到结果的(不知道这两个运行是用什么解释器),
但是要是在线运行的 js 显示解释器是 nodejs 的就运行出错,弄到本地运行也是一样的出错(本地也是 nodejs )
luboyan
2022-07-17 09:54:24 +08:00
@eote 模拟点击感觉会很慢数据太多了,谢谢大佬
404neko
2022-07-17 10:07:46 +08:00
Node 里少了很多东西
比如 document
luboyan
2022-07-17 10:16:15 +08:00
@404neko 谢谢大佬我就猜是解释器的问题
iqoo
2022-07-17 10:47:18 +08:00
居然敢把网页里的 js 放 node 里跑。换成某些风控脚本直接给你种个马。
luboyan
2022-07-17 11:21:50 +08:00
@iqoo 自己工作上的这倒是不用担心,谢谢答主提醒
mxT52CRuqR6o5
2022-07-17 11:52:49 +08:00
直接 headless browser ,不是省心的多
ysc3839
2022-07-17 22:32:43 +08:00
环境不一样,JS 语言本身是个沙盒语言,没有什么功能的,浏览器里的 window, document 都是额外扩展的,Node.js 也是额外扩展了。某个脚本依赖浏览器的扩展,你放到没有这个扩展的环境中(比如 Node.js)当然会出问题。另外 Node.js 加的扩展包含许多高权限的操作,可以干很多坏事,并不像浏览器那样是个安全受限的环境,不可信的代码绝对不能在 Node.js 中运行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/866735

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX