python调用js文件生成参数
JS逆向
我就随便找了一个网站https://cloud.kingdee.com/passport/#/auth/login
随手输入一个账号密码,抓包后发现请求带着加密的密码(相同密码每次请求字符串都不同)和加密的验证码(有时候不出现),判断是个动态加密,那就针对密码下手把
1、进入第一步JS中打上断点
2、回溯发现,前面三个栈的方法里没有出现加密的js语句,这里继续打断点在第四个异步请求的地方
3、发现在call之后密码就被加密了,这里需要打个断点,F9进入
4、进来就是一个循环,首先之前就确定,密码是在这里加密出来的,可以F9一步一步找到,但我顺手下滑了一下哎嘿。。。。。瞧瞧 password: this.encryptedData(this.passwordInput) ,写法多么正规
5、进入这个方法,一看关键词setpublickey,估摸着就是RSA加密,再看是webpackJsonp格式,意思就是用了n(442)里面的RSA加密方法处理了我的密码“123456”
安装exejs与nodejs
pip3 install PyExecJS 安装execjs
https://nodejs.org/en/download/ 下载安装nodejs,过程全部下一步,结束关闭
cmd中用node -v查看安装成功与否,成功的话会显示node版本
调用js生成参数
import execjs
node = execjs.get() #获取js环境
with open('./test.js', encoding='utf8') as f:
js_code = f.read() #读取js文件
js_compiled = node.compile(js_code)#编译js
pwd = js_compiled.call("getpwd", "123456")#调用getpwd方法,传入密码
print(pwd)