游乐游手机版
首页/AI教程/文章详情

某象刮刮卡验证码逆向分析详解

时间:2026-06-23 15:25
利用AI大模型对某象刮刮卡验证码进行逆向分析,包括抓包获取参数、还原乱序图片、解析加密参数Param与ac,并通过AI辅助解混淆、复现算法及识别目标位置,实现高效精准的验证码破解。

人工智能技术的迭代速度令人目不暇接。从最初的基础模式识别,到如今具备自主学习与逻辑推理能力,AI大模型深刻影响着各行各业。逆向工程领域同样被重塑。以往依靠长期经验积累的协议逆向、接口解析等工作,耗时费力,且常因复杂加密协议而陷入困境。如今,AI大模型彻底改变了这一现状:它能够快速发现代码中的隐含规律,自动解析未知协议的交互逻辑,甚至完成以往难以想象的复杂逆向任务。在技术竞争日益激烈的时代,逆向工程的核心目标已从“能完成”转向“高效、精准、快速”。因此,拥抱并善用AI大模型不再是可选项,而是必由之路。

NhgLNO.pngNhgLNO.png

前言

让我们先明确本次案例的具体目标:攻克某象的刮刮卡验证码(网址已提供),使用的AI模型为GPT-5.5。进入网站后,在线体验页面展示了一种新颖的验证码类型——刮刮卡。初始时会显示图案位置,用户需要刮出完整图案才能通过验证。这正是逆向分析的核心所在。

NgBeCt.pngNgBeCt.png

抓包分析是第一步。接口响应返回了sid参数和验证码背景图片链接,其中type为2代表刮刮卡验证。但请注意,此时的背景图片是乱序的,需要后续还原。

NgTBRP.pngNgTBRP.png

c1接口被请求了两次,一次GET,一次POST。第二次响应的data值即为最终验证接口的请求参数c。两个请求均包含加密参数Param,一长一短,后续将详细分析。

NgEGbG.pngNgEGbG.png

校验接口为/api/v3,其中ak为验证码标识,c和sid由上一步接口返回,aid和主要加密参数ac留到后续处理。

NgTLDO.pngNgTLDO.png

AI & 古法逆向分析

乱序图片还原

接口返回的图片链接下载后是乱序的,要识别目标图案,必须先还原出完整图片。网站本身的处理逻辑也是如此:后端返回乱序图片,前端依据正确的还原顺序绘制完整图片,再渲染到页面上。因此,找到这个还原顺序就能复现还原算法。

验证码图片大概率是通过canvas绘制的。下个画布断点试试,重新获取验证码后成功断下。

NgTAgs.pngNgTAgs.png

代码经过混淆,解压后如下:

function d(n, t, r, e) {
    var o, i = n.options.lineWidth || p.default_line_width, d = p["cover_color"], v = t["getElementsByTagName"]("canvas")[0]["getContext"]("2d");
    return v["fillStyle"] = d, v.fillRect(0, 0, r, e), v.globalCompositeOperation = "destination-out", v["lineWidth"] = i, v.lineCap = "round", v
}

将这部分提交给AI分析,结果直接指出这是在绘制刮刮卡遮罩层,并非乱序还原部分。因此,继续跳到下一个断点位置看看。

NgmQEL.pngNgmQEL.png

同样解混淆后,代码如下:

function _(n, t, i, e, r) {
    var o = n.getContext("2d");
    o["drawImage"](t, 0, 0, i, e);
    var a = Math.floor(i / r['length']);
    x(r, (function (n, i) {
        var r = n * a, c = a;
        o.drawImage(t, r, 0, c, e, i * a, 0, c, e)
    }))
}

再次让AI分析,它准确识别出这就是乱序切块还原部分。不过测试发现,还原顺序并非固定,那它是如何生成的?按照传统做法,需要开始往上跟栈分析。但现在不同了,直接交给AI,去泡杯茶、看看新闻,等着就行。

Ng7aoZ.pngNg7aoZ.png

AI不仅找到了生成算法,还用Python复现了逻辑。核心代码如下:

def generate_ranges(seed: str) -> list[int]:
    order: list[int] = []
    for index, char in enumerate(seed):
        if index == 32:
            break
        value = ord(char)
        while value % 32 in order:
            value += 1
        order.append(value % 32)
    if len(order) != 32:
        raise ValueError(f"seed must generate 32 ranges, got {len(order)}")
    return order

aid

/api/a接口的加密参数,直接手动扣即可。从该接口的堆栈处跟到oneclick-Captcha-js.js文件,搜索aid =定位,下断。刮刮卡的R为3,跟到函数I中,将算法扣下来用Python实现。

NgEL0h.pngNgEL0h.png

timestamp = int(time.time() * 1000)
random_part = random.randint(0, 99999999)
aid = f"dx-{timestamp}-{random_part}-3"

_t

str(int(time.time() * 1000))[-6:-1]

Param

从第一个c1的堆栈处,跟到index.js中(动态文件,建议固定一套调试)。下断,清空缓存,刷新网页,断住后往上跟栈,Param参数的值已经生成。

NgN3yZ.pngNgN3yZ.png

再往上跟一个栈,就能找到生成位置。第二个c1的Param同理。

NgNlUU.pngNgNlUU.png

传统做法是开始漫长枯燥的扣代码,感谢新时代,这一步直接交给AI。定位到正确位置后,让AI用Python复现算法。两个Param的算法相同,只是入参不同导致长度差异。

NgNOHf.pngNgNOHf.png

第二个Param的入参包含大量环境校验,AI分析结果如下:

field_sources = {
    "can": "canvasFP,Canvas 指纹",
    "cpt": "canPlayType,音视频格式支持",
    "web": "webglFP,WebGL 指纹 hash",
    "gi": "webgl,WebGL 原始信息",
    "pr": "devicePixelRatio",
    "dm": "na vigator.deviceMemory",
    "jf": "fonts,字体探测",
    "hc": "na vigator.hardwareConcurrency",
    "ua": "na vigator.userAgent",
    "uad": "na vigator.userAgentData",
    "np": "na vigator.platform",
    "lug": "na vigator.language",
    "ce": "na vigator.cookieEnabled",
    "netType": "na vigator.connection.effectiveType",
    "ts": "touch,触摸能力",
    "tz": "Intl.DateTimeFormat().resolvedOptions().timeZone",
    "to": "new Date().getTimezoneOffset()",
    "ls": "localStorage 支持",
    "ss": "sessionStorage 支持",
    "ind": "indexedDB 支持",
    "od": "openDatabase 支持",
    "cd": "screen.colorDepth",
    "res": "screen.width/height",
    "ar": "screen.a vailWidth/a vailHeight",
    "vs": "viewportSize",
    "ws": "windowSize",
    "rp": "na vigator.plugins",
    "adb": "adblock 检测",
    "hl": "history.length",
    "cl": "cookieLength",
    "st": "startTime",
    "dt": "document.title",
    "url": "location.href",
    "bl": "bodyLength",
    "hdl": "headLength",
    "dr": "document.referrer",
    "xp": "xpath",
    "hsl": "performance.memory.jsHeapSizeLimit",
    "in": "incognito 检测",
    "qu": "storage quota",
    "hev": "UA high entropy values",
    "bt": "beginTime",
    "ct": "collectTime",
    "hlb": "hasLiedBrowser",
    "hll": "hasLiedLanguages",
    "hlo": "hasLiedOs",
    "hlr": "hasLiedResolution",
    "db": "debugger 检测",
    "sm": "simulator 检测",
}

固定入参,将AI生成的值与网页生成的值进行对比验证,结果一致。

NgNS1c.pngNgNS1c.png

ac

最后,分析最关键的加密参数ac。从堆栈处下断,往上跟,定位到了下图位置。

NgKTps.pngNgKTps.png

M.getUA()跟进去,跳转到greenseer.js文件。知道范围后,交给AI,看它发挥。有问题就调教,有些点确实需要纠正。

NgKD94.pngNgKD94.png

NgKSP9.pngNgKSP9.png

AI还能将各关键算法的位置全部罗列出来,方便自行分析。

NgKt0q.pngNgKt0q.png

顺便让AI解混淆,还原了greenseer.js文件。刮刮乐需要先检测出目标物品的位置,生成对应的轨迹,才能计算出正确的ac值。让AI写出识别算法,找到目标物体的位置。

NghYIf.pngNghYIf.png

研究轨迹可以插桩分析:

(() => {
    if (!window.__scratchStartTime || n.type === "mousedown" || n.type === "touchstart") {
        window.__scratchStartTime = Date.now();
        window.__scratchData = [];
    }
    const item = {x: Y(n), y: H(n), t: Date.now() - window.__scratchStartTime};
    window.__scratchData.push(item);
    return JSON.stringify(window.__scratchData);
})()
// copy(JSON.stringify(window.__scratchData))

结果验证

Nghz53.pngNghz53.png

来源:https://cloud.tencent.com.cn/developer/article/2695162
上一篇生产环境AI API聚合平台横向评测与选型指南 下一篇Gemini 3.5自动化定位CSS异常提升前端效率
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Windows Docker Desktop RabbitMQ生产级部署完整指南
AI教程 · 2026-06-29

Windows Docker Desktop RabbitMQ生产级部署完整指南

前言 在 Windows 本地开发环境中,直接安装 RabbitMQ 确实颇为周折:需要单独配置 Erlang 运行环境、手动管理环境变量、服务启停全凭手工操作。更令人困扰的是,版本兼容冲突、端口占用、环境不一致等问题层出不穷。笔者见过不少开发者为搭建环境就得耗费整整半天时间。 相比之下,借助 Do

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践
AI教程 · 2026-06-29

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践

先分享一个切实感受。过去两年,我们与福建制造企业合作较为频繁,发现一个非常突出的现象:超过80%的企业官网,产品参数仍然存放在PDF或图片中。AI爬虫?根本无法抓取。这些企业技术实力不弱、资质证照齐全、应用案例也丰富,但在AI搜索这一全新战场上,它们几乎处于隐身状态。 一、一个正在发生的行业变化 A

阿里云Token Plan团队版功能价格与省钱购买指南
AI教程 · 2026-06-29

阿里云Token Plan团队版功能价格与省钱购买指南

阿里云百炼近期推出了名为“Token Plan 团队版”的全新服务,这一服务专为企业与开发者量身打造,定位为AI大模型订阅平台。通过引入Credits作为统一计量单位,将文本生成、图像生成等多模态AI能力纳入单一计费体系,同时无缝兼容主流AI编程工具及智能体(Agent)生态系统。其核心亮点包括:全

阿里云物联网.NET Core客户端位置信息上报
AI教程 · 2026-06-29

阿里云物联网.NET Core客户端位置信息上报

阿里云物联网平台的位置服务并非一个完全独立的功能模块。位置信息可包含二维坐标与三维坐标,而位置数据的来源本质上是借助设备属性进行上传。换言之,若要让设备上报位置,您需先将其视为一个普通属性进行处理。 1)添加二维位置数据 操作过程十分简洁。进入数据分析 → 空间数据可视化 → 二维数据,点击添加,将

年阿里云服务器选型配置与网站部署全攻略
AI教程 · 2026-06-29

年阿里云服务器选型配置与网站部署全攻略

2026年,阿里云服务器生态已高度成熟,形成了清晰的轻量应用服务器与ECS云服务器两大产品阵营。无论你是计划搭建个人博客、企业官网,还是运营电商平台、进行应用开发,基本都能找到理想的解决方案。本指南将从服务器选型、配置选择、部署流程到安全运维,系统梳理2026年最实用的操作要点,帮助你少走弯路,让网