JS逆向加密——Python执行JS代码的常用2种方式
JS逆向加密:Python执行JS代码的常用2种方式
个人觉得 node的方式最后用,写到第一种了,可以解决很多依赖问题和环境问题,使用以下同一份JS文件
// js 文件代码 //计算两个数的和 function add(num1, num2) { // 只要打印出来 才能获取到 console.log(num1 + num2) return num1 + num2; } add(1,2)
1. Node.js
-
实际上是使用 Python 的os.popen执行 node 命令,执行 JS 脚本时,只能打印出来,读取打印的结果 首先,确保本地已经安装了 修改 JS 脚本,新增一个导出函数 init ,方便内部函数被调用
# Python 代码 import os # 打开 命令行 执行 node pipeline = os.popen(node ./11.js) # 必须打印,然后读取打印的结果,不然是没有输出的 print(pipeline.read())
# 使用绝对 路径引用包 var RootPath = D:\NodeJS\node_modules\node_modules\; var express = require(RootPath+express); var bodyParser = require(RootPath+body-parser); // var sign = require(./JS加密.js);
2. PyExecJS
-
PyExecJS 是使用最多的一种方式,底层 实现方式是: 在本地 JS 环境下运行 JS 代码,使用这种方法必须执行的方法有返回值 result = js.call(get_token) 支持的 JS 环境包含:Node.js、PyV8、PhantomJS、Nashorn 等 首先,我们需要安装依赖包 PyExecJS (pip intall PyExecJS)
# Python代码,读取同一份JS文件 import execjs import os # 读取 js 文件 with open(./11.js) as f: Str_code = f.read() # 加载 JS 代码 js = execjs.compile(Str_code) # 第一种 执行 JS 方式 # 直接 JS 的方法 ,使用这种方法必须执行的方法 有返回值 result = js.call(add) print(result ) # 第二种 执行 JS的方式 # 调用上下文对象的 call() 方法执行 JS 方法 # js.eval(add("{0}", "{1}")).format("1","2")) 参数的方式 result1 = js.eval(add("{0}", "{1}")).format("1","2")) print(result1)
欧力给 !!!