声明:
- 本文章内容仅供学习交流,不用于其他其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,
各位看官好哇,很久没有更新了,今太给他家更新一篇文字点选验证码的逆向实战,接下来开始正文
1.第一步是我们先到验证点选的位置
之后呢,我们打需要打开,开发者工具然后人为点选验证,进行一次验证,可以验证失败,第一次是为了拿到校验,验证码接口,下图红色箭头处就是本次验证码校验的接口
点击进入校验接口,到载荷和看到本次校验所需要的请求参数,红框内的参数是本次的逆向参数
接下来点校验接口,并进入启动器的菜单下,我们接下来点击app开头的js文件
点击之后会跳转到对应的JavaScript函数中,下面红色框内就是我们本次校验验证码接口的请求参数
找到函数之后我们在这里添加上断点,并重新点选验证码触发校验接口,见下图
接下来点击箭头指向的位置,进行继续执行到下个断点处
在这里先给大家讲一下pointJson: t.secretKey ? o((0, n.default)(t.checkPosArr), t.secretKey) : (0, n.default)(t.checkPosArr) 这行代码的意思
在JavaScript中 ?:是一个三元运算, 意思就是当t.secretKey为true时 pointJson = o((0, n.default)(t.checkPosArr), t.secretKey) 否则 pointJson = (0, n.default)(t.checkPosArr)
所以我们把鼠标移动到t.secretKey看是否为true,这里我们可以看到 t.secretKey = “I6U2jTypdZgh5aCC” 那我们就知道 pointJson对应的是 o((0, n.default)(t.checkPosArr), t.secretKey) 这个函数
接下来我们把鼠标移动到o上面,红框内是o方法的函数地址,点击可跳转到改函数内
现在我们已经跳转到o函数,内继续添加断点调试
接着点击下一步,进入下一个断点处
这里可以看到加密的参数是,对应文字的坐标,和 t.secretKey的值,那里取的最后会讲
至此整个加密流程基本已经走通了,在这里也能看到它使用的AES加密, 加密方式是ECB, 还用了Pkcs7来填充加密值,接下来我们就用Python开实现AES加密就可以可以了
加密方法:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
def encrypt_data(t, e):
i = e.encode('utf-8')
s = t.encode('utf-8')
cipher = AES.new(i, AES.MODE_ECB)
encrypted_data = cipher.encrypt(pad(s, AES.block_size))
return str(base64.encodebytes(encrypted_data), encoding='utf8').replace('\n', '')
接下来我们使用requests.post来校验一下验证结果,至此逆向完结,
captchaType 是固定值clickWord ,token的值和t.secretKey的值在get接口的response中获取见下图
脚本和网页校验结果见下图
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者删除