mtgsig 分析

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

逆向过程

部分python代码

import execjs
import requests
 
cp = execjs.compile(open('mtgsig.js', 'r', encoding='utf-8').read())
mtgsig = cp.call('getMtgsig')['headers']['mtgsig']
print(mtgsig)
url = ""
params = {
    "set_name": "",
    "region_id": "",
    "yodaReady": "h5",
    "csecplatform": "4",
    "csecversion": "3.1.0"
}
data = {
    "optimus_code": "10",
    "optimus_risk_level": "71",
    "pageSize": "20",
    "page_index": "0",
    "offset": "0",
    "first_category_type": "100321",
    "navigate_type": "100321",
    "content_personalized_switch": "0",
    "sort_type": "",
    "slider_select_data": "[]",
    "activity_filter_codes": "2",
    "second_category_type": "",
}
response = requests.post(url, headers=headers, cookies=cookies, params=params, data=data,proxies=proxies)
 
print(response.text)
print(response)

import execjs
import requests
 
cp = execjs.compile(open('mtgsig.js', 'r', encoding='utf-8').read())
mtgsig = cp.call('getMtgsig')['headers']['mtgsig']
print(mtgsig)
url = ""
params = {
    "set_name": "",
    "region_id": "",
    "yodaReady": "h5",
    "csecplatform": "4",
    "csecversion": "3.1.0"
}
data = {
    "optimus_code": "10",
    "optimus_risk_level": "71",
    "pageSize": "20",
    "page_index": "0",
    "offset": "0",
    "first_category_type": "100321",
    "navigate_type": "100321",
    "content_personalized_switch": "0",
    "sort_type": "",
    "slider_select_data": "[]",
    "activity_filter_codes": "2",
    "second_category_type": "",
}
response = requests.post(url, headers=headers, cookies=cookies, params=params, data=data,proxies=proxies)
 
print(response.text)
print(response)

mtgsig1.2是美团及大众点评相关应用在网络请求中用于身份验证和数据加密的一种机制。 ### 加密版本及基本组成 mtgsig1.2的加密版本为 "a1": "1.2" 。其加密过程涉及多个关键参数,如时间戳 "a2" ,它需要在当前时间戳的基础上减去一个 serverTimeDiff ,而 serverTimeDiff 是通过服务器返回的 dfpId 数据包里的 serverTimestamp 与当前时间戳计算得出; "a3" 是把特定信息加密后提交给服务器,经服务器校验成功后返回的 dfpId [^4]。 ### 加密结果参数 - "a4" 是一个长48位的加密结果,由 a5、a2 以及一小段 jsvmp 运行后输出。 - "a5" 是一个长320位的加密结果,通过 a2、a6 以及 Ln 计算得出。 - "a6" 是 "w1.2" 加上客户端环境的加密结果,长度较长 [^4]。 ### 其他参数 - "a7" 为小程序id,通过 wx["getAccountInfoSync"]().miniProgram.appId 获取。 - "x0" 在源代码中写死为3。 - "d1" 是 a1、a2、a3、a4、a7 以及加密过程中出现的一些数组经过运算后,通过 md5ToHex(j) 得到的结果 [^4]。 ### 应用场景及逆向分析 在美团 web 、美团圈圈小程序以及大众点评小程序等场景中均有应用。逆向分析时,对于美团圈圈的情况,云函数必须 hook 入参才能进行逆向;大众点评则需要对部分代码中的参数进行设置和调用函数来获取 mtgsig ,并用于网络请求 [^1][^2][^3]。 ### 代码示例 以下是美团圈圈和大众点评中关于 mtgsig1.2 部分代码示例: ```python # 美团圈圈 import requests import execjs cp = execjs.compile(open('美团圈圈.js', 'r', encoding='utf-8').read()) data = cp.call('getMtgsig',data,openId) mtgsig = data['header']['mtgsig'] headers = { "Host": "", "mt-token": "", "mt-lat": "23.316682", "charset": "utf-8", "mtgsig": mtgsig, "Referer": "" } url = "api/product/search" params = { "_ver": "4.47.0", "platform": "1", "yodaReady": "wx", "csecappid": "", "csecplatform": "3", "csecversionname": "4.47.0", "csecversion": "1.4.0", "lng": "", "lat": "", "locatedCityId": "20", "selectCityId": "20", "cityId": "20", "osType": "Android", "osVersion": "11", "wxOpenId": "", "userId": "", "mbLevel": "0", "memberInstitution": "6", "channelSource": "search", "keyword": "", "page": "1", "sort": "0", "filterType": "0", "pageSize": "10", "queryId": "" } response = requests.get(url, headers=headers, params=params) print(response.text) print(response) ``` ```python # 大众点评 import requests import execjs params = {} params['yodaReady'] = 'wx' params['csecappid'] = appId params['csecplatform'] = '3' params['csecversionname'] = '9.82.0' params['csecversion'] = '1.4.0' result = cp.call('updateMtgsig',data1,appId,openId) mtgsig = result['header']['mtgsig'] print(mtgsig) headers = { 'Accept': '*/*', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Pragma': 'no-cache', 'Referer': '', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'cross-site', 'channel': 'weixin', 'channelversion': '146.84.1', 'dpid': '', 'minaname': 'dianping-wxapp', 'minaversion': '9.82.0', 'mtgsig': mtgsig, 'platform': 'Android', 'platformversion': '10 x64', 'sdkversion': '3.5.8', 'wechatversion': '146.84.1', 'xweb_xhr': '1', } response = session.get('v1/shelf/0', params=params, headers=headers) print(response.text) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值