[原创] 猿人学 学员14题 js_fuck 逆向分析

查看 30|回复 4
作者:ZenoMiao   
本次分析网站为: aHR0cHM6Ly93d3cucHl0aG9uLXNwaWRlci5jb20vY2hhbGxlbmdlLzE0


image.png (40.86 KB, 下载次数: 0)
下载附件
2025-6-13 14:46 上传

开搞!!!
先打开F12抓包, 翻页请求, 查看加密参数, 发现在请求参数中发现key为uc的参数是加密的


image.png (11.87 KB, 下载次数: 0)
下载附件
2025-6-13 14:48 上传

打下XHR断点, 继续翻页后跟盏发现了许多东西, data 的值是list传过来的, 而list刚好在上面由page和uc组成的(uc恰好是我们要找的加密参数),  而uc是window.a获取的, 在这里上面有一串js_fuck(好像没用, 直接忽略), 再上面是window.a的加密内容, 看代码看出来应该是AES加密, 打个断点继续分析


image.png (25.01 KB, 下载次数: 0)
下载附件
2025-6-13 14:50 上传

跟盏发现window.a传进来的参数word是由10位的时间戳+"|"+页码组成的, 而认识js的AES加密的就知道CryptoJS.AES.encrypt第一个参数为加密内容, 第二个参数为key, 而下面可以看到他的mode是ECB, AES的ECB是不需要iv的, 所以置空, key是从window.m来的, window.m只是对window.k进行了十六进制的转换


image.png (18.53 KB, 下载次数: 0)
下载附件
2025-6-13 14:54 上传

分析完毕, 开撸python代码
首先先import 所需的库
[Python] 纯文本查看 复制代码
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
然后new一个crypto对象把key放进去, key需要进行encode, 第二个参数需要选择ECB
[Python] 纯文本查看 复制代码
crypto = AES.new("wdf2ff*TG@*(F4)*YH)g430HWR(*)wse".encode(), AES.MODE_ECB)  # key, mode, iv. ECB不需要IV
然后构建加密参数, 进行加密
[Python] 纯文本查看 复制代码
for i in range(1, 101):
        crypto_data = f"{int(time.time())}|{i}"
        data = {
            'page': i,
            'uc': base64.b64encode(crypto.encrypt(pad(crypto_data.encode(), AES.block_size))).decode()
        }
尝试加密看看是否加密后的结果跟网页内一致


image.png (10.64 KB, 下载次数: 0)
下载附件
2025-6-13 15:03 上传



image.png (2.68 KB, 下载次数: 0)
下载附件
2025-6-13 15:03 上传

打完收工


image.png (48.41 KB, 下载次数: 0)
下载附件
2025-6-13 15:04 上传

核心代码都放上去了, 其他的代码就不贴了  提高动手能力.

下载次数, 参数

kmyp   

感谢感谢
yujianlixi   

看完这些,已经放弃了代码工程
yy964140711   

没看懂,已弃
pojieneo520   

没看懂,已弃
您需要登录后才可以回帖 登录 | 立即注册

返回顶部