前言

相较于三代滑块,四代的逻辑流程更简短,底图没混淆,某些点校验不严格

声明

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

案例目标

滑动验证码:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vYWRhcHRpdmUtY2FwdGNoYS1kZW1v

文件版本:gcaptcha4.js

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

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

案例分析

抓包

进入网页后,F12 打开开发者人员工具,抓包到的内容中,以下为关键部分:

  • 获取 adaptive-captcha-demo.js 文件

  • 获取 captchaId,固定值

  • 获取关键参数,请求中的 challenge 可在 gt4.js 文件中获取到

  • 滑动滑块,请求关键参数
  1. captcha_id:adaptive-captcha-demo.js 获取
  2. lot_number:load 获取
  3. payload:load 获取
  4. w:轨迹、滑块距离、滑动时间等加密
  5. callback:geetest_ + 时间戳
  • 滑动滑块,响应

w 参数逆向

与极验三相同,w 参数的加密位置还是特征值 "\u0077",直接 ctrl + shift + f 全局搜索即可找到位置,在 gcaptcha4.js 文件的第 6249 行,打下断点:

r 即为 w 参数值,其定义在第 6237 行:

var r = (0,d[$_CBHHO(84)])(f[$_CBHIE(84)][$_CBHHO(562)](e), i)var r = (0,d["default"])(f["default"]["stringify"](e), i)

就是对 e 和 i 进行加密后得到的,i 不用管,弄过极验三的应该很熟悉 e:

简单分析下 e,向上跟栈都能找到位置:

  • setLeft:滑块距离
  • track:轨迹
  • passtime:滑动时间
  • userresponse: setLeft 计算得到,向上跟栈
  • lot_number:load 获取
  • pow_msg:1|0|md5|datetime|device_id|lot_number||随机数
  • pow_sign:pow_msg MD5 加密
  • "zw9o":"1971499260":每天变化,影响不大,扣法可以看【JavaScript 逆向】极验四代无感验证码逆向分析

回到 w 参数,跟进到 d[$_CBHHO(84)] 中,跳转到第 11669 行,关键位置如下:

从 d[$_DIEIq(103)] 跟进去就会发现和极验三一样,i 为随机数,(0, d[$_DIEHS(177)])(c) + u 即 r 值:

从 l[($_DIEHS(84))] 跟进去,u 为 RSA 加密:

从 s[a][$_DIEIq(1403)][$_DIEHS(1498)] 跟进去,c 为 AES 加密,(0, d[$_DIEHS(177)])(c) 加密函数直接扣出来就行了:

结果验证

【JavaScript 逆向】极验四代滑块验证码逆向分析相关推荐

  1. 【验证码逆向专栏】某验“初代”滑块验证码逆向分析

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 本文章未经许可禁止转载,禁 ...

  2. 【JavaScript 逆向】极验四代无感验证码逆向分析

    前言 四代无感验证码相较于滑块验证码区别就是没有底图,一键通过模式,所以不需要轨迹以及计算缺口距离,步骤更少,四代滑块可以阅读:[JavaScript 逆向]极验四代滑块验证码逆向分析 声明 本文章中 ...

  3. 【JavaScript 逆向】极验三代无感验证码逆向分析

    相关文章 [JavaScript 逆向]极验三代滑块验证码逆向分析 [JavaScript 逆向]极验四代无感验证码逆向分析 [JavaScript 逆向]极验四代滑块验证码逆向分析 声明 本文章中所 ...

  4. 破解 geetest(极验)的滑块验证码

    转载自python3 破解 geetest(极验)的滑块验证码 from selenium import webdriver from selenium.webdriver.support.ui im ...

  5. python3 破解 geetest(极验)的滑块验证码

    转:https://www.cnblogs.com/shiluoliming/p/7611569.html Kernel_wu 快速学习的实践者 python3 破解 geetest(极验)的滑块验证 ...

  6. 【JavaScript 逆向】极验三代滑块验证码逆向分析

    声明 本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除! 案例目标 极验验证码 demo:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby8= ...

  7. js逆向验证码篇之极验4代

    提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除! 网站链接:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vYWRhcHRpdmUtY2FwdGNo ...

  8. 【验证码逆向专栏】某验三代滑块验证码逆向分析

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 本文章未经许可禁止转载,禁 ...

  9. 验证码破解:极验3.0滑动验证码破解最新俩种方法

    特点: 对于极验验证码3.0版本,我们首先点击按钮进行智能验证.如果验证不通过,则会弹出滑动的验证的窗口,拖动滑块拼合图像进行验证.之后三个加密参数会生成,通过表单提交到后台,后台还会进行一次验证. ...

最新文章

  1. concatMap操作符的作用
  2. Window 消息大全使用详解(无聊没事做)
  3. jq取第一个子元素为select_【转】jquery如何获取第一个或最后一个子元素?
  4. tensorflow框架
  5. js地址栏获取参数的方法,解决中文乱码问题,能支持中文参数
  6. .Net core下的配置设置(一)——Configuration
  7. java面相对象的关键字_Java面向对象关键字有哪些?
  8. mysql dbversion_爱可生详解MySQL|不能从MySQL 8.0 复制到 5.8?一招教你解决
  9. mac系统下快速安装windows软件 a_每日一款Mac软件之“Parallels Desktop 16.0.1(48919) Mac上最高效与好用的虚拟机工具”...
  10. mysql下载安装使用教程
  11. iOS逆向工程整理 HOOK微信抢红包
  12. IPC的标准是什么?
  13. android模拟器对比,哪个安卓模拟器好用 电脑玩手游助手模拟器权威对比
  14. web前端程序员到底值多少钱?
  15. tp3.2 生成条形码
  16. 怎么从SPSS的分析结果中得出回归方程?
  17. android 布局总结
  18. 这些专业的股票术语你都懂吗?进来看看最专业的股票术语汇总吧!
  19. Java虚拟机jvm和Java内存模型jmm浅尝
  20. influxdb常用命令、influxdb增删改查、SpringBoot整合influxdb

热门文章

  1. 在AD的PCB插入LOGO
  2. IE8与APPLE的safari浏览器
  3. POI数据库的广泛应用(全国商户数据、社区数据、学校数据、医院数据等POI服务)
  4. 【设计模式】| 修炼内功 | 23种设计模式——单例模式
  5. 最全的 Vue 性能优化指南,经典收藏
  6. Linux LVM在线扩容ext3文件系统
  7. 局域网实现pc间使用ftp传输文件
  8. C#预处理器指令之#define/#undefine/#if/#elif/#else/#endif
  9. vscode如何设置代码折行如何实现LaTeX边写边编译、实时更新
  10. 新解决方案销售之四:定义痛苦或关键业务问题