news 2026/7/13 3:54:59

2026最新猫眼协议抢票-破军网络

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026最新猫眼协议抢票-破军网络

mtgsig 1.2 完整逆向拆解(美团小程序 H5guard 加密)

一、先明确核心结论

  1. 你现在用的 9521 端口服务 = 官方封装好的黑盒 RPC 加密服务,本质是内置了完整逆向还原后的 H5guard 1.2 算法,输入请求参数直接输出可用 mtgsig,不用自己写加密逻辑;
  2. 纯逆向(脱离 RPC 服务,本地复现算法)分两大路径:JS 端原生逆向、纯数学公式还原
  3. mtgsig1.2 不是单纯请求签名,是设备指纹 + 请求报文 + 时间戳混合加密的风控校验串,包含多层 AES、MD5、位运算、HKDF 密钥派生。

二、mtgsig 1.2 各字段含义(逆向基础)

json

"mtgsig": {"a1":"1.2","a2":时间戳,"a3":"WEBDFPID","a5":"AES加密环境串","a6":"设备指纹密文","a8":"MD5哈希","a9":"SDK版本","a10":"固定随机因子","x0":4,"d1":"全局请求校验哈希"}

表格

字段生成逻辑(逆向关键点)
a1固定字符串1.2,版本标识
a2毫秒级 Unix 时间戳Date.now(),防重放
a3入参传入的 WEBDFPID(设备指纹 Cookie)
x0固定常量4,算法版本标记
a6采集小程序环境(wx api、屏幕、系统)→ AES-CBC 加密 → Base64 输出,密钥动态派生自 a2+a3
a8多段环境数组异或运算后转 16 进制 MD5 摘要
a5请求报文(url+method+body)拼接盐值,HKDF-SHA256 派生密钥后 AES 加密 Base64
d1全量 mtgsig 字段有序拼接后的 SHA256 哈希最终校验值
a9/a10SDK 固定版本、固定混淆因子,可静态写死

三、完整逆向分步流程(两种方案)

方案 1:抓小程序 JS 原生逆向(最标准,还原完整方程式)

步骤 1:定位加密入口(H5guard.js)
  1. 微信小程序调试,抓包加载的h5guard.min.js,格式化混淆代码;
  2. HookJSON.stringifyXMLHttpRequest,断点拦截生成 mtgsig 的函数(特征:同时存在 a1、a2、a3 变量);
  3. 找到顶层自执行加密函数gU(),这是 mtgsig 生成总入口。

步骤 2:分层拆解加密方程式(核心数学逻辑)
  1. 密钥派生方程(HKDF)

MasterKey=SHA256("mtgsig1.2"+a2+a3)

SessionKey=HKDF−SHA256(MasterKey,salt="wxmtg") 所有 AES 加密统一使用该会话密钥,CBC 模式,固定 IV 向量。

  1. a6 环境加密方程式

plaintext

env_raw = JSON.stringify(小程序wx环境信息数组) a6 = Base64(AES_CBC_Encrypt(env_raw, SessionKey, iv))
  1. a5 请求报文加密方程式

plaintext

src = method + "|" + url + "|" + data + "|" + a2 a5 = Base64(AES_CBC_Encrypt(src, SessionKey, iv))
  1. a8 异或哈希方程三段内置固定大数字数组循环逐位异或,合并后转 16 进制小写 MD5:

a8=MD5(arr1⊕arr2⊕arr3).toString(16) 5.d1 最终校验哈希(顶层签名方程)将所有 mtgsig 字段按a1,a2,a3,a5,a6,a8,a9,a10,x0字典序拼接字符串:

d1=SHA256(concatAllFields).toString(16)

步骤 3:去混淆、扣完整可运行 JS 代码
  1. 使用 Babel/AST 工具解密十六进制混淆变量(_0xXXxx类数组字符串);
  2. 剥离小程序 wx 环境检测代码,补全缺失全局变量(模拟 wx、window、localStorage);
  3. 提取纯加密数学函数(AES、MD5、位运算、HKDF),剥离环境检测垃圾代码。

方案 2:脱离 JS,纯 Python 数学逆向复现(不用补小程序环境)

  1. 固定常量提取:x0=4、a9 写死3.1.0,7,61、a10 固定c5
  2. 复现 HKDF-SHA256 密钥派生函数;
  3. 复现 AES-CBC 加解密(固定 IV);
  4. 复现三段数组异或逻辑生成 a8;
  5. 拼接全字段计算 SHA256 得到 d1;
  6. 入参仅需:method、url、data、dfpId (a3)、当前时间戳。

四、你当前 RPC 服务(9521 端口)本质说明

你调用的/api/get_16_mtgsig是别人已经完成完整逆向封装的成品服务:

  1. 内部已经实现了上面全部加密方程式、HKDF/AES/ 位运算逻辑;
  2. 屏蔽了复杂的小程序环境采集,外部只需要传入 4 个业务参数;
  3. 内部自动生成 a2 时间戳、计算 a5/a6/a8/d1 全套字段,直接返回组装好的 mtgsig 对象;
  4. 健康检查/health仅用于探测服务存活,无加密逻辑。

五、逆向难点 & 避坑点

  1. 动态密钥坑:AES 密钥由 a2 时间戳 + dfpId 实时派生,固定密钥无法长期生成有效签名,每一次请求密钥都不同;
  2. 小程序环境校验坑:原生 JS 会校验 wx 全局对象,纯 Python 复现时可以直接写死模拟环境字符串,不影响签名校验;
  3. 字段排序坑:计算 d1 哈希时必须严格固定字段顺序,乱序会导致 d1 校验失败,服务端直接 403 拦截;
  4. 时间戳防重放:a2 时间戳和服务器时差不能超过 30 秒,否则 mtgsig 直接失效;
  5. 混淆代码陷阱:H5guard 每次小程序版本更新会刷新变量名混淆,但是底层加密数学方程式完全不变,只需要重新定位入口函数。

六、两种使用选择

  1. 省事方案(你现在在用):继续调用 9521 端口 RPC 接口,不用自己逆向数学公式,业务层仅处理请求转发;
  2. 完全自主逆向(脱离第三方服务):按上面 JS 逆向流程扣出加密函数,用 Python 重写全套 HKDF、AES、位运算方程,本地独立生成 mtgsig。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 3:53:22

网络安全主要是做什么

网络安全主要是做什么 数据保护 确保数据访问安全。只有经过授权的用户才能访问和使用数据。 保护数据机密性。防止数据泄露。 维护数据完整性。确保数据不被篡改或损坏。 系统防护 保护企业的网络、系统、设备和其他敏感信息免受攻击。 对服务器、网络设备和安全产品进行维护…

作者头像 李华
网站建设 2026/7/13 3:51:17

DeepSeek注释生成合规性红线预警:GDPR/等保2.0/信创要求下,这5类敏感信息必须拦截——审计通过率提升至99.6%

更多请点击: https://intelliparadigm.com 第一章:DeepSeek注释生成合规性红线预警总览 DeepSeek系列大模型在代码注释自动生成场景中展现出强大能力,但其输出内容若未经严格合规校验,可能触碰法律、安全与工程治理的多重红线。本…

作者头像 李华
网站建设 2026/7/13 3:50:07

C盘空间告急:从快速清理到长期管理的完整解决方案

今天我们来解决一个很实际的问题:C盘空间告急。如果你的C盘显示剩余容量181G/1.07TB,说明总容量约1TB,已使用近820GB,剩余空间约17%。这个比例对系统盘来说已经相当紧张,需要立即清理和优化。系统盘空间不足会导致Wind…

作者头像 李华
网站建设 2026/7/13 3:50:01

Pandas绘图实战:DataFrame结构驱动的高效数据可视化

1. 项目概述:用Pandas画图,为什么它值得你每天打开Jupyter Notebook重写三遍?我带过不少刚转行的数据分析新人,也帮朋友公司做过内部培训。每次讲到数据可视化,总有人一上来就猛敲import matplotlib.pyplot as plt&…

作者头像 李华
网站建设 2026/7/13 3:49:12

鸣潮 3.5 新版本全攻略|低配机也能流畅冲玄翎

谁还没看鸣潮 3.5「荡梦而歌」前瞻直播!新版本内容多到爆炸,新地图、新剧情、限定角色一次性拉满,设备不好的姐妹也不用愁,全文干货整理好👇🌏3.5 重磅全新内容一览✅全新大区域:梦州・玄方地界…

作者头像 李华
网站建设 2026/7/13 3:48:09

GPU 瓶颈定位:从像素到管线的帧时间拆解方法论

GPU 瓶颈定位:从像素到管线的帧时间拆解方法论 一、帧率低了,但不知道卡在哪 性能优化的其一是定律是"先测量,再优化"。但在图形项目里,开发者常犯的错误是直接去改着色器、降分辨率,理由是"感觉是 GPU…

作者头像 李华