【验证码逆向专栏】某验四代五子棋、消消乐验证码逆向分析

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除!

逆向目标

  • 目标:某验四代消消乐、五子棋验证码,w 参数逆向及算法分析

  • 行为验证 4.0 demo:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v

  • 加密算法:RSA、AES、MD5

通讯流程

01

消消乐流程分析

02

进入网页后,F12 进行抓包,选择消消乐验证码,抓包到 load 接口:

03
  • captcha_id:验证码 id,固定值,四代滑块文章中有讲;
  • challenge:动态变化,由 gtc4.js 文件生成,四代滑块文章中有讲;
  • client_type:web 端;
  • risk_type:验证码类型,例如滑块为 slide,无感为 ai,消消乐为 match;
  • lang:语言;
  • callback:回调参数,geetest_ + 时间戳。

响应预览中返回的关键内容如下:

04
  • captcha_type:验证码类型;
  • gct_path:gct4 文件路径;
  • lot_number:生成 pow_msg、w 的关键参数;
  • payload:verify 请求参数;
  • datetime:ISO 8601 扩展格式的日期,生成 pow_msg 的关键参数;
  • process_token:verify 请求参数;
  • ques:消消乐矩阵(3x3),每个数字代表一种颜色,将三个相同数字换到同一列或同一行即可通过。

点击验证按钮,弹出消消乐验证码,移动图案之后,抓包到 verify 校验接口:

05
  • captcha_id:与 load 请求头中的 captcha_id 一致;
  • client_type:web 端;
  • lot_number:load 响应返回;
  • risk_type:验证码类型;
  • payload:load 响应返回;
  • process_token:load 响应返回;
  • payload_protocol:1;
  • pt:1;
  • w:加密参数,由轨迹、passtime、userresponse 等参数加密得到;
  • callback:回调参数,geetest_ + 时间戳。

响应预览中返回的内容如下,result 值为 success 即校验通过,fail 即校验失败,携带 seccode 下的五个参数请求 login 接口,即可登录成功:

06

逆向分析

w 参数

四代的基本流程都是差不多的,直接搜索特征值 "\u0077" 即可定位到 w 参数生成的位置,先全局搜索 "\u0077",找到对应的 js 文件,点击进去格式化后,再 ctrl + f 局部搜索定位关键位置:

07

在第 6251 行打下断点,移动图案即会断住,rw 参数的值:

08

跟进 r 生成的位置,其定义在第 6237 行,可以看到加密方式与四代滑块是一样的:

var r = (0,d.default)(f.default.stringify(e), i)

唯一不同的就是 e 中参数值的构成,以下是四代滑块与消消乐的对比:

09

可以看到不同点在于四代滑块 e 中参数包括 setLeft(缺口距离)、track(滑动轨迹),自然消消乐是没有的,userresponse 在滑块中是数值计算,而消消乐中是交换的两个图片的坐标,举个例子:

10

上图中的验证码,接口返回的 ques 值为:

ques = [
    [0, 1, 0], 
    [1, 3, 3], 
    [1, 0, 1]
]

ques[0]ques[1]ques[2] 分别对应验证码的第0列、第1列、第2列,注意是列,不是行!而我们只需要关心 ques 数组里的交换即可,正确应该交换第0行第1列和第0行第0列,那么 userresponse 的值应该为:[[0, 1], [0, 0]]

其他参数值的生成都是一样的方式,具体可以阅读 K 哥往期文章《【验证码逆向专栏】某验四代滑块验证码逆向分析》,这里就不再重复写了。

消消乐结果验证

只要 JS 和交换的坐标没问题,成功率就为 100%。

11

五子棋流程分析

12

五子棋的流程跟消消乐一样,进入网页后,F12 进行抓包,选择五子棋验证码,抓包到 load 接口:

13
  • captcha_id:验证码 id,固定值,四代滑块文章中有讲;
  • challenge:动态变化,由 gtc4.js 文件生成,四代滑块文章中有讲;
  • client_type:web 端;
  • risk_type:验证码类型,例如滑块为 slide,无感为 ai,五子棋为 winlinze;
  • lang:语言;
  • callback:回调参数,geetest_ + 时间戳。

响应预览中返回的关键内容如下:

14
  • captcha_type:验证码类型;
  • gct_path:gct4 文件路径;
  • lot_number:生成 pow_msg、w 的关键参数;
  • payload:verify 请求参数;
  • datetime:ISO 8601 扩展格式的日期,生成 pow_msg 的关键参数;
  • process_token:verify 请求参数;
  • ques:五子棋矩阵(5x5),每个数字代表一种颜色,0 表示空位,将五个相同数字换到同一列、同一行或对角线上即可通过。

其他的与消消乐是一样的,e 参数如下,其中 userresponse 就是需要交换的两个棋子的坐标:

15

五子棋结果验证

同样的,只要 JS 和交换的坐标没问题,成功率就为 100%。

16

五子棋和消消乐算法

以下是消消乐和五子棋坐标交换的 Python 算法,注意是交换坐标的算法哟,不是全部的代码哈,消消乐大概30来行,五子棋大概60来行,还是很简单的,有需要的可以去k哥爬虫公众号看看。

【验证码逆向专栏】某验四代五子棋、消消乐验证码逆向分析

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容