声明本文所有内容仅供学习交流,不作任何其他用途,不提供完整代码,抓包内容、敏感网站、数据接口等均已脱敏处理,严禁用于商业及非法用途,否则由此产生的一切后果与作者无关!本文未经许可禁止转载,修改后禁止二次传播。对于因未经授权使用本文所解释的技术而导致的任何事故,作者概不负责。如有侵权,请第一时间联系作者公众号【K爬虫哥】删除!Reversetargettarget:小小乐四代五子棋的验证码,w参数逆向及算法分析行为验证4.0demo:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v加密算法:RSA,AES,MD5通讯过程小小乐流程分析进入网页后F12抓包,选择小小乐验证码,抓包加载接口:captcha_id:验证码id,固定值,第四代滑块文章中提到;挑战:动态变化,由gtc4.js文件生成,第四代slider文章中有提到;client_type:网络终端;risk_type:验证码类型,例如slider为slide,无感为ai,小小乐为match;lang:语言;callback:回调参数,geetest_+时间戳。响应预览中返回的关键内容如下:captcha_type:验证码类型;gct_path:gct4文件路径;lot_number:生成pow_msg的关键参数,w;payload:验证请求参数;datetime:ISO8601扩展格式的日期,生成pow_msg参数的key;process_token:验证请求参数;问题:小小乐矩阵(3x3),每个数字代表一种颜色,三个相同的数字可以换成同一列或同一行通过。点击验证按钮弹出小小乐验证码。移动pattern后,抓包到verify验证接口:captcha_id:与load请求头中的captcha_id一致;client_type:网络终端;lot_number:加载响应返回;risk_type:验证码类型;payload:加载响应返回;process_token:加载响应返回;payload_protocol:1;点:1;w:加密参数,由trajectory、passtime、userresponse等参数加密;callback:回调参数,geetest_+时间戳。响应预览返回的内容如下,结果值为success,表示验证通过,fail,表示验证失败,在seccode下用五个参数请求登录界面,登录为成功:逆向分析四次生成w参数的基本过程几乎是一样的,可以直接搜索特征值“\u0077”来定位生成w参数的位置,先搜索“\u0077”全局,找到对应的js文件,点击格式化,然后ctrl+f在本地搜索location键位置:在6251行设置断点,移动花样会停止,r为w参数的值:跟进r生成的position,它的定义在6237行,可以看到加密方式和第四代slider一样:varr=(0,d.default)(f.default.stringify(e),i)唯一的区别是par的组成e中的仪表值。下面是四代滑条和小小乐的对比:可以看到区别是四代滑条e中的参数有setLeft(间隙距离)和track(滑动轨迹),但是没有天生的小小乐。一张图片的坐标,例如:上图中的验证码,接口返回的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%。五子棋流程分析五子棋流程与小小乐相同。进入网页后,F12抓包,选择步步高验证码,抓包到加载界面:captcha_id:验证码id,固定值,第四代滑块文章中提到;challenge:动态变化,由gtc4.js文件生成,在第四代slider一文中提到;client_type:网页端;risk_type:验证码类型,例如滑块为slide,无感为ai,五子棋为winlinze;lang:语言;callback:回调参数,geetest_+时间戳。响应预览中返回的关键内容如下:captcha_type:验证码类型;gct_path:gct4文件路径;lot_number:生成pow_msg的关键参数,w;payload:验证请求参数;datetime:ISO8601扩展格式的日期,生成pow_msg参数的key;process_token:验证请求参数;问题:五子棋矩阵(5x5),每个数字代表一种颜色,0表示空位,将五个相同的数字换到同一列、同一行或同一对角线即可通过。其他和小小乐一样,e参数如下,其中userresponse是需要交换的两个棋子的坐标:五子棋结果验证一样,只要JS和交换的坐标正确,成功率为100%。西洋双陆棋与小小乐算法下面是小小乐与西洋双陆棋坐标交换的Python算法。注意是交换坐标的算法,不是所有的代码。小小乐30行左右,西洋双陆棋60行左右。还是很简单的。有的,有需要的可以去K哥的爬虫公众号看看。【验证码逆向专栏】四代五子棋和笑小乐验证码逆向解析
