【码上爬】 题九:webpack调试 堆栈分析

暗号:aHR0cHM6Ly9tYXNoYW5ncGEuY29tL3Byb2JsZW0tZGV0YWlsLzkv

题目:

先分析数据接口,可以看到m和tt是加密的:

然后在发起程序的最上面的堆栈下一个断点,断点断住后调整堆栈,并且观察作用域,查找加密值的生成位置:

所有堆栈都看完了,但是还是没有找到,最后检查这里的堆栈,发现给m和tt赋值了:

断点后m的值就在这里生成:

其实就是使用c函数对一个包含时间戳的字符串进行加密:

但是仔细检查c里面的代码,会发现加密值是在这里生成:

还原后,它就是一个sha1加密:

最后安装crypto-js (使用npm install crypto-js) ,加密的代码仅需要3行:

当然也可以直接生成python代码, tt的生成更简单,就是将时间戳进行base64加密,也可以直接使用python生成,最后就能够正确获取到数据了:

附上完整python代码(headers和cookie 已经删除):

复制代码
import hmac

import hashlib

import time

import requests

import json

import base64

def base64_encode(text: str) -> str:

    """

    字符串 Base64 加密

    和 JavaScript: CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text)) 结果一致

    """

    # 转 utf-8 字节 → base64 编码 → 转回字符串

    bytes_data = text.encode("utf-8")

    base64_bytes = base64.b64encode(bytes_data)

    return base64_bytes.decode("utf-8")

def get_signature():

    # 获取当前时间戳(毫秒级,和 JS new Date().getTime() 完全一致)

    sjc = int(time.time() * 1000)



    # 拼接字符串:9527 + 时间戳

    data = f"9527{sjc}"



    # 密钥

    key = "xxxooo"



    # HmacSHA1 加密(和 crypto-js HmacSHA1 结果完全相同)

    hmac_result = hmac.new(

        key.encode('utf-8'),

        data.encode('utf-8'),

        hashlib.sha1

    )



    # 转成 16 进制小写字符串(crypto-js 默认输出格式)

    a = hmac_result.hexdigest()



    # 返回最终结果 + 时间戳(方便你对接接口)

    return a, sjc

sign, timestamp = get_signature()

headers = {}

cookies = {}

url = "https://mashangpa.com/api/problem-detail/9/data/"

data = {

    "page": 2,

    "m": sign,

    "tt":base64_encode(str(timestamp))

}

data = json.dumps(data, separators=(',', ':'))

response = requests.post(url, headers=headers, cookies=cookies, data=data).json()

print(response)
相关推荐
犹豫的果冻布丁1 小时前
从零给 DeepSeek Harness 写一个壁纸皮肤插件(已开源)
前端·后端
漏刻有时2 小时前
数据可视化Three.js 3D 地图实战:单文件原生实现省域区县拉伸建模
前端
会说话的番茄2 小时前
AI 满嘴跑火车怎么办?给它配个"小抄"
前端·aigc
计算机魔术师2 小时前
AI 权力集中辩论实录:从「token 工厂」到「唯一幸存者」
前端
eric-sjq2 小时前
WanlyFrontend 中文声明式前端语言完全指南:让 0.6B 模型写出漂亮网页
前端
Full Stack Developme2 小时前
跨站请求伪造 (CSRF) 是什么 设计及工作原理
前端·okhttp·csrf
濮水大叔2 小时前
CabloyJS 强大之处不仅仅是 IoC,而是全栈资源的寻址体系
typescript·node.js·全栈
MoSTChillax2 小时前
UI规范设计:从视觉到交互的全面指南
前端·ui·产品经理·设计规范·vibecoding
雪碧聊技术2 小时前
Vue + Element Plus 实现文本溢出显示省略号及悬浮提示
前端·javascript·css·vue.js·文本溢出省略
eric-sjq2 小时前
0.6B 前端生成模型本地部署实战:消费级显卡跑通 WanlyFrontend 全流程
前端·本地部署