我就随便找了一个网站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”
pip3 install PyExecJS 安装execjs https://nodejs.org/en/download/ 下载安装nodejs,过程全部下一步,结束关闭 cmd中用node -v查看安装成功与否,成功的话会显示node版本
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)