本期地址如下,使用base64解码获得网址
aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v
破解某验,某盾已经是司空见惯的事情了,网上也有很多资料查阅,但是大多数都是繁琐、冗长,本文以最直接快速理解的方法讲解,稍微认真一点看完文章,你至少能在半个小时内完成破解
本文大致步骤如下:找到加密位置,导出加密函数,略微补点环境,封装加密函数
注意:本文不需要解混淆,不需要扣代码,秉承快速破解,当然也不是RPC
1、找到加密位置
前置知识:某验的获取验证码不用多说,一个固定的id和一个随机的uuid,直接照着参数发送请求即可,在验证验证码的请求中,很多参数都能在获取验证码的响应结果中拿到,只有一个w参数需要破解, 这里直接跟栈,慢慢往上跟,找到w的生成位置如下
接着,我们分析一个这个r的加密流程
只有一个加密函数m.default,然后传入e和s进行加密,我们进去m.default里面看看
这里可以看到,传进来的s即为t,只用到了t.options,所以最终流程,我们只需要还原m.default函数,把加密参数e和s还原就行
2、导出加密函数
我们直接把整段js放到本地,然后运行下, 发现报错,缺少window环境,我们照常补一下环境,经过多次补环境后,最终补的环境如下
然后我们找到m.default加密函数也就是那个r,然后赋给window变量,将其导出
注意:这里是一个取巧的办法
这样就导出完成了
3、封装加密函数
首先看代码,整体封装如下:
这里setleft是滑块距离参数,其余的变化的参数均在获取验证码的接口中可以获得,其中有一个md5的值需要自己计算,试运行这个函数,能得到正确的结果如下
长度都是一致的,接着,我们用Python实现请求接口
注意:经实测后,获得的准确的滑块距离需要再减去十几个像素,这是因为本身后端校验存在一个偏移量的问题,这个偏移量可能是前端中滑块的一个大小
最后,成功success