首页 > 其他分享 >js逆向实战之莫莫铺子sign参数解密

js逆向实战之莫莫铺子sign参数解密

时间:2024-04-24 17:00:24浏览次数:17  
标签:appKey 函数 url js version 之莫莫 sign config

url: http://mmpz.ttzhuijuba.com/?r=/l&cids=1&site=classify&sort=0

分析过程

  1. 抓取流量包。
    image
    主要关注图中框起来这条流量包,因为这条流量包返回的是当前页面数据。
    image
    该流量包的url地址有个加密的参数sign,目的就是找到sign参数的加密过程。

  2. 按照常规思路会去搜索url中的关键词,但找到对应的地方不能很好的定位到sign参数,所以需要换一种思路。
    image

  3. 我们直接搜索sign关键字,有很多条记录,需要稍微筛选一下。
    image

  4. 只有两条数据符合我们的要求。先试sign: n("7bc9"),打断点。
    image
    输出一下n("7bc9")
    image
    发现输出是个原生代码,所以此处不是我们要的,可以排除。

  5. 找到另一条符合要求的记录,打断点。
    image

  6. 刷新界面,触发该断点,查看每一个处的值。
    makeSign是个函数。
    image
    sthis.config.appSecret都是变量。
    image
    image

  7. 先搞清楚两个变量的来源。
    image

s = p(p({}, {
    version: this.config.version,
    appKey: this.config.appKey
}), r)

s也涉及到了this.config变量,那就先确定this.config变量是什么。在该文件中搜索this.config,定义处如下。
image
this.config的初始化涉及到传参e,看哪里调用的该函数(看call stack找)。
image
e是个固定值,Object.assign函数是一个用于复制的函数,故this.config也是一个定值,this.config.appSecret的值就显而易见了。
image
再回去看s变量的定义。p函数定义如下。
image
都是一些原生代码,看不懂也没关系,直接运行一下即可。
image
相当于就是给versionappKey赋值。

  1. makeSign函数的定义如下。
    image
    看到有md5摘要算法了,那么只要搞清楚要加密的数据就可以了。
    n的值如下。
    image
    e就是传过来的this.config.appSecret,接下来就简单了,将两个值进行拼接即可。
    image

整个解析步骤结束了。那么可以通过直接编写python代码来爬取数据了。

import requests
import hashlib

md_hash = hashlib.md5()
data = "appKey=612bcfe884763&version=v1.0.2&key=5dd20b08158402032845b45f5b67a349"
md_hash.update(data.encode("utf-8"))
sign = md_hash.hexdigest()


pageId = input("请输入你要查第几页:")
url = "https://openapi.dataoke.com/api/goods/get-goods-list?version=v1.2.4&appKey=612bcfe884763&pageId={}" \
      "&pageSize=100&sort=0&cids=1&tmall=1&commissionRateLowerLimit=3&hasCoupon=1&keyWords=&sign={}".format(pageId, sign)
resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, "
                           "like Gecko) Chrome/123.0.0.0 Safari/537.36"})
print(resp.text)

运行结果如下:
image

标签:appKey,函数,url,js,version,之莫莫,sign,config
From: https://www.cnblogs.com/sbhglqy/p/18155863

相关文章

  • vis.js时间轴数据处理
    代码案例<!doctypehtml><html><head><title>Timeline</title><scripttype="text/javascript"src="https://unpkg.com/vis-timeline@latest/standalone/umd/vis-timeline-graph2d.min.js"></script>......
  • vis.js关系图
    代码案例<!DOCTYPEhtml><htmllang="en"><head><title>Network</title><scripttype="text/javascript"src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"......
  • vis.js时间轴
    代码案例<!doctypehtml><html><head><title>Timeline</title><scripttype="text/javascript"src="https://unpkg.com/vis-timeline@latest/standalone/umd/vis-timeline-graph2d.min.js"></script>......
  • 银行卡归属地查询JSON
    [{"bankName":"中国邮政储蓄银行","bankCode":"PSBC","patterns":[{"reg":"^(621096|621098|622150|622151|622181|622188|622199|955100|6210......
  • vis.js工具提示3d图形
    代码案例<!DOCTYPEhtml><html><head><title>Graph3Ddemo</title><style>body{font:10ptarial;}div#info{width:600px;text-align:center;......
  • vis.js每个点的样式3d图形
    代码案例<!DOCTYPEhtml><html><head><title>Graph3Ddemo</title><style>body{font:10ptarial;}</style><scripttype="text/javascript"src=......
  • vis.js样式3d图形
    代码案例<!DOCTYPEhtml><html><head><title>Graph3Ddemo</title><style>body{font:10ptarial;}</style><scripttype="text/javascript"src=......
  • vis.js线条3d图形
    代码案例<!DOCTYPEhtml><html><head><title>Graph3Ddemo</title><style>body{font:10ptarial;}</style><scripttype="text/javascript"src=......
  • vis.js自定义标签3d图形
    代码案例<!DOCTYPEhtml><html><head><title>Graph3Ddemo</title><style>body{font:10ptarial;}</style><scripttype="text/javascript"src=......
  • vis.js动画移动点3d图形
    代码案例<!DOCTYPEhtml><html><head><title>Graph3Ddemo</title><style>body{font:10ptarial;}</style><scripttype="text/javascript"src=......