某同盾验证码

⚠️前言⚠️

本文仅用于学术交流。
学习探讨逆向知识,欢迎私信共享学习心得。
如有侵权,联系博主删除。
请勿商用,否则后果自负。

网址

aHR0cHM6Ly9zZWMueGlhb2R1bi5jb20vb25saW5lRXhwZXJpZW5jZS9zbGlkaW5nUHV6emxl

1. 先整体分析一下接口

在这里插入图片描述

1_1. 验证码信息下发接口 validatecode/v1
  • 参数 - 加密值不少,表慌不复杂
    在这里插入图片描述
  • 响应内容
    在这里插入图片描述
1_2. 验证接口 validatecode/v1
  • 参数 - 和信息下发接口一致 p1 - p9,加密逻辑应该是一致的
  • 响应信息1 - 验证成功
    在这里插入图片描述
  • 响应信息2 - 验证失败,重新返回验证码信息
    在这里插入图片描述

2. 底图还原

2_1. 乱序底图

在这里插入图片描述

2_2. canvas 断点
  • 简单调试一下就会发现几个关键位置

  • CanvasRenderingContext2D.getImageData(sx, sy, sw, sh):返回一个ImageData对象,用来描述 canvas 区域隐含的像素数据,这个区域通过矩形表示。【简单来说,其实就是对原图的一个切割】
    sx:将要被提取的图像数据矩形区域的左上角 x 坐标。
    sy:将要被提取的图像数据矩形区域的左上角 y 坐标。
    sw:将要被提取的图像数据矩形区域的宽度。
    sh: 将要被提取的图像数据矩形区域的高度。

  • CanvasRenderingContext2D.putImageData(imagedata, dx, dy): 是 Canvas 2D API 将数据从已有的 ImageData 对象绘制到位图的方法。
    imageData:ImageData,包含像素值的数组对象。
    dx:源图像数据在目标画布中的位置偏移量(x 轴方向的偏移量)。
    dy:源图像数据在目标画布中的位置偏移量(y 轴方向的偏移量)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 原图切割和还原的位置找到之后,现在只需要得到还原数组就可以还原底图了
  • 大致就是这个位置了,字符串 QOQ0oo 中的每个字符转化成 int 类型就是还原数组
  • 而这个字符串,存在于验证码信息接口中
    在这里插入图片描述
    在这里插入图片描述
2_3. 还原结果

在这里插入图片描述

3. 加密值分析

3_1. 加密位置

在这里插入图片描述

3_2. p1

在这里插入图片描述

  • oOoQQ0 固定值
  • window._fmOpt.token 生成位置
    在这里插入图片描述
  • window._fmOpt.partner 固定值
  • window._fmOpt.appName 固定值
3_3. p2在这里插入图片描述
  • p2 值的生成 主要就是这个 blackBox 值,由 window._fmOpt.getinfo() 生成
    在这里插入图片描述
  • window._fmOpt.getinfo() 存在于另一个js文件中 fm.js,参数由接口 /profile.json 返回的 tokenId 可固定
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • fm.js 文件本部复杂,大家可自行分析一下代码
3_4. p3
  • ooQQ0Q 进行 aes 加密,ooQQ0Q = MD5(p1 + ‘^^’ + p2) + + ‘^^’ + ‘|’ + ‘^^’ + ‘|’ + ‘^^’ + ‘|’ + + md5(‘161155^||^'时间戳’)
    在这里插入图片描述
    在这里插入图片描述
  • aes 加密有魔改, 我是直接扣的代码, 有兴趣的小伙伴也可以自行研究一下
    在这里插入图片描述
3_5. p4
  • 对 mouseInfo 信息AES加密, 经测试 mouseInfo 可固定
    在这里插入图片描述
3_6. p6
  • 8位随机字符串 + window.location.href, AES 加密
    在这里插入图片描述
3_7. p7
  • 需要用到 【p6】 和 【生成p3时生成的时间戳字符串】, 分别 md5 之后 + 32位随机字符串
    在这里插入图片描述
    在这里插入图片描述
3_8. p8
  • 生成p6时用到的 8 位随机字符串
    在这里插入图片描述
3_9. p9
  • 【生成p3时的时间戳字符串】, AES加密
    在这里插入图片描述
3_10. 至此,就可以顺利拿到验证码信息了,验证码验证时,p2 和 p3 生成时的参数所不同, 其他不变
  • p2:后面固定即可
    在这里插入图片描述
  • p3:aes之前,拼接上了验证码信息以及滑动信息
    在这里插入图片描述
3_11. 加密并不难,就是混淆的有点难受,把各值对应好即可。下面来说一下两个需要注意的点
  • 生成加密时用到的md5, 为原生md5, 可直接代码实现
  • 涉及到 AES 加密用到的 iv 值, 生成各加密值过程中需保持不变
    在这里插入图片描述

4. 验证结果

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/740057.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理 | 数据的表示、运算和校验(4)基本运算方法

补码加减(运算与控制) (-Y)补 [Y补]变补,这个要好好理解 (-Y)补:先将Y的符号位置反,在求-Y的补码(数字为变反加1) [Y补]变补:先求Y的补码(数字为变反加1)&…

shell的正则表达------awk

一、awk:按行取列 1.awk原理:根据指令信息,逐行的读取文本内容,然后按照条件进行格式化输出。 2.awk默认分隔符:空格、tab键,把多个空格自动压缩成一个。 3.awk的选项: awk ‘操作符 {动作}’…

微服务、多租户、单点登录、国产化形成的开源Java框架!

一、项目简介 JVS是软开企服构建的一站式数字化的开源框架,支持对接多种账户体系,支持多租户、支持Auth2、统一登录、单点登录等,支持原生开发、低代码/零代码开发应用。 二、框架核心功能 控制台(首页):采用配置化的方式 用户…

Redis数据库(一):Redis数据库介绍与安装

Redis是一种高性能的开源内存数据库,支持多种数据结构(如字符串、列表、集合等),具有快速的读写速度。它提供持久化、主从复制、高可用性和分布式部署等功能,适用于缓存、实时分析、消息队列等应用场景。Redis使用简单…

A股羊群效应CSSD CSAD数据与Stata代码数据(2000-2023)

数据来源 参考马丽老师(2016)的做法,股价数据来源于东方财富网,采用上证180指数及构成上证180指数样本股日收盘价数据作为样本。上证180指数自2002年7月1日起正式发布,其样本股是在所有 A 股股票中抽取最具市场代表性…

什么是绩效评价?绩效考核的五个标准包括哪些?

什么是绩效评价?绩效评价是指运用一定的评价方法、量化指标及评价标准,对中央部门为实现其职能所确定的绩效目标的实现程度,及为实现这一目标所安排预算的执行结果所进行的综合性评价。   绩效考核的五个标准有: 1、考核标准设置…

记一下 Stream 流操作

Java Stream流 创建流 Collection.stream() / Collection.parallelStream()&#xff1a;从集合生成流&#xff0c;后者为并行流。 List<String> list new ArrayList<>(); Stream<String> stream list.stream(); //获取一个顺序流 Stream<String> …

深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分之三,权重矩阵的初始化)

权重矩阵的初始化 3&#xff0c;权重矩阵的初始化 深度学习所学习的重点就是要根据损失函数训练权重矩阵中的系数。即便如此&#xff0c;权重函数也不能为空&#xff0c;总是需要初始化为某个值。 3&#xff0c;1 全都初始化为同一个常数可以吗&#xff1f; 首先要简单回顾一下…

【总线】AXI4第五课时:信号描述

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣&#xff0c;那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者&#xff0c;AXI4以其高性能和高度可扩展性&#xff0c;成为了现代电子系统中不可或缺的通信桥梁…

保姆级 | Windows 复古风格终端样式设置

0x00 前言 前段时间有朋友询问我 Windows 终端的样式是如何设置的&#xff0c;我也进行了一些简单的回复。在之前的 Windows 11 版本中&#xff0c;系统提供了一个界面按钮&#xff0c;可以直接将终端样式设置为复古风格。然而&#xff0c;系统更新之后&#xff0c;这个按钮好像…

【UML用户指南】-22-对高级行为建模-事件和信号

目录 1、概述 2、事件分类 2.1、信号 2.2、调用事件 2.3、时间事件和变化事件 2.4、发送和接收事件 3、常用建模技术 3.1、对信号族建模 3.1.1、建立过程 3.2、对异常建模 在状态机语境中&#xff0c;使用事件对能够触发状态转移的激励建模。事件包括信号、调用、时间…

go语言day03

目录 一、 go语言的数据类型&#xff1a; 二、声明赋值的简写形式&#xff1a; ":" 1&#xff09;重复使用的编译错误 2&#xff09;在全局变量中使用 : 会报编译错误 三、变量规则&#xff1a; 0&#xff09;变量的命名规则&#xff1a; 1&#xff09;创建的局部…

Excel 宏录制与VBA编程 —— 12、文本字符串类型相关(附示例)

字符串分割&#xff0c;文末示例&#xff08;文末代码3附有源码&#xff09; 代码1 - 基础字符串 代码2 - 字符串拆分 代码3 - 字符串分割 Option ExplicitSub WorkbooksClear()Dim DataRange As RangeSet DataRange Range("C2:E12")DataRange.Clear End SubSub Wo…

PS添加物体阴影

一、选择背景&#xff0c;确保物体和北京分割出图层 二、右键单击物体图层&#xff0c;点击混合选项&#xff0c;点击投影 三、调整参数&#xff0c;可以看效果决定(距离是高度&#xff0c;扩展是浓度&#xff0c;大小是模糊程度)&#xff0c;保存即可

PhotoShop自动生成号码牌文件

1、说明 设计卡牌的时候&#xff0c;遇到自动生成编号&#xff0c;从01500到-02500&#xff0c;一个一个的手写&#xff0c;在存储保存成psd格式的文件&#xff0c;会很耗时。 下面将介绍如何使用ps自动生成psd格式的文件 2、使用excle生成数字 从01500到-02500 第一步&…

数据挖掘常见算法(关联)

Apriori算法 Apriori算法基于频繁项集性质的先验知识&#xff0c;使用由下至上逐层搜索的迭代方法&#xff0c;即从频繁1项集开始&#xff0c;采用频繁k项集搜索频繁k1项集&#xff0c;直到不能找到包含更多项的频繁项集为止。 Apriori算法由以下步骤组成&#xff0c;其中的核…

【Python/Pytorch 】-- K-means聚类算法

文章目录 文章目录 00 写在前面01 基于Python版本的K-means代码02 X-means方法03 最小二乘法简单理解04 贝叶斯信息准则 00 写在前面 时间演变聚类算法&#xff1a;将时间演变聚类算法用在去噪上&#xff0c;基本思想是&#xff0c;具有相似信号演化的体素具有相似的模型参数…

连续9年618全渠道第一,入选最受用户关注TOP10,德施曼做对了什么?

近日&#xff0c;智能锁赛道领军品牌德施曼闯入大消费赛道&#xff0c;与宝洁、美的等品牌一起入选今年京东618最受用户关注TOP10品牌。 2024年的618大促已正式落下帷幕&#xff0c;大品牌纷纷交出了这场“年中大考”的答卷&#xff1b;其中高端智能锁领军品牌德施曼也交出了一…

一个故事,告诉你为什么要做目标管理

在一个小镇上&#xff0c;镇上的领导找到一群建筑工人&#xff0c;要求他们建造一堵墙&#xff0c;以保护镇上的居民免受外界侵扰。 然而&#xff0c;领导只是简单地描述了墙的作用和位置&#xff0c;却没有给出具体的尺寸和高度要求。工人们认为这是一个简单而直接的任务&am…

MQTTX 1.10.0 发布:CLI高级文件管理与配置

MQTTX 1.10.0 版本现已发布&#xff01; 在本次更新中&#xff0c;CLI 版本在文件管理和配置功能方面进行了显著增强。主要更新包括&#xff1a;支持从文件中读取和写入消息、高级配置选项、文本输出模式、以及改进的日志记录。此外&#xff0c;桌面版本现在支持数据库重建&am…