第一次发布文章,记录一下自己碰到yandexcloud的kaleidoscope的验证码逆向过程,文章格式杂乱,请大家体谅!
提示!本文章仅供学习交流,严禁用于非法用途,文章如有不当可联系本人删除!
目录
序言
先贴验证码图片,原理:通过滑动,变动小图,使其还原为一张完整的图片
一、查找接口
1、首先会初始化一次请求,得到对应的captcha的key和prefix等关键参数
这里实例网站,我直接过滤的check可以看到对应的接口
其中sitekey在请求的html中获取,就不多描述,可以搜索关键词
2、第二次请求,获取图片url等关键参数
携带的请求,都是通过base64编码的,比较简单
rdata为:浏览器指纹等,通过_getFingerprint生成,key为:第一次请求得到的,picasso为:通过_getPicasso生成,最后的tdata为坐标等信息,就看网站检测严不严了。
pdata为:需要通过这个js进行加密还原,直接扣代码就可以得到,涉及到第一次请求的prefix,complexity
得到的结果:
其中image就不多说了,图片url,这里的task是还原图片的关键
二、图片还原
图片还原还是比较简单的,用opencv就可以,简单说一下我的思路:将图片分为25小块(看图片的)生成对应的序号数组,然后通过排列组合,得到对应的图片,然后检测图片的特征(计算相邻小图拼接区域的边缘对比度)直接取最小值的序号就行。关键点在于这里的排列组合是跟上面请求的task相关的
三、结果验证
也是最后一次请求,这次携带的参数只需变动pdata(生成和上面的一样),key(第二次请求的key),以及新增rep(滑动结果)
结果图:
四、结论
总的来说这个验证码还是比较简单的,也是突然心血来潮想记录一下,就写了这篇文章,不足之处也希望各位大佬提出建议,嘿嘿。后面碰到其他的验证码或者其他难点也会记录一下