关于python:验证码逆向专栏某片滑块点选验证码逆向分析

20次阅读

共计 1852 个字符,预计需要花费 5 分钟才能阅读完成。

申明

本文章中所有内容仅供学习交换应用,不用于其余任何目标,不提供残缺代码,抓包内容、敏感网址、数据接口等均已做脱敏解决,严禁用于商业用途和非法用处,否则由此产生的所有结果均与作者无关!

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

逆向指标

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

抓包剖析

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

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

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

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

逆向剖析

图片接口

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

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

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

a 的值是通过 encrypt(e) 失去的,e 外面有 fpaddressyp_riddler_id 等值,如下图所示:

先看看这个 encrypt 办法,最终返回的是 ik,瞧瞧这相熟的 ivparse,一看就是 AES、DES 之类的,试一下就晓得了,或者跟进 lt.a.encrypt() 看看他的源码,比照一下规范算法里的源码,就能够发现是 AES,k 就很显著了,RSA 加密,公钥啥的一搜就有。

而后往上有个 yp_riddler_id,貌似是从 cookie 中拿的,间接搜寻这个关键字,能够找到其设置值的中央,就是一个 UUID,其中有个 window.performance.now() 办法,其作用是返回一个以后页面执行的工夫的工夫戳,用来准确计算程序执行工夫,在 node 实现办法如下:

var perf = require('perf_hooks');

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

而后再往上有个 e.fp = this.fingerprint,这里用到的应该是一个指纹库:https://github.com/fingerprin…,感兴趣的能够理解一下,同一个浏览器失去的指纹是一样的,这里固定即可。

而后就是 r 的值,preAdd 办法,间接扣就行了

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

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

验证接口

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

蕴含 distanceXpoints,很显著 points 就是轨迹了,再往前跟看看,如下图所示,咱们只须要 ir 参数就行了,参数是一些图片高宽,固定就行,offsetX 是滑动的间隔。

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

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

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

后果验证

正文完
 0