[js逆向学习] fastmoss电商网站——店铺排名

逆向目标

  • 网站:https://www.fastmoss.com/shop-marketing/tiktok
  • 接口:https://www.fastmoss.com/api/shop/shopList/
  • 参数:fm-sign

逆向分析

我们今天要分析的是店铺排名,先分析网络请求,找到目标接口
在这里插入图片描述
按照上图操作Copy as cURL,将curl 转为 python request
在这里插入图片描述
直接分析测试 python 代码,加密点只能是 cookiefm-sign参数,先来测试 cookie,代码里直接设置为 None 然后运行依然可以拿到请求结果,说明加密和 cookie 无关,那就只能是 fm-sign 参数了,如下
在这里插入图片描述

import requestsheaders = {"fm-sign": "479f735a55570d174198e5c1ce93f515","lang": "EN_US","priority": "u=1, i","referer": "https://www.fastmoss.com/shop-marketing/tiktok","region": "US","user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
}
url = "https://www.fastmoss.com/api/shop/shopList/"
params = {"page": "1","pagesize": "10","order": "1,2","region": "US","_time": "1727184797","cnonce": "57869802"
}
response = requests.get(url, headers=headers, cookies=None, params=params)print(response.json())

逆向过程

搜索关键词 fm-sign
在这里插入图片描述
跟进去打上断点并刷新网页
在这里插入图片描述

p = m.encryptParams({...d}, h);
i["fm-sign"] = p

加密入口我门找到了,跟进去看下
在这里插入图片描述
把这个函数拷贝到本地执行

window = global;
function encryptParams(e) {let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "", n = window.Object.keys(e).sort(), o = "";n.forEach(t => {o += t + e[t] + this.salt});let r = d()(o + t).toString(), a = "", i = 0, l = r.length - 1;for (; i < r.length && !(i >= l); i++,l--)a += (window.parseInt(r[i], 16) ^ window.parseInt(r[l], 16)).toString(16);return a + r.substring(i)
}
var e = {"page": 1,"pagesize": 10,"order": "1,2","region": "US","_time": 1727185503,"cnonce": 83043105
};
var result = encryptParams(e);
console.log(result);

执行报错 let r = d()(o + t).toString() ^ReferenceError: d is not defined,我们去网站执行到这步分析
在这里插入图片描述
r是 32位16进制 字符串,猜测大概率是 md5 值,我们直接来验证下有没有魔改,分别在网页上和本地对字符串 1md5,然后比较结果

// 网站求 md5 值
d()('1').toString()
>> c4ca4238a0b923820dcc509a6f75849b
// 本地求 md5 值
var CryptoJS = require("crypto-js");
console.log(CryptoJS.MD5('1').toString());
>> c4ca4238a0b923820dcc509a6f75849b

网页和本地结果一致,说明网站的 md5 方法是没有魔改的标准方法,到这几 fm-sign 就分析完了,我们直接使用 CryptoJS.MD5 替换 d() 方法即可

逆向总结

完整的 js 代码如下

var CryptoJS = require("crypto-js");
window = global;
this.salt = "asjdfoaur3ur829322";
function encryptParams(e) {let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "", n = window.Object.keys(e).sort(), o = "";n.forEach(t => {o += t + e[t] + this.salt});let r = CryptoJS.MD5(o + t).toString(), a = "", i = 0, l = r.length - 1;for (; i < r.length && !(i >= l); i++,l--)a += (window.parseInt(r[i], 16) ^ window.parseInt(r[l], 16)).toString(16);return a + r.substring(i)
}
var e = {"page": 1,"pagesize": 10,"order": "1,2","region": "US","_time": 1727185503,"cnonce": 83043105
};
var result = encryptParams(e);
console.log(result);

原创声明:未经许可,不得转载。
如有侵权,请联系作者删除删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544887.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

怎样批量对比两个数据库的表差异??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

38.重复的子字符串

方法1&#xff1a; class Solution {public boolean repeatedSubstringPattern(String s) {if (s.equals("")) return false;String s2(ss).substring(1,(ss).length()-1);//去掉首尾字符return s2.contains(s);//判断是否包含s} } class Solution(object):def rep…

spring boot项目对接人大金仓

先确认一下依赖 第一 是否引入了mybatis-plus多数据源&#xff0c;如果引入了请将版本保持在3.5.0以上 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynam…

接触器和复合开关的具体应用区别

接触器和复合开关在电力系统中都有各自的应用&#xff0c;但它们的功能和用途有所不同&#xff1a; 一、接触器 1、应用&#xff1a; 电动机控制&#xff1a;接触器常用于控制电动机的启停&#xff0c;能够承载电动机的启动电流。 自动控制系统&#xff1a;在自动化控制系统…

2-102基于matlab的蒙特卡洛仿真

基于matlab的蒙特卡洛仿真&#xff0c;对64QAM和BPSK进行蒙特卡洛仿真&#xff0c;并绘出误码率曲线。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a; 2-102基于matlab的蒙特卡洛仿真

【FPGA必知必会】(二)7系列的配置(一)

配置概述 7系列FPGA是通过将bitstream下载到内存中来实现配置的。 既可以通过外部非易失性存储器加载&#xff0c;也可以通过微处理器、DSP处理器、微控制器、PC或者板级测试仪进行加载。 有两种通用的配置路径&#xff0c;一种是串行数据路径&#xff0c;用于减少对器件引脚…

数据丢失不再怕!四款神器助你找回一切

哈喽&#xff0c;大家好&#xff01;今天咱们来聊聊数据恢复工具&#xff1b;在数字化的时代&#xff0c;数据丢失可是个让人头疼的问题&#xff1b;不过别担心&#xff0c;有了这些数据恢复工具&#xff0c;再也不用担心数据不见&#xff1b;下面我给大家推荐五款非常好用的数…

【systemctl start jenkins】启动报错问题解决

问题说明&#xff0c;最终是在jenkins.service中配置JAVA_HOME解决的&#xff0c;但是我的服务器环境中确定已经配置好了Java环境变量&#xff0c;并且java -version也能正常打印信息&#xff0c;不清楚为什么jenkins.service无法读取配置 1.环境配置说明 服务器&#xff1a;…

如何确定SAP 某些凭证或者单号的号码编码范围的 OBJECT 是什么?

在SAP的运维或者项目实施中&#xff0c;有时会如何确定SAP 某些凭证或者单号的号码 OBJECT 是什么&#xff1f; 一般一下常用的可以通过事务代码 例如&#xff1a; XDN1 Create Number Ranges for Customer Accounts&#xff0c;定义客户编码FBN1查看维护会计凭证号范围 我…

破解 oklink 网站加密数据(升级版)

大家好!我是炒青椒不放辣,关注我,收看每期的编程干货。 逆向是爬虫工程师进阶必备技能,当我们遇到一个问题时可能会有多种解决途径,而如何做出最高效的抉择又需要经验的积累。本期文章将以实战的方式,带你详细地分析并破解 oklink 网站加密数据 特别声明:本篇文章仅供学…

屏幕演示工具 | 水豚鼠标助手 v1.0.7

水豚鼠标助手是一款功能强大的屏幕演示工具&#xff0c;专为Windows 10及以上系统设计。这款软件提供了多种实用功能&#xff0c;旨在增强用户的屏幕演示体验&#xff0c;特别适合教师、讲师和需要进行屏幕演示的用户。鼠标换肤&#xff1a;软件提供多种鼠标光标样式&#xff0…

深兰科技陈海波应邀出席2024长三角论坛暨虹桥人才创新发展大会

近日&#xff0c;以“人才引领 联动共融——国际化创新与长三角协同”为主题的“2024长三角人才发展论坛暨虹桥人才创新发展大会”在上海国际会议中心隆重举行。上海市委常委、组织部部长、市委人才办主任张为应邀出席并做大会致辞。 深兰科技创始人、董事长陈海波作为特邀企业…

跑lvs出现soft connect怎么处理?

首先&#xff0c;我们先了解一下什么是soft connect。简而言之&#xff0c;就是工具会将所有连接在psub上的信号认作soft connect&#xff08;也就是short&#xff09;。如图1所示&#xff0c;VSS和AVSS都接到了p上&#xff0c;它们通过psub便有了soft connect。 如果有soft co…

SQLServer运维实用的几个脚本

目录 1、查询出最近所有耗时最大的SQL语句 2、查询数据库每个数据表存储占用 3、当前正在执行的最耗时的前10个SQL语句 4、SQLServer查看锁表和解锁 5、快速清理数据库日志文件 1、查询出最近所有耗时最大的SQL语句 返回的是未关联任何特定对象的最耗费资源的查询信息,包…

剖解相交链表

相交链表 思路&#xff1a;我们计算A和B链表的长度&#xff0c;求出他们的差值&#xff08;len&#xff09;&#xff0c;让链表长的先多走len步&#xff0c;最后在A,B链表一起向后走&#xff0c;即可相逢于相交节点 实现代码如下&#xff1a; public class Solution {public …

string 的介绍及使用

一.string类介绍 C语言中&#xff0c;字符串是以’\0’结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需要用户自己管理&a…

服务设计原则介绍

在Java或任何软件开发中&#xff0c;设计服务时遵循一些核心原则是非常重要的&#xff0c;这些原则不仅有助于构建高质量、可维护的软件系统&#xff0c;还能提高系统的可扩展性和可重用性。以下是一些关键的服务设计原则&#xff1a; 单一职责原则&#xff08;SingleResponsib…

个人量化成功之路-----获取实时OHLC的数据

昨天有一个客户说自己之前交易主要看OHLC线&#xff0c;想问量化软件如何实现获取实时一分钟OHLC的数据并生产图像。 有朋友可能不熟悉OHLC这个名字哈&#xff0c;其实跟K线/蜡烛图的数据是一样的&#xff0c;和蜡烛图的区别只是表现形式的不一致。 O为open、开盘价&#xff…

第6章 常用UI组件库

一.Element Plus组件库 1. 安装Element Plus 什么是Element Plus&#xff1f; Element Plus是基于Vue 3开发的优秀的PC端开源UI组件库&#xff0c;它是Element的升级版&#xff0c;对于习惯使用Element的人员来说&#xff0c;在学习Element Plus时&#xff0c;不用花费太多的…

如何使用ssm实现基于Java的超市管理系统

TOC ssm681基于Java的超市管理系统jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化…