【验证码逆向专栏】某多多验证码逆向分析

在这里插入图片描述

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除!

前言

某多多的验证码,类型有很多,滑块、点选、手势等等,其中点选的题目繁多,每刷一次都能给你整个新的出来。本文主要对验证码的相关加密算法(不同类型的都大差不差)进行逆向分析,识别模型的训练后续也会推出相关文章,上述内容都仅供学习交流:

7AqMXZ.png

逆向目标

  • 目标:某多多点选验证码逆向分析

  • 网站:感兴趣的小伙伴私聊

抓包分析

触发验证码,抓包,/api/phantom/vc_pre_ck_b 接口返回的 salt 值,会参与到加密参数的生成:

在这里插入图片描述

/api/phantom/obtain_captcha 接口获取验证码图片以及题目内容,都经过了加密处理:

7AuLtb.png

  • pictures:验证码背景图片链接;
  • semantics:验证码需点击的题目内容。

该接口的请求参数中 anti_contentcaptcha_collect 都经过了加密,verify_auth_token 是触发验证码之后,返回的识别标志:

在这里插入图片描述

/api/phantom/user_verify 验证接口:

在这里插入图片描述

  • 验证成功:{‘code’: 0, ‘leftover’: 9, ‘result’: True};
  • 验证失败:{‘code’: 3002, ‘leftover’: 9, ‘result’: False};
  • 验证时间过长:{‘code’: 1001, ‘leftover’: null, ‘result’: False}。

请求参数与 /api/phantom/obtain_captcha 接口基本相同,多了一个 verify_code,也就是点击的坐标:

在这里插入图片描述

anti_content 参数的解决思路,网上有很多详解文章,跟栈就行了,本文就不对此多加分析了:

7Aw00H.png

逆向分析

验证码图片

一般的验证码,其获取图片的接口,基本都是直接返回的下载链接,或者经过 Base64 编码后的值。本案例中,验证码的背景图片链接、标题都经过了加密处理,需要进行逆向分析。

这些图片内容,在后端进行加密,那必然会在前端解密出真实的链接,然后渲染到页面上,据此,基本就有两种方案。

第一种,跟栈分析,/api/phantom/obtain_captcha 接口调用的堆栈基本都在 _app.js 文件中,是异步的,关于异步跟栈的分析流程,之前的文章写过很多,就不再赘述了。跟栈进去,在下图 return 处下个条件断点 i.pictures,返回验证图片相关信息时即会断住:

在这里插入图片描述

单步调试,分析,寻找解密点。向上跟栈到此处,可以看到,c 就是经过加密后的标题,经过 this.formatSemantics 方法处理后,还原出了明文标题:

在这里插入图片描述

跟到 this.formatSemantics 中去,kc.Base64.decode(Oa.a.decode(e[0])) 方法解密出了明文值,最终的结果替换掉特殊字符 @ 即可:

在这里插入图片描述

kc.Base64.decode 就是 base64 解码(https://www.kgtools.cn/secret/base64):

在这里插入图片描述

跟进到 Oa.a.decode 中,将相关算法扣下来即可:

在这里插入图片描述

Python 复现:

# ======================
# -*-coding: Utf-8 -*-
# ======================
import re
import base64

from loguru import logger

c = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     -1, -1, -1, -1, -1, -1, -1, -1, -1, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值