js逆向--百度滑块验证码

声明

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!由于本人水平有限,如有理解或者描述不准确的地方,还望各位大佬指教!!


在工作中遇到了百度的滑块,翻了下csdn以及公众号发现没人写,于是才有了这篇文章。

拼图滑块验证码:

aHR0cHM6Ly9zZWNjYXB0Y2hhLmJhaWR1LmNvbS92MS93ZWJhcGkvdmVyaW50L3N2Y3AuaHRtbD9haz1NN2JjZGgyazZ1cXRZVjVtaWFSaUk4bTh4NkxJYU9OcSZiYWNrdXJsPWh0dHBzJTNBJTJGJTJGd2Vua3UuYmFpZHUuY29tJTJGdmlldyUyRmRlNDAzNGZhNTE0ZGU1MTg5NjRiY2Y4NGI5ZDUyOGVhODFjNzJmZTMlM0Zfd2t0c18lM0QxNjkyMjYyOTY0MDU3JTI2c3ZjcF9zdGslM0QxXzJzbjF5ZUlSREtUVWh4UmJWNUhXSGNRb09WLTc3WTVPTzU5V0NkQk1TbERsaHBlOEhHdkw5VHJMQUkzWVJTQlphZ2tvTk8tOVBtY2JUcU8yUGU3R2xTVHloa3V0V3owaTMwMHl2dzJSQlRRQWRtMUVzNUxjdl81cVRNSzFoUWY2JTI2YmZldHlwZSUzRG5ldyZleHQ9WTR3eHdHdFoyUFBaTGlFTlljQ2s3eVVkTDFraFF1MjVYMDRCWWJuV2ZCMVVkdm5mRHRHOW5TR200MEFscWZtJTJGJnRzPTE2OTIyNjUwMjAmc2lnbj0yNDFhYmM3MDNkZGIwMTYzN2JjNTk4NTMyNmNhM2M5Yg==

无感滑块验证码:

aHR0cHM6Ly93ZW5rdS5iYWlkdS5jb20vd2t2Y29kZS5odG1s

 这个百度的无感还怪可爱的,好像超级无敌猪。

拼图滑块验证码

抓包流程分析

第一个init包,请求参数中ak是固定值,返回as、ds和tk,后续请求会用到。

 第二个包响应返回的参数中path就是底图和滑块的url,backstr是生成fs参数值的关键部分。

滑动滑块后,就会出现log包。其中有cv:submit才是提交的包,请求参数中fuid和fs是未知的,fs参数是由轨迹、滑动距离和back参数等加密生成的,fuid参数k哥的文章上说是浏览器指纹参数,不同浏览器的值不一致,相同浏览器的值短时间内不会改变,所以短时间内我们是可以写死的。fuid在fingerprint.js文件中生成,由 user-agent、canvas、plugins 等浏览器环境构成。

 为AES加密,加密模式为ECB,填充方式为 PKCS7,key 为固定值。

最后verify接口验证。

fs参数分析

直接全局搜索fs=,这是就是生成fs的关键位置。

 打下断点跟进去,有这个ac_c的值才是正确加密的参数。

 我们向上跟栈,可以定位到计算ac_c的位置。

继续往下,可以看到是AES加密,key是由getNewKey(params.as); 生成的,

 继续回到AES加密的地方,是ECB模式,填充方式为ZeroPadding。这里进行了两次加密,第一次是对轨迹和backstr组成的字符串进行加密,第二次加密内容{"common_en": 第一次加密的结果, "backstr": backstr}。至此fs分析完成。

 无感滑块验证码

抓包流程分析

第一个viewlog包,请求参数中ak是固定值,返回as、ds和tk,后续请求会用到。

第二个viewlog包,还是fs是加密的,其他是返回的,拿到新的ds和tk。

 第三个verifycodeproxy包,这是最后验证的包。

 fs参数分析

直接全局搜fs=,可以直接定位到加密的位置。

 加密的参数,ac_c为1就行,其他不检测。

 没啥好讲的,加密方式是AES,key是as+appsapi0,ECB模式,填充方式为Pkcs7。

踩坑问题

拼图还是无感,都没有校验轨迹,只校验了ac_c,轨迹写死或者不写都可以过,一开始我还在想这轨迹该怎么构造。。。

python的AES加密的ZeroPadding加密出来跟js的不一样,这个有大佬知道是为什么吗?

还有就是拼图滑块就算是返回op为1,也提示说是ParamsValueInvalid,看了k哥的文章说是通过的时间太短了,time.sleep(2.5)就好了。

{'data': {'pass': False, 'v': '1', 'stk': ''}, 'code': 62004, 'msg': 'ParamsValueInvalid'}

各位大佬觉得本文写的不错的话,可以一键四连哦。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值