首页
社区
课程
招聘
[原创]js逆向 ----验证码专题---百度曲线挂绳验证码(行为轨迹验证码)
发表于: 14小时前 188

[原创]js逆向 ----验证码专题---百度曲线挂绳验证码(行为轨迹验证码)

14小时前
188

d92K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2G2M7$3y4Z5K9h3&6S2i4K6u0W2L8X3g2@1i4K6u0r3K9r3!0E0k6g2)9J5c8X3I4G2k6$3W2F1i4K6y4r3k6$3!0@1L8#2)9#2k6Y4m8S2k6$3g2Q4x3@1c8Z5N6s2c8H3M7#2)9J5y4e0y4m8i4K6t1#2x3V1k6Q4x3U0f1J5c8Y4N6%4N6#2)9J5k6h3!0K6j5$3S2A6L8X3q4Q4x3X3g2F1k6i4c8Q4x3U0f1J5c8R3`.`.

OK  兄弟们  这一期 依旧  打开控制台   随便输入格式正确的手机号  


点击发送验证码  触发3个接口  

一共三个接口  

先看第一个接口   load 接口

cid拆解

cid —— 会话 ID(本次验证的唯一标识)

代码块

ci-02-a64d6c4ea101-b8d2562c-403132332e3133392e36312e3833-625f747261636b5f6d61746368-2353
  │     │         │         │                                  │                    │
  │     │         │         │                                  │                    └ 4位随机
  │     │         │         │                                  └ hex("b_track_match") = 类型编码
  │     │         │         └ hex("@不能展示这个就代表的是你的本机ip") = 客户端 IP
  │     │         └ 8位随机
  │     └ a101(版本/区域码)
  └ ci-02 前缀(固定

细致研究参数

master / standby —— CDN 主备域名,用来拼图片完整 URL

assets.js / assets.css —— SDK 文件路径,拼上 master 就是完整地址

passak —— 与请求里的 ak 相同,是「通行密钥」的回显(用于第二步校验)

code: 0 —— 成功;非 0 就失败了

log_id —— 服务端日志 ID,排查问题用

ctype: 验证码的类型  这是行为轨迹验证码  意思是:采集并校验用户的鼠标/触摸轨迹数据,判断是否真人。




下来先看第二个接口   我是先粗略把,每一个接口看一遍   在进行细分 看看哪个数据 是加密的  

经过我的调试分析  得出来 img 接口  这个三个字段的含义

{
    "data": {
        "bid": "bi-01-0e506c4ea101-55f86af2-403132332e3133392e36312e383340625f747261636b5f6d617463684030-3333645f333034-600e",
        "enc_data": "4sOqoqnbXBd+gHtgd1cP3zmVt/QZp+fc1bW7ZYWzQJ6W5Rb+mnfxBMjKi1bkvJmwkqfECZGr8ufvHTcnzA4FJ489jW2a9myV9qWcGKPRstH17D4BwOPIPi1hqVb76RFD6ZvjapKau/ytbp0drPjyEMSv3GfE7L41rq93vuFfUfHFX1zEZMJS+gxE14iD7hzZqYtTAaKJ+yEY78LWc36mXBFLBxFWA2EcIkwxxhgIDUUmkW8T8x3MCju+QX7qHpMuYP8gUEpnoKiOsPT7xTtUt3mwFOtvdKxTWX9EIIF14A17nuq3o6TEot02Q+3jFQNLjBA1wqyjmo3Q8R5i3L8XHi90NlIq0CqjR0Fsc0aWY1N9rL2DQeCUaOR/6SGGm8b0do4heD+v3vIMoRZqcg5OsFmOTbH7m7/+6rBf88lquVY=",
        "r": "2096939700960874444"
    },
    "code": 0,
    "msg": "success",
    "log_id": "ba3daa17aab1fa6fb1ff85a07d880f04"
}


字段

含义

bid

本次挑战编号,verify 要带上

enc_data

加密的题目(图片 + 曲线数据)

r

10 位随机串,verify 原样回传

enc_data 长度会变:实测见过 320 / 400 / 536 / 640 字符 → 说明内容不是固定的图片,每次不同。



完整的思路理解:

服务端下发:  打乱的图 + pm(怎么还原)+ 曲线三参数

你要做的:

 ① 下载图 (master + imgUrl)

 ② 按 pm 重建完整图(还原出曲线)

 ③ 用 start/end/height 算贝塞尔曲线:

      P0 = start

      P1 = [10, height]     ← 控制点

      P2 = end

 ④ 生成「贴合这条曲线」的滑块轨迹

 ⑤ 加密提交


本质上 这三个接口  就只有 c 和enc_data 这两个加密字段


先打一个xhr  断点   触发验证码  

这东西 就是c  你要往前去跟栈 看看哪里是加密的地方  



你的直觉:先加密,再解密

实际情况(这个业务):

 ① load   → 拿任务

 ② img    → 拿题目(enc_data 是加密的)

 ③ 解密 enc_data  ← ★ 第一次出现

 ④ 画出拼图 + 曲线

 ⑤ 用户拖动

 ⑥ 生成轨迹

 ⑦ 加密轨迹 → c   ← ★ 第二次出现

 ⑧ 提交

在img 接口   插桩    

他这个插桩   你就是首页要主要, 位置  刷新的时候  不能有别的断点  刷新完之后 重新在走一遍验证码流程

就有了


16位  基本上 要么是key  要么是IV  


详细插桩日志 在vscode里

往后 分析  明文发现变成哈希值  需要看一下  是什么加密 得定位到    


通过明文那个方法  进去 判断出是哈希算法  往上搂是有window.crypto  


在这一块是有  substring 操作 也就是  切割16位


往下继续跟栈  你需要解密操作了  

enc_data 成功解密


下期继续 轨迹还原   



传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

收藏
点赞 ・0
打赏
分享
最新回复 (1)
雪    币: 110
活跃值: (9616)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2 楼
test
54分钟前
0
游客
登录 | 注册 方可回帖
返回