【JavaScript 逆向】数美滑块逆向分析

声明

本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!

案例目标

验证码:aHR0cHM6Ly93d3cuaXNodW1laS5jb20vbmV3L3Byb2R1Y3QvdHcvY29kZQ==

以上均做了脱敏处理,Base64 编码及解码方式:

import base64
# 编码
# result = base64.b64encode('待编码字符串'.encode('utf-8'))
# 解码
result = base64.b64decode('待解码字符串'.encode('utf-8'))
print(result)

案例分析

抓包

register 接口获取图片链接,请求参数中的 captchaUuid、organization 是动态变化的,需要扣出来:

响应返回滑块和背景图片的 url、rid 等参数的值:

滑动滑块后,抓包到 fverify 接口,请求参数中红框框出来的经过魔改的 DES 加密得到的,变量名即 key 值每周更新,需要通过 AST 匹配出来,rid 是 register 接口返回的:

通过riskLevel 的值即位 PASS,未通过则为 REJECT:

逆向分析

从 fverify 中跟栈进去:

向上跟栈到 _0x37a3a7 中,可以看到,此时那些加密参数的值已经生成了:

接着向上跟栈,np、id、zp、pf 为定值,加密方法皆为 this['getEncryptContent']:

跟进去,case 1 为检测点,如果格式化或者用 AST 解混淆后替换了 JS 则会被赋值为 1679801607548.209ishumei.com:

case 8 为 DES 加密,不是标准的,需要将算法扣出来,case 7 为 base64加密,也就是 DES 加密后再经过 base64 加密得到的结果:

其他的参数加密方式也都一样,传的第二个参数为 key 值,变量名即 key 值每周变化:

ru 为缺口距离,图片存在缩放,ep 为轨迹,ug 为滑动时间,其他的就是图片比例、language 等等:

captchaUuid:

结果验证

猜你喜欢

转载自blog.csdn.net/Yy_Rose/article/details/129767692