目标url:https://passport.fang.com/
输入账号和密码,点击登录,查看提交的参数
这里我们可以看到,uid就是用户名,service和autoLogin是固定值。那么密码就是pwd了。明显是经过加密的值。
接下来全局搜索pwd,发现加密逻辑在这里:
简单阅读后我们发现,加密逻辑是把key_to_encode和密码传入encryptedString中,返回值就是密码。
知道逻辑之后,我们只需要知道encryptedString 和 key_to_encode 在哪里定义的就可以了。
我们发现是在RSA.min.js中生成的。这是个现成的算法,使用python代码就可以实现。当然如果不愿意改装的话,就把整个文件内容都复制过来。
接下来是key_to_encode的位置,通过全局搜索我们发现,他是这样的:
嗯哼,很明显,p,q,e都是 固定的字符串,所以直接复制就行了。我自己添加了函数,用于生成密码:
function getPwd(password) { // password 我们输入的明文密码
var pwd = encryptedString(key_to_encode, password);
return pwd
}
密码生成需要的内容都齐全了,只需要使用python执行即可。
print(execjs.compile(js).call('getPwd','123456'))
以上就是所有内容,欢迎评论,交流。