当前位置: 首页 > article >正文

FastMoss 国际电商Tiktok数据分析 JS 逆向 | MD5加密

1.目标

目标网址:https://www.fastmoss.com/zh/e-commerce/saleslist

在这里插入图片描述
在这里插入图片描述
切换周榜出现目标请求
在这里插入图片描述
只有请求头fm-sign签名加密

2.逆向分析

直接搜fm-sign
在这里插入图片描述

在这里插入图片描述
可以看到 i["fm-sign"] = A
在这里插入图片描述
进入encryptParams方法
在这里插入图片描述
里面有个S()方法加密,是MD5加密

3.代码示例

js代码示例

const crypto = require('crypto')function MD5Encrypt(e) {return crypto.createHash("md5").update(e.toString()).digest("hex")
}function encryptParams(e) {this.salt = "LAA6edGHBkcc3eTiOIRfg89bu9ODA6PB"let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "", o = Object.keys(e).sort(), n = "";o.forEach(t => {n += t + e[t] + this.salt});let r = MD5Encrypt(n + t), a = "", i = 0, s = r.length - 1;for (; i < r.length && !(i >= s); i++,s--)a += (parseInt(r[i], 16) ^ parseInt(r[s], 16)).toString(16);return a + r.substring(i)
}let S =   {_time: Math.floor(Date.now() / 1e3),cnonce: Math.floor(1e7 + 9e7 * Math.random())
}, r = {"time": 1748321467,"system": "windows","platform": 1,"id": 206,"type": 1,"ext": {"uri": "https://www.fastmoss.com/zh/e-commerce/newProducts","_src": null}
} ,d = JSON.stringify(r),A = encryptParams({...S}, d);
console.log(A)

python代码示例

import hashlib
import json
import random
import time# MD5 加密
def md5_encrypt(data):return hashlib.md5(str(data).encode('utf-8')).hexdigest()# 加密函数 encryptParams
def encrypt_params(e, t=""):salt = "LAA6edGHBkcc3eTiOIRfg89bu9ODA6PB"# 排序后的 key 列表keys = sorted(e.keys())n = ""for key in keys:n += f"{key}{e[key]}{salt}"r = md5_encrypt(n + t)a = ""i = 0s = len(r) - 1while i < len(r) and i < s:# 将十六进制字符转为整数,异或后再转回十六进制char_i = r[i]char_s = r[s]xor_result = int(char_i, 16) ^ int(char_s, 16)a += format(xor_result, 'x')  # 转为十六进制字符i += 1s -= 1a += r[i:]return aS = {'_time': int(time.time()),'cnonce': random.randint(1e7, 1e8)
}r = {"time": 1748321467,"system": "windows","platform": 1,"id": 206,"type": 1,"ext": {"uri": "https://www.fastmoss.com/zh/e-commerce/newProducts","_src": None}
}d = json.dumps(r, separators=(',', ':'))A = encrypt_params(S, d)
print(A)

请求不要sign也是可以的

http://www.lryc.cn/news/2387665.html

相关文章:

  • Redis分布式缓存核心架构全解析:持久化、高可用与分片实战
  • 【Linux】基础开发工具(下)
  • Python爬虫实战:研究Portia框架相关技术
  • chrome打不开axure设计的软件产品原型问题解决办法
  • 达梦数据库-学习-23-获取执行计划的N种方法
  • 【数据结构】树形结构--二叉树
  • Baklib构建企业CMS高效协作与安全管控体系
  • 深入理解 JDK、JRE 和 JVM 的区别
  • LSTM 与 TimesNet的时序分析对比解析
  • 图论学习笔记 4 - 仙人掌图
  • 语音识别算法的性能要求一般是多少
  • 百度ocr的简单封装
  • 华为高斯数据库(GaussDB)深度解析:国产分布式数据库的旗舰之作
  • LWIP 中,lwip_shutdown 和 lwip_close 区别
  • xml双引号可以不转义
  • 互联网大厂Java面试:从Spring到微服务的挑战
  • 兰亭妙微 | 图标设计公司 | UI设计案例复盘
  • OpenCV视觉图片调整:从基础到实战的技术指南
  • C#日期和时间:DateTime转字符串全面指南
  • 手机收不到WiFi,手动输入WiFi名称进行连接不不行,可能是WiFi频道设置不对
  • 批量文件重命名工具
  • ATPrompt方法:属性嵌入的文本提示学习
  • 14.「实用」扣子(coze)教程 | Excel文档自动批量AI文档生成实战,中级开篇
  • 对于geoserver发布数据后的开发应用
  • 液体散货装卸管理人员备考指南
  • 基于Qlearning强化学习的二阶弹簧动力学模型PID控制matlab性能仿真
  • 【监控】Spring Boot 应用监控
  • 「MATLAB」计算校验和 Checksum
  • 【AS32X601驱动系列教程】SMU_系统时钟详解
  • 09 接口自动化-用例管理框架pytest之allure报告定制以及数据驱动