您的位置:首页 > 健康 > 美食 > 手机模拟器_制作企业网站素材视频_免费网站在线观看人数在哪直播_深圳百度公司地址在哪里

手机模拟器_制作企业网站素材视频_免费网站在线观看人数在哪直播_深圳百度公司地址在哪里

2025/7/5 21:44:24 来源:https://blog.csdn.net/m0_73641772/article/details/147103207  浏览:    关键词:手机模拟器_制作企业网站素材视频_免费网站在线观看人数在哪直播_深圳百度公司地址在哪里
手机模拟器_制作企业网站素材视频_免费网站在线观看人数在哪直播_深圳百度公司地址在哪里

目录列表

    • 过程分析
      • headers头部`M`参数分析
      • 载荷`x`参数分析
      • 响应数据解密分析
    • 代码实现

一进来还是一个无限debugger,前面有讲怎么过,这里直接过掉~
在这里插入图片描述
老规矩,养成习惯,先看请求头里有没有加密参数发现好像是有个`M`,它是个32位的,逆的多了就有反应了[doge](可能是MD5)
在这里插入图片描述
再看载荷参数,好,也有一个x。。
在这里插入图片描述
然后再看响应结果,还是个密文,好!直接放弃。。。[doge]
在这里插入图片描述
那当然不能放弃了[doge],来吧开干~

过程分析

万事开头难,那就从头(headers)开始[doge]~

headers头部M参数分析

老规矩,在发包的位置打个断点,跟栈分析
在这里插入图片描述
然后跟着跟着就发现它是依托。。。
在这里插入图片描述
使用解混淆工具,对混淆的代码进行解混淆,贴到本地node环境中,然后可以看到设置了axios的请求拦截器和响应拦截器。(头部的M参数,载荷中的x参数和返回密文解密的生成逻辑都能在这个方法中看到)
在这里插入图片描述
逻辑大概就是:字符串xialuo和时间戳的拼接,传给了前面window.eeee方法进行参数加密,最后得到M的值。由于它结果是一个32位的字母数字的组合,那么猜测是md5
在这里插入图片描述OK破案了,M的加密方式就是标准的md5加密算法。

载荷x参数分析

还是刚刚参数M生成的位置
在这里插入图片描述
可以看到是一个SHA256的哈希加密算法,可以再往上找一找这个dd.a是什么东西
然后就会发现是CryptoJS标准库。
在这里插入图片描述
去网页验证一下看看是不是标准的哈希算法
在这里插入图片描述
OK破案了,就是标准的SHA256加密算法,直接调用标准算法库中加密方法即可。

响应数据解密分析

还是之前定位到的地方,可以看到axios响应拦截器的逻辑,是把相应的密文丢给了xxxxoooo方法进行了解密。
在这里插入图片描述
然后进入这个解密方法就能看到很清晰的AES解密逻辑,同时key和``iv就定义在方法的上面。
在这里插入图片描述
然后可以再看一下这个dd.a是个什么东西,最后发现它就是CryptoJS这个标准库。
在这里插入图片描述
OK逆向结束~

代码实现

选择直接用python复现JS的加密解密逻辑

"""
-*- coding: utf-8 -*-
@File   : .py
@author : @鲨鱼爱兜兜
@Time   : 2025/04/05 21:47
"""from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import requests
import binascii
from hashlib import md5, sha256
import json
import timedef myDecrypt(encrypted_hex):"""My Decrypt Func:param encrypted_hex::return:"""key = b'xxxxxxxxoooooooo'iv = b'0123456789ABCDEF'ciphertext = binascii.unhexlify(encrypted_hex)cipher = AES.new(key, AES.MODE_CBC, iv)decrypted = cipher.decrypt(ciphertext)plaintext = unpad(decrypted, AES.block_size)return plaintext.decode()cookies = {'Hm_lvt_b5d072258d61ab3cd6a9d485aac7f183': '1743857254','HMACCOUNT': '你的值','sessionid': 'gaq8bymph3affd623emqto7gtxor6lj4','v': '你的值','Hm_lpvt_b5d072258d61ab3cd6a9d485aac7f183': '1743860809',
}
s = 0
for page in range(1, 21):ts = int(time.time() * 1000)M = md5(f'xialuo{ts}'.encode()).hexdigest()headers = {'accept': 'application/json, text/javascript, */*; q=0.01','accept-language': 'zh-CN,zh;q=0.9,en;q=0.8','cache-control': 'no-cache','m': M,'pragma': 'no-cache','priority': 'u=1, i','referer': 'https://stu.tulingpyton.cn/problem-detail/7/','sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-origin','ts': f'{ts}','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36','x-requested-with': 'XMLHttpRequest',}params = {'page': f'{page}','x': sha256(f'{M}xxoo'.encode()).hexdigest(),}response = requests.get('https://stu.tulingpyton.cn/api/problem-detail/7/data/', params=params, cookies=cookies,headers=headers)response.raise_for_status()response.encoding = 'utf-8'print(response.json())s += sum(json.loads(myDecrypt(response.json()['r']))['current_array'])
print(s)

第七题,勉强秒了~[doge]
@鲨鱼爱兜兜

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com