最新要闻
- 水里也能开!仰望U8核心系统支持IP68防水:可浮水行驶
- 百万级纯电性能超跑!比亚迪仰望U9来了:零百加速2秒级、电动蝴蝶门
- 对标比亚迪仰望U8 东风猛士M-Terrain官图发布:超级硬汉
- 时隔18年再出续篇!经典老片《神话》续集定名《传说》
- 144MB缓存性能无解!Zen4架构AMD锐龙9 7950X3D比酷睿i9-13900K快了52%
- 荣耀Magic 5系列镜头模组曝光:经典圆形设计、配100X长焦
- 每日观点:地表最快!realme宣布首发量产240W满级秒充:充满不到10分钟
- 李国庆称腾讯京东有大公司病 当当就是失败的案例
- 98年哥哥返乡给15个弟妹买一车礼物:塞满整个后备箱
- 荣耀MagicOS获新浪2022科技风云榜年度智能操作系统奖
- 锐龙9 6900HX加持!魔方M600迷你主机图赏
- 【世界报资讯】便宜还好用:绿联iPhone全系钢化膜冲量3.6元/张
- 世界速看:折叠屏我只认OPPO Find N2:安卓阵营独一无二
- 环球聚焦:宝马展示i Vision Dee概念汽车:可变换车身颜色 有科幻味了
- 全球视点!员工:不怕大家拿任何手机跟一加11比精致度和质感
- 天天快资讯丨天府可乐因破产传闻销量暴增 民族品牌不会轻易垮:请理性消费
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界热讯:【验证码逆向专栏】某验四代滑块验证码逆向分析
声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除!
逆向目标
- 目标:某验四代滑块验证码,w 参数逆向
- 主页:
aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v
- 加密算法:RSA、AES
通讯流程
验证码流程分析
进入网页后,打开开发者人员工具进行抓包,点击滑动拼图验证,此时还未点击按钮开始验证,抓到了一个名为 load?captcha_id=xxx
的包,Query String Parameters
包含了一些参数:
(资料图)
captcha_id
:验证码 id,固定值,由adaptive-captcha-demo.js
文件生成,后文分析;challenge
:动态变化,由gtc4.js
文件生成,后文分析;client_type
:表示 web 端;risk_type
:验证码类型,例如滑块为 slide,无感为 ai;lang
:语言;callback
:geetest_ + 时间戳,主要作用是防止缓存。
响应预览中返回的关键内容如下,相较于三代,底图未做混淆:
bg
:背景图片地址;captcha_type
:验证码类型;gct_path
:gct4 文件路径;lot_number
:后续生成 pow_msg、w 的关键参数;payload
:后续 verify 请求接口需要的参数;datetime
:ISO 8601扩展格式的日期,后续生成 pow_msg 的关键参数;process_token
:后续 verify 请求接口需要的参数;slice
:滑块图片地址。
点击按钮开始验证,弹出滑块验证码,滑动滑块,抓包到 verify?captcha_id=xxx
,Query String Parameters
同样包含了一些参数:
captcha_id
:与 load 接口请求头中的 captcha_id 一致;client_type
:表示 web 端;lot_number
:load 接口返回的;risk_type
:与 load 接口中的一致,表示验证码类型;payload
:load 接口返回的;process_token
:load 接口返回的;w
:加密参数,由轨迹、滑动时间、滑动距离、userresponse、device_id、pow_msg 等参数加密得到;callback
:geetest_ + 时间戳,主要作用是防止缓存。
响应预览中返回的内容如下,result 值为 fail 即校验失败,success 为校验通过,通过后携带 seccode 下的参数进行后续业务请求:
逆向分析
captcha_id 参数
全局搜索 captcha_id
,跟进到 gt4.js 文件中:
进去后在第 307 行打上断点,刷新页面即会断住,此时 captcha_id
参数的值已经生成,同时 challenge 参数定义在下一行:
向上跟栈到 value,即 adaptive-captcha-demo.js
文件中,会发现其是个固定值,实际上这个值是每个网站不一样,是管理员在极验后台申请得到的:
challenge 参数
前面提到,challenge
参数定义在 captcha_id
参数的下一行,在 gt4.js 文件的第 309 行打下断点:
可以看到,challenge 参数的值由 uuid
函数生成,扣出即可。
w 参数
从 verify?captcha_id=xxx
接口的堆栈处跟栈进去:
打下断点滑动滑块断住后,向上跟栈到 s 处,如果做过某验三代滑块的话,第 6249 行有个很熟悉的东西,"\u0077": r
,"\u0077"
即字母 w 的 Unicode 值,r 即 w 参数的值:
r 参数定义在第 6237 行,e 也是跟三代类似的参数,r 是将 i 参数和转为字符串的 e 参数加密得到的:
向上跟栈,找到 e 参数中各部分定义生成的位置,跟到 $_BHIH
中,_ 中先生成了四个键值对:
passtime
和 track
是熟悉的滑动时间和轨迹,setLeft
为识别出来的缺口距离,userresponse
定义在 19593 行, a 为 setLeft
参数的值,t[$_GDFCG(1909)]
为定值 1.0059466666666665:
a / t[$_GDFCG(1909)] + 2
接着跟到 $_BCFj
中,e 定义在第 6201 行,下面几行定义了 e 中的 device_id
、lot_number
、pow_msg
、pow_sign
:
device_id
同一个网站是固定值,lot_number
是 load 响应返回的,控制台打印一下 pow_msg
、pow_sign
的结果:
pow_msg
很明显是由几部分组成的,pow_sign
经过加密,向上跟栈到 init 中,分别定义在第 5837 行和第 5838 行,为 d 字典的键,根据键名取值:
d 定义在第 5835 行,这部分还原一下就很明显了:
var c = t["toDataURL"]()["replace"]("data:image/png;base64,", ""), _ = new w["default"]["MD5"]()["hex"](c);a["options"]["deviceId"] = _;var h = a["options"], l = h["powDetail"], p = h["lotNumber"], f = h["captchaId"], d = v["default"](p, f, l["hashfunc"], l["version"], l["bits"], l["datetime"], "")
跟进到 v["default"]
中,函数定义在第 6945 行,于 6978 行打下断点:
pow_msg
由 _ + h
得到,_
定义在第 6960 行:
_ = i + "|" + r + "|" + n + "|" + s + "|" + t + "|" + e + "|" + o + "|";
- i:
l["version"]
- r:
l["bits"]
- n:
l["hashfunc"]
- s:
l["datetime"]
- t:
f, h["captchaId"]
- e:
p, h["lotNumber"]
- o:
""
h 定义在第 6269 行,跟进去是 16 位随机数字符串,pow_sign
为 p,就是 pow_msg
经过 MD5 加密得到的:
至此这四个也分析完了,还差以下这部分:
em 等定值就不分析了,注意 kqg5:"1557244628"
,这个参数值和三代滑块中一样,每隔几个小时会改变,向上跟栈到 $_BCFj
中,在第 6207 行打下断点,此时 e 中这个值还未生成:
下一行打下断点,下步断点,即执行完 n[$_CBHIE(791)](e);
后,这个参数值就生成了,证明是 n[$_CBHIE(791)]
方法生成的,跟进去:
跳转到第 5766 行,在第 5779 行打下断点,此时的 n 中还未生成此参数:
执行了 _gct(n)
后即生成:
可见其生成位置在 _gct
方法中,跟进去后到 gct4.js 文件,和三代大差不差:
可以将值导出,至此 e 就分析完了,接着回到第 6238 行,跟进到加密函数 d[$_CBHHO(84)]
中,定义在第 11669 行,d[$_DIEHS(177)](c) + u
即 r 参数的值,c 为一个大数组,u 明显也经过加密了,所以 r 参数的值就是数组 c 加密后再加上 u 得到的:
先跟进到 u,其定义在第 11705 行,解混淆后如下:
u = new l["default"]()["encrypt"](i);
所以 u 是 i 经过加密后得到的,i 定义在第 11702 行:
i = (0,d[$_DIEIq(103)])()
跟进到 d[$_DIEIq(103)]
中,定义在第 852 行,又是熟悉的 16 位随机数:
i 是随机数,跟进到加密函数 l[($_DIEHS(84))]
中,在第 12725 行,于 12741 行打下断点,可以看到这里就是个 RSA 加密,扣代码或者直接引库即可:
回到 c 参数,c 参数的值为一个大数组,其定义在第 11705 行,解混淆后内容如下:
var c = s[a]["symmetrical"]["encrypt"](e, i);
e 之前分析完了,i 为随机数,两个参数已经分析完了,跟进到加密方法中,在第 12174 行,于 12186 行打下断点,控制台打印一下混淆部分内容,很熟悉的东西,这里就是 AES 加密,iv 为初始向量,加密模式为 CBC,对各类加密算法不熟悉的,可以阅读 K 哥文章 【爬虫知识】爬虫常见加密解密算法:
c 参数最后又被 d[$_DIEHS(177)]
函数加密,跟进后,定义在第 547 行,直接扣下来改改即可:
结果验证
世界热讯:【验证码逆向专栏】某验四代滑块验证码逆向分析
世界讯息:Dubbo 3 端口协议复用
水里也能开!仰望U8核心系统支持IP68防水:可浮水行驶
百万级纯电性能超跑!比亚迪仰望U9来了:零百加速2秒级、电动蝴蝶门
对标比亚迪仰望U8 东风猛士M-Terrain官图发布:超级硬汉
时隔18年再出续篇!经典老片《神话》续集定名《传说》
144MB缓存性能无解!Zen4架构AMD锐龙9 7950X3D比酷睿i9-13900K快了52%
每日快看:浅谈多项式与生成函数
hive调优之参数设置
如何接入畅联云平台管理物联网设备?
【速看料】IM通讯协议专题学习(七):手把手教你如何在NodeJS中从零使用Protobuf
荣耀Magic 5系列镜头模组曝光:经典圆形设计、配100X长焦
每日观点:地表最快!realme宣布首发量产240W满级秒充:充满不到10分钟
李国庆称腾讯京东有大公司病 当当就是失败的案例
98年哥哥返乡给15个弟妹买一车礼物:塞满整个后备箱
荣耀MagicOS获新浪2022科技风云榜年度智能操作系统奖
统计B站番剧真实评分
基础可视化图表之分组条形图
锐龙9 6900HX加持!魔方M600迷你主机图赏
【世界报资讯】便宜还好用:绿联iPhone全系钢化膜冲量3.6元/张
世界速看:折叠屏我只认OPPO Find N2:安卓阵营独一无二
环球聚焦:宝马展示i Vision Dee概念汽车:可变换车身颜色 有科幻味了
全球视点!员工:不怕大家拿任何手机跟一加11比精致度和质感
天天消息!RHEL/CentOS yum 源问题
记 对接拼多多官方代报 辽宁电子口岸联达通客户端 ic卡加签版
天天视讯!透过现象看本质,我找到了Netty粘包与半包的这几种解决方案。
天天快资讯丨天府可乐因破产传闻销量暴增 民族品牌不会轻易垮:请理性消费
144MB暴力缓存!AMD锐龙7000 3D缓存版杀来:16核心神奇120W
马斯克最“惨” 福布斯:2022年美国亿万富翁身价创纪录暴跌
全球即时看!独立包装、现货速发:掌护快速检测试剂盒2.9元/份
世界微头条丨李斌发蔚来全员信:列举8大问题 有同行比我们更出色
全球热议:比亚迪宋PLUS上月热销50006台:接棒哈弗H6成新一代神车
环球速看:从菜鸟到团队协同大神:产品经理工具技能修炼
当前聚焦:DTALK直播预约 | 金融行业嘉宾分享:金融机构数据治理实践路径
视焦点讯!ZooKeeper 避坑实践:SnapCount 设置不合理导致磁盘爆满,服务不可用
一纸死亡威胁:让安卓最良心的PS2模拟器凉凉了
世界讯息:年底发福利 马自达推出全系购车优惠:CX-5置换1万补贴
环球头条:AMD正式发布锐龙7000三款新U:一键能效暴涨47%!就看价格了
微动态丨增程混动加持 Aska A5飞行汽车首发亮相:配降落伞、可垂直起降
最新资讯:AMD锐龙7000降临笔记本:4种CPU/3种GPU/4种工艺 性能最高提升78%!
环球热头条丨索尼《GT赛车》真人电影!《头号赛车手》先导预告发布:8月上映
全球动态:确定了!漫威新片《黑豹2》2月1号正式上线流媒体
不减薪、工作5小时下班!实探“四天半工作制”乐视:比预想的还好
天天新资讯:《阿凡达1/2》仅是开胃菜?卡梅隆:好戏在后面
当前视讯!元旦就“入夏”?极端暖冬席卷欧洲:至少7国破气温记录
快看点丨修改NuGet包默认存放位置
环球快消息!AcWing1174. 受欢迎的牛
当前信息:苹果砍单立讯精密最受伤?官方回应:与客户合作正常
环球热讯:iPhone 15 Pro/Ultra升级!钛合金边框+8GB内存
天天视讯!内存暴跌4成 现在不买待何时?
iPhone 14 Pro全天候显示屏有多费电?实测每小时不到1%
环球今热点:今日发布 比亚迪仰望首款硬派越野车内饰谍照:百万级豪华
『JNPF』低代码创新赋能数字经济建设
【环球新视野】iPhone一直收集用户数据!隐私捍卫者苹果被法国重罚:我们不服
微信红包升级!全新动态红包封面上线
司机免费代驾870公里送卡友回家 获5千元正能量奖金:这魄力网友点赞
天天快看点丨《阿凡达2》 已经被“烂片之王”翻拍了:豆瓣居然全5星
神U换代 AMD Zen4架构锐龙7 7800X3D来了:游戏性能提升30%
微信支付--JSAPI支付(微信小程序和微信公众号支付都可以采用该方式)
13+3相豪华供电!影驰RTX 4070 Ti星曜OC显卡图赏
女子跨年夜中1000万后悔跟孩子说 他们说不奋斗了引网友热议:这能躺平?
环球热议:乘联会:预计2022年乘用车销量2070万辆 今年或0增长
存款贬值了快一半 土耳其人把游戏当成了救命稻草
每周只上班4天半!乐视居然成了"反卷斗士":真是神仙日子吗?
一本通动态规划篇解题报告
当前视讯!Python的保留字、标识符、变量的定义、常用数据类型、数据类型转换
砍单三大产品线 苹果市值跌破2万亿美元 富士康表态
世界热点评!抄底吗?知名投资人段永平:已将手上腾讯美股换成苹果
天天观速讯丨二次元外观下带来澎湃性能!铭瑄MS RTX 4070 Ti OC12G璦珈评测:最强192bit显卡非它莫属
10升好身材!ROG发布冰刃X迷你机:居然有没发布的RTX 4070
金庸最成功的作品 来源自历史上让人耻辱的失败
焦点要闻:500吨级!中国最强液体火箭发动机的“家”快建好了
世界信息:CF13C. Sequence
看点:设计模式简单介绍
胡伟武:Linux桌面软件生态是x86和ARM“软肋” 龙芯希望一两年后全面超过
丰田总裁再度质疑电动汽车:这会让车企降低价值!
每日资讯:RTX 4090加持:ROG发布新款XG Mobile显卡坞
即时:三星发布全球首款8K 150寸投影仪:离墙几毫米即可完成投射
焦点热文:画面太美!男子意外发现交通卡余额有172万 官方回应真相无奈
天天速看:写给大忙人看的Go语言快速指南(中文翻译)
天天实时:[概率论与数理统计]笔记:2.2 随机变量的数字特征
Python:numpy模块最详细的教程
python3实现字符串的全排列的方法(无重复字符)两种解决方法
全球快播:python中可以处理word文档的模块:docx模块
环球即时看!宏碁发布eKinekt BD 3酷骑桌:工作之余还能骑动感单车
世界热讯:1.6亿美元是罚定了!印度法庭驳回谷歌推翻垄断案的请求
当前热点-17万元起真香!奇瑞最高颜值SUV星途瑶光盲订量已达6012台
环球热点评!2022广州车展压轴登场 这八款新能源新车千万不要错过
今头条!全新NT架构加持!腾讯QQ原生上架麒麟应用商店
天天微资讯!国产可乐为什么都在陆续消失?专家道出原因
哄娃神器 一公司推出可自动驾驶婴儿车:售价约2.2万人民币
画风有《魔兽》那味了:国产多端MMO《塔瑞斯世界》PV首曝
【环球热闻】男子一口气网购20个26元扫地机器人:场面壮观实测失望
男子为研究显卡到网吧一口气拿7块:网友调侃要都是4090赚大
环球微资讯!Float value issue in GLSL
【环球热闻】事件总线 + 函数计算构建云上最佳事件驱动架构应用
实时:C罗说世界杯唯一赢阿根廷的是沙特 这里是新挑战 不是养老
配大哥H9同款2.0T 国产豪华轿跑红旗H6官图发布:罕见中置双排气
全球热头条丨微软再次挑战谷歌:Bing或将推出ChatGPT AI版本
【全球时快讯】一加首次推出100W双口充电器:支持65W PD快充 首发229元