声明:
本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
加密值:credentials.username、credentials.password、captchaToken
我们搜索credentials.username 可以看到一下就定位到了加密入口,我们再看一下我们想要的值是否都在这个位置,这里我们可以看到除了captchaToken
credentials.username、credentials.password 的加密方式已经显而易见的就是标准的rsa
var pubkey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXQG8rnxhslm+2f7Epu3bB0inrnCaTHhUQCYE+2X+qWQgcpn+Hvwyks3A67mvkIcyvV0ED3HFDf+ANoMWV1Ex56dKqOmSUmjrk7s5cjQeiIsxX7Q3hSzO61/kLpKNH+NE6iAPpm96Fg15rCjbm+5rR96DhLNG7zt2JgOd2o1wXkQIDAQAB"
var i = new JSEncrypt();
i.setPublicKey(pubkey);
var i = 13566667777
var k = 123456
j = i.encrypt(j);
k = i.encrypt(k);
username = k
password = j
console.log(username)
console.log(password)
我们直接把浏览器的实现代码扣下来直接运行
发现缺少JSEncrypt这个第三方包 我们用指令安装一下
npm install jsencrypt
我们再引入这个包
const JSEncrypt = require('jsencrypt')
这时候我们再启动会出现一个window 未定义的错误这个时候我们只要在最上面定义一下
window = global;
我们再运行 可以出结果啦!至此credentials.username、credentials.password的加密就结束了
完整代码实现
window = global;
const JSEncrypt = require('jsencrypt')
var pubkey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXQG8rnxhslm+2f7Epu3bB0inrnCaTHhUQCYE+2X+qWQgcpn+Hvwyks3A67mvkIcyvV0ED3HFDf+ANoMWV1Ex56dKqOmSUmjrk7s5cjQeiIsxX7Q3hSzO61/kLpKNH+NE6iAPpm96Fg15rCjbm+5rR96DhLNG7zt2JgOd2o1wXkQIDAQAB"
var i = new JSEncrypt();
i.setPublicKey(pubkey);
var j = 13566667777
var k = 123456
j = i.encrypt(j);
k = i.encrypt(k);
username = k
password = j
console.log('username->'+username)
console.log('password->'+password)
接下来就是captchaToken参数的获取了,我们把鼠标放到window.jab.getData()这个方法上然后点击main.min.js跳进这个方法
跳进去后我们会看到一堆混淆之后的代码,不用去管我们只找我们想要的,我们在这里下一个断点
然后再点击登入发现被断住了,我们可以看到b('0xe0', 'OjB3')就是window.jab调用的getData方法,
下面Z是拿到了this['c'] 然后 Z[0x2] 相当于取Z[2] 意思取Z中的第三位,由此我们可以推测Z应该是一个数组
那Z[2]()执行的返回值是不是就是captchaToken呢?我们把Z[2]()放到控制台一执行 woc
这不是我们想要的captchaToken吗?
现在我们有两种思路:第一种扣代码、第二种补环境
这里我们直接扣代码直接选择硬刚
我们把鼠标放到Z上然后点击第三个方法进入,我们可以看到这个ao不就是数组吗 不就是我们的Z吗? 那Z[2]不就是我圈出来的这一块然后返回一个拼接的值
我们把返回值拆开看大致是三个部分的拼接
(g[f[b('0x6c7', ']swn')]('_', 't')] || '') 、aq、ap 中间用 | 拼接
经过多次观察 发现(g[f[b('0x6c7', ']swn')]('_', 't')] || '')的内容其实是写死的我们这边就跟着写死就行
我们通过追栈可以看到 ap相当于aK函数运行的返回值
接下来就是慢慢扣代码的环节了,由于篇幅过长就不做描述了,直接上结果图
结合一下账号密码完成完整的加密
需要源码的可以私聊我
看完点个赞吧,喜欢的可以点个关注!