侧边栏壁纸
博主头像
MicroMatrix 博主等级

明月别枝惊鹊,清风半夜鸣蝉

  • 累计撰写 135 篇文章
  • 累计创建 41 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

X志愿md5参数加密逆向解析笔记

David
2026-04-27 / 0 评论 / 0 点赞 / 32 阅读 / 0 字

这篇文章记录一下,我是如何用 python 完成 JS 逆向的,逆向的网站是 x 志愿。本教程只是为了学习相关知识。


1. 案发现场:消失的 200 OK

作为一名合格的爬虫 LSP(Large-Scale Parser,别想歪了),我本来以为爬取一个大学信息列表不过是手到擒来的事。结果,当我兴冲冲地在 Python 里敲下 requests.get() 之后,服务器反手就给了我一个“身份验证失败”。

我盯着那个空的 JSON 响应,陷入了沉思。难道是我的姿势不对?打开 F12 一看,好家伙,原来在 x 志愿 的请求头(Headers)里,藏着一个叫 u-sign 的玄学参数。

这个 u-sign 长得一副 MD5 的“大众脸”(32位字符串),而且只要你换个页码或者改个参数,它就原地变身,导致你的请求瞬间夭折。


2. 侦探上线:追踪“嫌疑人”

逆向的第一步,不是写代码,而是寻根溯源

搜索是最高级的懒惰

在 Chrome 的开发者工具里,按下那个改变命运的组合键 Ctrl + Shift + F,全局搜索 u-sign

找到图上的内容,所有的 u-sign

X 标记了宝藏

找到位置后,我们直接在疑似加密函数的入口处(比如视频中提到的 i 方法)打下一个断点。 刷新页面,程序瞬间被“定身”。这时候我们就像上帝一样,可以俯瞰所有的局部变量。记得所有找到的都要打上这样的蓝色的标。


3. 硬核拆解:剥开 MD5 的外壳

通过滚动加载,触发之前打好的断点。

这里可以看到 u-sign 的生成主要靠一个 o 函数和,2个形参。

获取所要的内容

像我这样通过在断点触发的情况下,如图上操作,就可以获取需要的函数和参数内容。


4. 降维打击:让 AI 替我掉头发

从console中打印出 o 函数以及函数中的2个变量的值,然后将 e 函数和2个变量的内容丢给AI,因为u-sign的生成就是依据固定的算法生成的,所以直接丢给AI,让AI给出完整的可以使用的代码


5. 战果汇报:Python 模拟实现

最后,我们将“秘制配方”封装成一个 Python 函数。大概长这样(严谨起见,这里只展示结构):

Python

import hashlib

def build_u_sign(url: str, data: dict[str, Any] | None = None) -> str:
    # build_sign_source 是还原后的的 i 函数
    raw = build_sign_source(url=url, data=data)
    return hashlib.md5(raw.encode("utf-8")).hexdigest()

带上动态生成的 u-sign 再次请求,那种 JSON 数据如泉水般涌出的感觉,真香![00:06:44]


结语:路漫漫其修远兮

x 志愿 的逆向过程告诉我们一个道理:防守者的门槛,往往就是进攻者的阶梯。

虽然 MD5 签名只是入门级的对抗,但它背后的参数定位、断点调试和逻辑还原思想,是通往更高阶逆向(比如魔改签名、环境自检等)的必经之路。

本教程仅供交流学习,请勿用于非法用途。 毕竟,监狱的伙食可能并没有外卖好吃。

0

评论区