当前位置: 首页 > news >正文

【验证码逆向专栏】某验三代、四代一键通过模式逆向分析

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

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

逆向目标

  • 目标:某验三代、四代一键通过模式(无感验证)逆向分析
  • 三代主页:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9mdWxscGFnZS5odG1s
  • 四代主页:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v

通讯流程

接口相关:

01

完整流程:

02

三代抓包情况

register-fullpage 会返回 challengegt 值,后期有用到。

03

get.php 会返回 cs,同样后期会用到,这个请求同样需要 w 值,在某验的点选滑块里,这个请求可以不要 w 值,但在三代无感里,必须得要,不然最后是会验证失败的,可能不带 w 请求,返回的 s 是个假的值,导致最后验证失败。

04

ajax.php 验证是否成功,同样需要 w 值,成功则会返回一个 validate

05

三代逆向分析

第一个 w 值

相信看过K哥以前滑块、点选的文章,对于定位 w 的值很熟练了,这里也是类似的,"\u0077" 就是 "w",其值为 i + r,如下图所示:

06

主要就是 r、o、i 的值,关键代码:

var r = t[$_CFAGw(1326)](), o = $_BFx()[$_CFAGw(1367)](pe[$_CFAFP(416)](t[$_CFAGw(353)]), t[$_CFAGw(1393)]()), i = O[$_CFAGw(1375)](o)

先看看 r,跟进去就是我们熟悉的 RSA 了,和以前的处理一样,把代码扣下来或者用库都行。

07

同样需要注意的是上图中 this[$_CHCFe(1393)]() 也是个随机字符串,会遇到多次,但整体一次验证下来都是相同的值,不然验证会失败,点选、滑块等一系列都一样的。

08

09

然后是 o 的值,这里和以前一样,跟进去看仍然是 AES 加密。t[$_CFAGw(1393)]() 依旧是随机字符串。

10

中间这一串 pe[$_CFAFP(416)](t[$_CFAGw(353)]),也没啥特别的,除了 gtchallenge,其他都是定值,最后面那一串 i 的值,实测写死、置空都行。

11

然后继续跟进 i,把前面 o 的值转换成一个大的字符串,这里也不是很复杂,直接扣代码即可:

12

13

然后 i + r 就是 w 的值了,到这里第一个 w 的值就搞完了。

第二个 w 值

第二个 w 的值和以往的地方都不太一样,不过通过跟栈的方式也很容易找到,来到有个 var n = {}; 的地方,如下图所示:

14

t[$_CGABi(1436)] 就是 w 值,也就是 t['$_CEDO'],前面定义了 var t = this,经过第 8215 行的 t[$_CGAAX(1462)]() 之后,就有了 w 的值,所以要跟进去重点看这一行。

15

如上图所示,e、t、n、r 中涉及到一些浏览器环境值的计算,当然还有鼠标移动等相关数据的计算,如下图所示:

16

而实际测试发现这四个值直接置空也可以,在本例中可以,不知道是否有其他案例校验更加严格,知道的朋友可以在评论区提出来,再往下,会遇到很多给变量赋值的地方,如下图所示,G 是 MD5 方法,中间的 O[$_CGBFp(948)] 和以前类似,返回一个对象中的 resend 相加,这里就不再赘述了。

17

i[$_CGBGa(1415)] 这里就是将每个变量和值挨个相加,组成一个大的字符串。

18

然后到 r 这里,就多了一个 captcha_token,然后用 {} 将所有数据包了起来。

19

这些数据我们格式化一下,大致结构如下图所示:

20

其中 ep 里面的 venren 是显卡相关信息,fplp 是取了两个鼠标移动的位置信息,直接写死为 null 也可以,tm 就是 window.performance.timing 的一些东西,自己随便伪造一下就行了。

最后一步 i[$_CGDBA(1436)],随机字符串为 key,将前面的数据 r 进行 AES 加密,得到我们最终的 w 值,如下图所示:

21

三代结果验证

22

四代抓包情况

load 接口返回值如下:

23

  • captcha_type:验证码类型,无感为 ai

  • gct_path:gct4 文件路径

  • lot_number:生成 pow_msg、w 的关键参数

  • payload:verify 请求参数

  • datetime:ISO 8601 扩展格式的日期,生成 pow_msg 的关键参数

  • process_token:verify 请求参数

verify 接口返回值如下:

24

  • captcha_id:验证码 id
  • captcha_output:login 请求参数
  • gen_time:login 请求参数
  • lot_number:login 请求参数
  • pass_token:login 请求参数

login 接口验证登录成功:

25

四代逆向分析

w 参数

与三代无感一样,四代无感 w 参数同样直接搜索 "\u0077" 即可定位到,r 为 w 参数的值:

26

r 参数定义在第 6237 行,内容如下:

(0,d[$_CBHHO(84)])(f[$_CBHIE(84)][$_CBHHO(562)](e), i)
d["default"])(f["default"]["stringify"](e), i)

由上可知,r 是将 i 参数和转为字符串的 e 参数加密得到的,跟进到 d[$_CBHHO(84)] 中,加密函数定义在第 11669 行,在第 11707 行打下断在,返回值为 r 参数的值,即 w 值:

27

(0,d[$_DIEHS(177)])(c) + u
d["arrayToHex")(c) + u

这里是将 c 数组转换成了十六进制的字符串然后加上 u 得到的 r 值,d[$_DIEHS(177)] 跟进去直接扣出来即可,c 定义在第 11705 行:

var c = s[a][$_DIEIq(1403)][$_DIEHS(1498)](e, i);
var c = s[1]["symmetrical"]["encrypt"](e, i);

e 后文分析,i 为 16 位字符串:

28

i 定义在第 11702 行,跟进到 d[$_DIEIq(103)] 方法中,i 为 16 位随机数:

29

e 参数内容如下:

30

device_idlot_numberload 接口返回,pow_msg"1|0|md5|" + datetime + "|" + captcha_id + "|" + lot_number + "||" + 16位随机数pow_msg 经过 MD5 加密即为 pow_sign"l0zs":"53502544" 为动态变化的键值对,在往期四代滑块的文章中均有详细介绍,接下来跟进到 s[a][$_DIEIq(1403)][$_DIEHS(1498)] 中,c 为 AES 加密,扣代码或者直接引库:

31

u 定义在第 11704 行,i 为十六位随机字符串:

u = new l[($_DIEHS(84))]()[$_DIEIq(1498)](i);
u = new l["default"]()["encrypt"](i);

跟进到加密函数 l[($_DIEHS(84))] 中,在第 12725 行,于 12741 行打下断点,可以看到这里就是个 RSA 加密,扣代码或者直接引库即可:

32

四代结果验证

33

相关文章:

【验证码逆向专栏】某验三代、四代一键通过模式逆向分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 本文章未经许可禁止转载…...

《MySql学习》 MySQL的 加锁规则

MySQL加锁原则 两个原则 原则 1:加锁的基本单位是 next-key lock。next-key lock 是前开后闭区间(区间锁和行锁)。原则 2:查找过程中访问到的对象(索引)才会加锁。 两个优化 1.优化 1:索引上…...

软件测试(linux命令篇-01文件操作命令)

linux文件篇命令linux系统常用文件操作命令1、查看目录内容及常用参数:ls2、目录切换:cd 3、创建文件:touch 4、创建目录 :mkdir5、 删除文件或目录:rm6、文件或目录的复制:cp7、文件或目录的移动&#xff…...

Code Virtualizer 3.1.4 Crack

Code Virtualizer 是一个强大的 Windows 应用程序代码混淆系统,它可以帮助开发人员保护他们的敏感代码区域免受逆向工程的影响,基于代码虚拟化的非常强大的混淆代码。 Code Virtualizer 会将您的原始代码(Intel x86/x64 指令)转换…...

Torch同时训练多个模型

20230302 引言 在进行具体的研究时,利用Torch进行编程,考虑到是不是能够同时训练两个模型呢?!而且利用其中一个模型的输出来辅助另外一个模型进行学习。这一点,在我看来应该是很简单的,例如GAN网络同时训…...

LCR数字电桥软件下载安装教程

软件:LCR数字电桥软件NS-LCR 语言:简体中文 环境:NI-VISA 安装环境:Win10以上版本(特殊需求请后台私信联系客服) 硬件要求:CPU2GHz 内存4G(或更高)硬盘500G(或更高) …...

C++模板写法详解

模板 概念 模板就是建立通用的模具,大大提高复用性 模板主要体现了cpp编程的另外一种思想泛型编程cpp提供两种模板机制 函数模板类模板 函数模板 作用 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表 语…...

【备战面试】每日10道面试题打卡-Day2

本篇总结的是Java基础知识相关的面试题,后续也会更新其他相关内容 文章目录1、 和 equals 的区别是什么?2、你重写过 hashcode 和 equals 吗,为什么重写equals时必须重写hashCode方法?3、为什么Java中只有值传递?4、BI…...

“数字档案室测评”相关参考依据梳理

数字档案室建设无疑比数字档案馆建设应用范围更为广泛,涉及的单位类型和专业领域也更多。这一点从国家档案局的机构设置上也可以看出端倪: 国家档案局两个内设业务指导司中,档案馆(室)业务指导司主要针对档案馆和机关档案室,而经济…...

android 动态加载jar包

什么时候需要用到动态加载jar包呢? 减少apk本身大小,某些界面才需要用jar里的功能jar中的功能可以独立开发,不要依赖其它的东西,能适用各个项目和第三方公司合作,人家不提供项目源码给你,但又要开发他们使…...

JAVA版B2B2C商城源码多商户入驻商城

三勾商城多商户是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS Android 公众号 H5 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开神器, 为大中小企业提供极致的移…...

测试人员如何在测试环境数据库批量生成测试数据?方案分享

测试人员为了测试某个特定场景,往往需要在测试环境数据库中插入特定的测试数据来满足需求;性能测试时,常需要在测试环境生成大量可用测试数据来支持性能测试;建设持续集成持续交付体系时,我们往往也需要在测试环境生成…...

【el】表单

elementUI中的表单相关问题一、用法1、动态表单调用接口返回表单&#xff0c;后端的接口返回值如下&#xff1a;这些是渲染后的效果页面使用&#xff08;父组件&#xff09;<el-button size"small" class"Cancelbtn" click"sub(true)">发起…...

【Flutter入门到进阶】Flutter基础篇---布局

1 GridView网格布局组件 1.1 说明 1.1.1 图例 1.1.2 说明 GridView网格布局在实际项目中用的也是非常多的&#xff0c;当我们想让可以滚动的元素使用矩阵方式排列的时 候。此时我们可以用网格列表组件GridView实现布局 GridView创建网格列表主要有下面三种方式 1、可以通过Gr…...

python海龟绘图

一、基础 &#xff08;一&#xff09;介绍 海龟绘图&#xff08;Turtle Graphics&#xff09;&#xff1a;“小海龟”turtle是Python语言中一个很流行的绘制图像的函数库&#xff0c;想象一个小乌龟&#xff0c;在一个横轴为x、纵轴为y的坐标系原点&#xff0c;(0,0)位置开始…...

【计算机网络】数据链路层

概述 封装成帧 差错检验 可靠传输 实现机制 可靠传输的实现机制 停止等待协议 回退N帧协议 选择重传协议 【计算机网络】MAC帧和PPP帧&#xff08;定义使用范围区别共同点&#xff09;_GPNU_Log的博客-CSDN博客_ppp帧 PPP帧和以太网帧 | Mixoo 数据链路层的协议有PPP协…...

使用groovy代码方式解开gradle配置文件神秘面纱

来到这里的是不是都有以下疑问&#xff1a; 1.build.gradle配置文件结构好复杂啊&#xff0c;怎么记&#xff1f; 2.内部是怎么进行分析和执行的&#xff1f; 3.为什么可以在配置文件里面写groovy代码&#xff0c;怎么识别的&#xff1f; 4.怎么才能很方便的记住和快速上手…...

kafka入门到实战二(使用docker搭建kafka集群)

使用Docker搭建kafka单机/集群 拉取镜像&#xff1a;2.8.0之前&#xff0c;kafka都需要依赖zookeeper docker pull wurstmeister/kafka docker pull wurstmeister/zookeeper运行zookeeper镜像 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper运行ka…...

【简化开发】lombok的使用、编译后的代码及源码

lombok的使用导入依赖一、getter、Setter、toString1、getter、Setter分别生成getxxx()和setxxx()方法2、toString生成toString()方法&#xff0c;按顺序打印类名称以及每个字段&#xff0c;并以逗号分隔二、NoArgsConstructor、RequiredArgsConstructor、AllArgsConstructor1、…...

在线就能用的主图设计素材,免费分享!

如何给自己的店铺商品设计专属的节日活动主图&#xff1f;没有节日活动的主体素材要如何设计&#xff1f;下面小编就分享一个在线素材设计工具&#xff0c;打开乔拓云&#xff0c;平台里面不仅有许多能使用的电商设计素材&#xff0c;还有许多的设计工具和模板能帮助你快速的实…...

【测绘程序设计】——计算卫星位置

本文分享了根据广播星历计算卫星于瞬时地固系下位置的计算程序(C#版)(注:瞬时地球坐标系坐标经极移改正即可获得协议地球坐标系坐标),相关源代码(完整工程,直接运行;包含实验数据)及使用示例如下。 目录 Part.Ⅰ 使用示例Part.Ⅱ 代码分析Chap.Ⅰ 数据结构Chap.Ⅱ 计…...

山东双软认证的基本条件

​一、山东双软认证的基本条件 "双软认证"是指软件产品评估和软件企业评估;企业申请双软认证除了获得软件企业和软件产品的认证资质&#xff0c;同时也是对企业知识产权的一种保护方式&#xff0c;更可以让企业享受国家提供给软件行业的税收优惠政策&#xff1b;我们…...

TPM 2.0实例探索3 —— LUKS磁盘加密(4)

接前文&#xff1a;TPM 2.0实例探索2 —— LUKS磁盘加密&#xff08;3&#xff09; 本文大部分内容参考&#xff1a; Code Sample: Protecting secret data and keys using Intel Platform... 二、LUKS磁盘加密实例 4. 将密码存储于TPM的PCR TPM平台配置寄存器&#xff08;…...

Linux连接RDP远程服务工具集记录

目录 rdesktop 安装 实例 xfreerdp 安装 实例 remmia 介绍 rdesktop 安装...

离散事件动态系统

文章目录离散事件动态系统ppt离散事件系统建模离散事件动态系统的基本组成元素离散事件动态系统仿真具体建模petri建模实例离散事件动态系统 ppt ppt 仿真建模步骤 离散事件系统建模 from&#xff1a;离散事件系统建模 离散事件动态系统的基本组成元素 &#xff08;1&am…...

无线WiFi安全渗透与攻防(二)之打造专属字典

系列文章 无线WiFi安全渗透与攻防(一)之无线安全环境搭建 打造专属字典 什么在破解之前先准备专用字典&#xff0c;因为对于一般家庭来说&#xff0c;常用 一个是预共享密钥PSK&#xff0c;一个是PIN码。 也不是所有的路由都开起了PIN码&#xff0c;一般都会开启域共享密钥…...

拥抱 Spring 全新 OAuth 解决方案

以下全文 Spring Authorization Server 简称为: SAS 背景 Spring 团队正式宣布 Spring Security OAuth 停止维护&#xff0c;该项目将不会再进行任何的迭代目前 Spring 生态中的 OAuth2 授权服务器是 Spring Authorization Server 已经可以正式生产使用 作为 SpringBoot 3.0 的…...

前端开发与vscode开发工具介绍

文章目录1、前端开发2、vscode安装和使用2.1、下载地址2.2、插件安装2.3、设置字体大小2.4、开启完整的Emmet语法支持2.5、创建项目2.6、保存工作区2.7、新建文件夹和网页1、前端开发 前端工程师“Front-End-Developer”源自于美国。大约从2005年开始正式的前端工程师角色被行…...

C++---最长上升子序列模型---友好城市(每日一道算法2023.3.2)

注意事项&#xff1a; 本题为"线性dp—最长上升子序列的长度"的扩展题&#xff0c;所以dp思路这里就不再赘述。 题目&#xff1a; Palmia国有一条横贯东西的大河&#xff0c;河有笔直的南北两岸&#xff0c;岸上各有位置各不相同的N个城市。 北岸的每个城市有且仅有…...

maven高级知识。

目录 一、分模块开发 1、分模块开发设计 2、依赖管理 二、继承和聚合 1、聚合 2、继承 三、属性 1、基本介绍 2、版本管理 四、多环境配置与应用 1、多环境开发 2、跳过测试 五、私服 1、私服安装 2、私服仓库分类 一、分模块开发 1、分模块开发设计 ▶ 示意图 …...

具有口碑的柳州网站建设哪家好/seo优化搜索推广

P4231 三步必杀 差分数组差分数组一看等差数列思路就往奇怪的地方去了……突然想到常数列前缀和就是等差又想到上周D1T1后缀和的后缀和就是类似的东西所以在题目明显暗示差分的情况下做一下差分的差分然后由于最后求前缀和只需要1&#xff5e;n所以就只需要每次在差分数组上修改…...

做游戏网站/百度云官网登录首页

2020年下半年全国普通高等学校非计算机专业学生计算机应用水平统一考试报考工作即将开始&#xff0c;现将有关事项通知如下&#xff1a;一、报名时间&#xff1a;2020年11月13日之前。二、考试时间&#xff1a;2020年12月26日。三、考试级别和方式&#xff1a;考试采用计算机网…...

网上外贸网站怎么做/代写文章

概述 从指定的表格中读取指定Key的列表的所有数据。 示例代码 同步调用参见章节&#xff1a;[List表]读取列表所有数据示例代码。 异步调用参见章节&#xff1a;异步调用接口示例代码。 Request对象方法说明 注&#xff1a;如有未列出来的Request对象方法&#xff0c;即表…...

如何查看用wordpress建的站点/阿拉营销网站

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目 1、题目描述 设计一种算法&#xff0c;将一个新节点插入到一个完全二叉树中&#xff0c;并在插入后保持其完整。实现 CBTInserter类: …...

abcd设计官网/seo中文意思

点击上方蓝色字体&#xff0c;关注我们今天想写一下关于用qml创建QTabWidget的案例&#xff0c;查看了Qt Creator中的示例&#xff0c;发现有这个示例&#xff0c;就拿出来进行了修改。源示例请按照下图查找。对其进行了少许的修改&#xff0c;如下图当你打开这个项目你会发现它…...

中国建设基础设施公司网站/郑州网站优化培训

红黑树特性 每个节点或者是黑色&#xff0c;或者是红色。根节点是黑色。每个叶子节点&#xff08;NIL&#xff09;是黑色。 &#xff08;注意&#xff1a;这里叶子节点&#xff0c;是指为空(NIL或NULL)的叶子节点&#xff09;如果一个节点是红色的&#xff0c;则它的子节点必须…...