ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

某剪辑软件 API sign签名生成算法逆向分析还原

某剪辑软件 API sign签名生成算法逆向分析还原 阅读须知本文章中所有内容仅供学习交流使用不用于其他任何目的不提供完整代码抓包内容、敏感网址、数据接口等均已做脱敏处理严禁用于商业用途和非法用途否则由此产生的一切后果均与作者无关擅自使用本文讲解的技术而导致的任何意外作者均不负责若有侵权请在公众号联系作者立即删除概述本文档详细说明了 CapCut 网页 API 用于请求认证的签名生成算法。API 接口POST https://www.xxx.com/签名生成算法公式signMD5(9e2c|{url_suffix}|{pf}|{appvr}|{device_time}|{tdid}|11ac).toLowerCase()参数说明|参数|说明|示例值|来源|| — | — | — | — ||‎9e2c|固定前缀常量|‎9e2c|硬编码||‎url_suffix|URL 路径的最后 7 个字符|‎on_link|从 ‎/commerce/v1/group/get提取||‎pf|平台标识符|‎6|Web 平台常量||‎appvr|应用版本|‎1.0.0.1|固定版本字符串||‎device_time|Unix 时间戳秒|‎1778147560|当前时间||‎tdid|设备 ID| (空字符串)|Web 端通常为空||‎11ac|固定后缀常量|‎11ac|硬编码|计算示例输入URL: /commerce/v1/group/ device_time:1778147560步骤 1提取 URL 后缀最后 7 个字符url_suffixon_link步骤 2构建签名字符串sign_string9e2c|on_link|6|1.0.0.1|1778147560||11ac步骤 3计算 MD5 哈希signMD5(sign_string).toLowerCase()3bb6d5d0a697aa8e3e11641dab5da6e3必需的请求头{appid:000000,device-time:1778147560,sign-ver:1,app-sdk-version:,appvr:1.0.0.1,tdid:,accept:application/json, text/plain, */*,content-type:application/json,sign:3bb6d5d0a697aa8e3e11641dab5da6e3,lan:zh-hans,pf:6,user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36}源代码位置签名生成逻辑位于index.5b801950.js原始函数已压缩generateSignHeaderfunction(e){let{url:t,pf:r,appvr:o,tdid:n}e;constlMath.floor((0,i.default)()/1e3);return{sign:(0,s.default)(9e2c|${(0,a.default)(t).call(t,-7)}|${r}|${o}|${l}|${n}|11ac).toLowerCase(),device-time:l}}还原后的代码functiongenerateSignHeader({url, pf, appvr, tdid}){const deviceTimeMath.floor(Date.now()/1000);const urlSuffixurl.slice(-7);const signString9e2c|${urlSuffix}|${pf}|${appvr}|${deviceTime}|${tdid}|11ac;const signmd5(signString).toLowerCase();return{sign: sign,device-time:deviceTime};}实现示例Python 实现importhashlibimporttimedef generate_sign(url,device_timeNone,tdid,pf6,appvr1.0.0.1): 生成 CapCut API 签名 参数: url: API URL 路径 device_time: Unix 时间戳秒如果为 None 则使用当前时间 tdid: 设备 ID默认为空字符串 pf: 平台标识符默认为6Web appvr: 应用版本默认为1.0.0.1返回: 包含sign和device-time的字典ifdevice_time is None: device_timeint(time.time())# 提取 URL 最后 7 个字符url_suffixurl[-7:]# 构建签名字符串sign_stringf9e2c|{url_suffix}|{pf}|{appvr}|{device_time}|{tdid}|11ac# 计算 MD5 哈希并转小写signhashlib.md5(sign_string.encode()).hexdigest().lower()return{sign:sign,device-time:device_time}# 示例url/commerce/v1/group/get_group_info_by_invitation_linkresultgenerate_sign(url,device_time1778147560)print(f签名: {result[sign]})# 输出: 3bb6d5d0a697aa8e3e11641dab5da6e3免责声明本报告仅供安全研究和学习目的请勿用于非法用途。本文章中所有内容仅供学习交流使用不用于其他任何目的不提供完整代码抓包内容、敏感网址、数据接口等均已做脱敏处理严禁用于商业用途和非法用途否则由此产生的一切后果均与作者无关擅自使用本文讲解的技术而导致的任何意外作者均不负责若有侵权请在公众号联系作者立即删除
返回列表