周一,在清晨的阳光照耀下,逆向山脚下的小镇宁静而安详。居民们忙碌地开始一天的生活,而在爬虫镇子的边缘,一座古朴的道观显得格外神秘。
阿羊正静静地坐在青石长凳上,摸鱼养神。突然,一道清脆的声音在他耳边响起:“羊,有任务传下来了。”
他微微睁开双眼,站起身来。一位道童递来一枚闪烁着淡蓝光芒的玉牌,上面刻着一道base64的密文
aHR0cHM6Ly93d3cuaXNodW1laS5jb20vdHJpYWwvY2FwdGNoYS5odG1s
阿羊接过玉牌,心中一动。这气息,数美滑块!?这个任务似乎充满了未知的挑战和机遇。
读取了上面的地址,突然,一阵神秘的机关符文从玉牌上跃然而起,是一个滑块验证
https://captcha1.fengkongcloud.cn/ca/v1/register?
翻开背面一道禁制赫然眼前,想必这就是展示滑块机关的地方,一番探查。原来其余参数都是假的唯独这个captchaUuid是解开禁制的关键
展开神识搜索:captchaUuid,直接发现了 getCaptchaUuid ? !
取出代码,挨个取出替换
def gen_captcha_uuid():total_string = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678"part = "".join([random.choice(total_string) for _ in range(18)])ctime = datetime.datetime.now().strftime("%Y%m%d%H%M%S")captcha_uuid = f"{ctime}{part}"return captcha_uuid
原来如此,是时间加上随机数,带上captcha_uuid,发出请求,ok成功返回
阿羊继续研究,既然怎么展示机关知道了,那么怎么通过机关呢,尝试滑动一下
https://captcha1.fengkongcloud.cn/ca/v2/fverify?
看来就是就是轨迹的校验了,一眼看去密密麻麻的参数
阿羊知道,但凡滑块,必然就是肯定有一个轨迹,再与其他或是配合浏览器指纹,或是随机一些字符串拼接,再加密炼制而成
多滑几次,原来只有je,mu,ww三个参数变动
点卡一看密密麻麻的混淆和控制流,不多说使用v神插件ast还原一下本地替换。
然后刷新一下,点堆栈一进去的地方断点,全局搜‘getEncryptContent’
je,mu,ww都在这
_.je = this.getEncryptContent(v / d, '5ea96022') _.mu = this.getEncryptContent(f, 'e7e1eb0d') _.ww = this.getEncryptContent(h - l, "17a94a08")
早有传闻数美是des,然后动态加密,看来动态的是被加密的参数,分别查看
mu是轨迹的加密
ww是结束时间-开始时间
je是 距离 / 宽度 保留17位小数
其他参数就是一些环境和默认值的加密。一起带上,配合上生成的轨迹,终于解开