Python 调用 JS 代码
配置环境
- 需要安装
pyexecjs
库
pip install pyexecjs
- 需要下载 NodeJS,它是一个 JavaScript 的编译器,内置了 V8 Chrome 引擎
Node.js 官方下载地址:https://nodejs.org/en/(安装过程最后的选项,打个勾)
- 最终测试(运行结果为
Node.js (V8)
说明环境正常)
import execjs
print(execjs.get().name)
使用指南
首先要准备一个 js 文件,里面有变量和待调用的函数
str = "123456";
function fn(a, b) {
return a + b;
}
建议先使用 NodeJS 直接运行确保正常(node test.js
),再使用 Python 调用它,下面是调用模板
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
# @Author: Xiaotuan
import execjs
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
# 读取 js 文件
f = open("test.js", mode="r", encoding="utf-8")
js = f.read()
f.close()
# 先预编译
# result1 是执行其中的函数
# result2 是获取其中的变量
obj = execjs.compile(js)
result1 = obj.call("fn", 10, 20)
result2 = obj.eval("str")
print(result1, result2)
"""
30 123456
"""
逆向思路
JS 的混淆有:UglifyJS,JScrambler,jsbeautifier.org,JSDetox,obfuscator.io 等
但常见且入门级的就是 OB 混淆,解决方法可以是手撸或者补环境,也可以是 AST