【验证码逆向专栏】某片滑块、点选验证码逆向分析

news2025/1/31 3:09:35

声明

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

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

逆向目标

  • 目标:某片的滑动验证码和点选验证码逆向
  • 主页:aHR0cHM6Ly93d3cueXVucGlhbi5jb20vcHJvZHVjdC9jYXB0Y2hh

01

抓包分析

验证码图片获取接口,GET 请求,包含四个参数:cbikcaptchaId,有时候可能也会有 token 参数,那是因为不是第一次加载图片,比如刷新图片,会将之前接口的 token 值带上。

02

接口返回,如果是滑动验证码,则 bg 是背景图,front 是滑块图,还有个 token 值后续会用到。

03

如果是点选验证码,则 captchaImage 是底图,wordsImage 是需要点击的文字,同样的有个 token 值后续会用到。

04

验证接口,包含五个参数:cbiktokencaptchaId,其中 token 就是获取验证码接口返回的。

05

06

逆向分析

图片接口

先来看看获取验证码图片的接口,全局搜索关键字 captchaId 即可定位到 key 为 jsonpRequest 的地方,下图中的 t 就是完整的接口 URL 了:

07

往上挨个找,先看看 captchaId,其实就是 this.APP_ID,多次刷新你会发现,对于滑块来讲,是定值 974cd565f11545b6a5006d10dc324281,对于点选来讲,是定值 e1e7be036f9242c7aed023438af66f46,这两个值在一个 JS 里是写死的,如下图所示:

08

09

再往上看,HOSTS 啥的是定值就不用说了,cb 就是 ri 就是 a.ik 就是 a.k,通过 concat() 方法连接起来,所以只需要搞定 ra 的值就行了,如下图所示:

10

a 的值是通过 encrypt(e) 得到的,e 里面有 fpaddressyp_riddler_id 等值,如下图所示:

11

先看看这个 encrypt 方法,最终返回的是 ik,瞧瞧这熟悉的 ivparse,一看就是 AES、DES 之类的,试一下就知道了,或者跟进 lt.a.encrypt() 看看他的源码,对比一下标准算法里的源码,就可以发现是 AES,k 就很明显了,RSA 加密,公钥啥的一搜就有。

12

然后往上有个 yp_riddler_id,貌似是从 cookie 中拿的,直接搜索这个关键字,可以找到其设置值的地方,就是一个 UUID,其中有个 window.performance.now() 方法,其作用是返回一个当前页面执行的时间的时间戳,用来精确计算程序执行时间,在 node 实现方法如下:

var perf = require('perf_hooks');

performance = perf.performance.now()
console.log(performance);

13

14

然后再往上有个 e.fp = this.fingerprint,这里用到的应该是一个指纹库:https://github.com/fingerprintjs/fingerprintjs ,感兴趣的可以了解一下,同一个浏览器得到的指纹是一样的,这里固定即可。

15

然后就是 r 的值,preAdd 方法,直接扣就行了

16

17

然后这个 e 的值,再传到 jsonpRequest 之前就已经有一些值了,所以我们还得往前跟栈看看:

18

来到 getCaptcha 这里,没啥特别的,扣就完事儿了,其中有个 browserInfo 是浏览器的一些东西,copy 下来就行了。

19

验证接口

验证接口最后也是走的 jsonpRequest,和前面的获取图片接口类似,不同之处就是传入的 e 里面包含的值不一样,先来看看滑块:

20

包含 distanceXpoints,很明显 points 就是轨迹了,再往前跟看看,如下图所示,我们只需要 ir 参数就行了,参数是一些图片高宽,固定就行,offsetX 是滑动的距离。

21

主要看看这个轨迹 i = this.reducePoints(),跟进 reducePoints() 方法里,this.position 是轨迹信息,这个方法对轨迹做了一些处理再返回的,直接把逻辑扣下来即可。

22

滑块就到这儿了,再来看看点选验证,同样的还是 jsonpRequest,传入的 e 包含了三个点的坐标。

23

同样往上跟栈,这里的 this.position 才是真实坐标,后面每个坐标分别对 x 和 y 与图片的宽和高进行相除,如下图所示:

24

结果验证

25

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

30岁了想转行学Python,来得及吗?

是否来得及要看决心有多大,行动力有多强。一般来说,只要目标明确,足够自律,心理强大,做任何事情都是来得及的,当下就是最好的开始。30岁真的不算啥,有人四五十岁才开始奋斗,依然能过…

C语言之内存管理(十七)(转世灵童现世)

上一篇: C语言入门篇之轮回法器(十六)(指针第五卷) 逐梦编程,让中华屹立世界之巅。 简单的事情重复做,重复的事情用心做,用心的事情坚持做; 文章目录前言一、内存管理具体介绍1.作用域2.生命周期的定义3.局…

为什么说学人工智能一定要学Python?

有很多人在问博主,为什么人工智能学习要用Python?运行速度慢不好之类的,今天就让博主谈谈自己的感受。 先来说说前景 随着“大数据”“云计算”“人工智能”等等科技的兴起,IT行业在今后三到五年将会迎来一个高速发展期。这也就意…

QT调用python传递图像和二维数组,并接受python返回值(图像)

任务目的: 用QT调用python代码,将QT读取的图像(Mat矩阵)作为参数传入python中,将QT的二维数组作为参数传递给python,python接收QT传入的图像进行计算,将结果返回给QT。 实现过程 1.新建QT项目 说明:QT的…

[Cortex-M3]-5-cache uncache

目录 1 cache的引入 2 cache的工作原理 3 cache使用限制 1 cache的引入 程序运行的流程(很简单): 程序编译:存放在flash;程序加载:程序加载到内存;程序运行:指令从内存复制到CP…

【产品人卫朋】自媒体运营的5个阶段,以及增长策略

本篇内容以微信公众号为例讲解自媒体的运营策略。 建立一个快速发展的微信公众号,需要多长时间呢? 有些人在一年内就可以建立一个蓬勃发展的公众号,而其他人则可能需要两年、三年甚至是五年的时间。 在发展的过程中,你的公众号将经…

阿里工程师告诉你,0基础如何自学python进大厂

大概一年前这个朋友就想学习Python了,但因为工作比较忙,而且觉得Python肯定不太好学,所以一直搁置在那里。 宅家学Python 到了今年1月28日也就是大年初三的时候,眼看新冠肺炎疫情不会短时间结束了,全国各地都在严控&…

原型模式

开始原型模式前,我们要知道深拷贝的定义,因为原型模式中的克隆操作核心就是深拷贝。 深拷贝和浅拷贝 下图为浅拷贝(即是编译器的默认版本), 只拷贝了指针, 两个指针同时指向一个内存, 会有危险(a改变时b也改变, 称为别名) , 导致内存泄漏 调用strcpy复…

Qt扫盲-QTreeWidget理论总结

QTreeWidget理论总结1. 简述2. QTreeWidgetItem 简述3. 头标签4. 常用功能5. 槽函数6. 信号1. 简述 QTreeWidget 类是Qt提供了一个标准的树部件,该部件具有经典的基于 Item 的界面,每个Item都是一个 QTreeWidgetItem。这个标准的树控件不需要model/view…

文科女进德国IBM实习做程序媛,我是怎么办到的?

很快我在IBM德国区实习的第一个月就要结束了。 作为一个土生土长的文科生(硕士语言学、本科语言学商科),现在竟在欧洲混入跨国科技公司做编程技术类实习生,我自己也挺意外的。 尽管只是一点点微不足道的个人经历,此时…

教你如何优雅的转行Python程序员,一学就会

在实际的工作中,我们经常发现,很多朋友在某一个工作中做了一段时间,发现自己越做越没兴趣,越做越不开心,想跳不敢跳,想辞不敢辞,最后影响了自己的本职工作,陷入两难的窘境。 其实&am…

【Qbot】3.加入内容审核功能

该项目计划长期进行维护更新,欢迎star:https://github.com/zstar1003/Qbot 前言 在ChatGPT上线Q群不久,不少人对其进行了测试,但随着时间的延续,测试话题逐渐走向失控,迫使我不得不紧急暂停。 对同胞素质的…

【Python百日进阶-数据分析】Day134 - plotly饼图:go.pie()实例

文章目录4.2 go.Pie() 的基本饼图4.2.1 基本饼图4.2.2 样式饼图4.2.3 使用 uniformtext 控制文本字体大小4.2.4 控制饼图中的文本方向4.2.5 甜甜圈图4.2.6 从中心拉出扇区4.2.7 子图中的饼图4.2.8 自定义颜色集的子图4.2.9 绘制面积与总计数成比例的图表4.2.10 旭日图4.2.11 Da…

电脑软件、微信多开

因为办公需要在电脑上登录 2 个微信,但是直接双击微信图标只有 1 个登录界面,无法是现实登录 2 个微信。那么怎么才能在 1 个电脑上打开 2 个微信,方法有四种:1、安装;2、Enter;3、连续点击;4、…

『 canvas 特效』一文教你绘制绚丽的星空背景 TS + ES6

介绍 很久没有写关于 canvas 效果的文章了,刚好最近又学到了一个新的特效,使用 canvas 绘制多层次动态星空背景,今天就分享给大家。首先我们依旧来看一下最终实现的效果,如图所示: 由于录制 GIF 造成失帧,…

实战三十三:STAMP算法实现商品推荐实战 代码+数据

1.案例知识点 推荐系统任务描述:通过用户的历史行为(比如浏览记录、购买记录等等)准确的预测出用户未来的行为;好的推荐系统不仅如此,而且能够拓展用户的视野,帮助他们发现可能感兴趣的却不容易发现的item;同时将埋没在长尾中的好商品推荐给可能感兴趣的用户。STAMP推荐…

记录Win7系统下的node版本升级过程及后续项目启动所遇问题

目录 Windows7系统如何“安装”高版本Node 后续项目运行启动时遇到的问题 Bug : 背景 : 银行内网开发,接到一个新的项目开发,但前提因为开发所使用的云桌面更换了,由原来的Windows10系统降到了现在的Windows7系统&am…

【自媒体必备】AI文字转语音,支持多种人声选择,在线生成一键导出【电脑永久版】

AI文字转语音,支持多种人声选择,在线生成一键导出 软件是电脑版安装版本,大家根据自己安软件的习惯进行安装即可,安装后打开软件即可,且完全免费。语音选择方面就有晓晓、云扬、云希等等常用选择。点击后面的播放按钮…

腾讯大佬告诉你,写Python到底用什么IDE合适

不管你是 Python 新手还是老鸟,肯定纠结过一个问题: 到底用什么编辑器写 Python 代码好? 为此,我们调查了数十位鹅厂程序猿们爱用的 Python IDE,从他们对每款编辑器的看法中,也许能给你一点启示&#xff1…

我对程序员做副业有这几点建议

疫情这几年,“副业”的概念非常火。各大平台上都在说“副业赚钱”、“副业是刚需”等相关的内容、视频,有免费的,还有付费观看的。 其实在2020年疫情之前,大家对于“副业”并没有很关心。 从百度指数上可以明显看出,…