当前位置: 首页 > news >正文

图灵逆向——题六-倚天剑

从第六题开始就要有个先看看请求头的习惯了[doge]。
别问博主为什么要你养成这个习惯,问就是博主被坑过。。。
在这里插入图片描述
headers里面有一个加密参数S,然后你就去逆向这个S对吧。
然后一看响应:
在这里插入图片描述
好家伙返回的还是个密文,所以要两次逆向咯。。。

目录列表

    • 过程分析
      • headers中的S参数
      • 返回密文的解密
    • 代码实现

过程分析

headers中的S参数

在这里插入图片描述
可以看到这个S是32位的[疯狂暗示]。。。
根据启动器可以定位到headers参数生成的位置。
在这里插入图片描述
打上断点,可以看到headers是赋了一个hhh变量的值。
在这里插入图片描述
然后这个hhh就在上面的不远处。。。
在这里插入图片描述
所以大致的加密逻辑就是这个window.xxoo方法了,先不急着点进去~
可以看到加密的明文就是sssssbbbbb与一个13位的时间戳做了一个字符串的拼接操作,然后传给了加密函数。(结果是个32位的[doge])
我们可以大胆的猜测一下~
在这里插入图片描述
OK破案了,就是一个标准的md5加密算法,头部参数就解决了~

返回密文的解密

回到我们刚刚跟栈的位置,可以清晰的看到解密的方法就在下面。。。
在这里插入图片描述
打上断点进去看看,发现就是这里咯~
在这里插入图片描述
点进去查看方法内部具体的解密逻辑
在这里插入图片描述
然后就破案了,发现是个标准的AES算法。。。
所以这里就不要扣代码了,直接用标准库来还原算法,把keyiv都换成它的值就行了。。。

代码实现

"""
-*- coding: utf-8 -*-
@File   : .py
@author : @鲨鱼爱兜兜
@Time   : 2025/04/05 21:25
"""

import json
import time
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import binascii
import requests
from hashlib import md5


def decrypt(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': 'C8ED1E9E0FB8E4AC',
    'sessionid': '你的值',
    'v': '你的值',
    'Hm_lpvt_b5d072258d61ab3cd6a9d485aac7f183': '1743860531',
}
s = 0
for page in range(1, 21):
    tt = int(time.time() * 1000)
    headers = {
        'accept': '*/*',
        'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
        'cache-control': 'no-cache',
        'pragma': 'no-cache',
        'priority': 'u=1, i',
        'referer': 'https://stu.tulingpyton.cn/problem-detail/6/',
        's': md5(f'sssssbbbbb{tt}'.encode()).hexdigest(),
        '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',
        'tt': f'{tt}',
        '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',
    }
    params = {
        'page': f'{page}'
    }
    response = requests.get('https://stu.tulingpyton.cn/api/problem-detail/6/data/', params=params, cookies=cookies,
                            headers=headers)
    response.raise_for_status()
    response.encoding = 'utf-8'
    data = json.loads(decrypt(response.json()['t']))
    print(data)
    s += sum(data['current_array'])
print(s)

第六题秒了[doge]~
@鲨鱼爱兜兜

相关文章:

  • 费马小定理
  • FRP调用本地摄像头完成远程拍照
  • 2台8卡L20服务器集群推理方案
  • FlashDB 在嵌入式系统中占用硬件资源
  • 2025 跨平台技术如何选:KMP 与 Flutter 的核心差异
  • 【ISP】ISP pipeline(AI)
  • 创建采购申请报错不可能为销售订单或项目库存确定科目 消息号 ME558
  • dubbo配置中心
  • 内核态切换到用户态
  • ①(PROFINET 转 EtherNet/IP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
  • 【Nodebb系列】Nodebb笔记写入方案
  • DDPM理论基础解析
  • 使用chainlit出现【无法访问服务器】或【Could not reach the server.】解决方案
  • Redis的主从复制
  • 解码AI大脑:Claude的思维显微镜与语言炼金术
  • 数学知识——矩阵乘法
  • 牛客KY222 打印日期
  • Spring Boot 3.5新特性解析:自动配置再升级,微服务开发更高效
  • 【设计模式】模板模式
  • LeetCode详解之如何一步步优化到最佳解法:26. 删除有序数组中的重复项
  • 新网站建设总结/南宁网站seo
  • 有没有专门做线下活动的网站/sem是什么意思
  • 手把手教你入侵网站修改数据/html制作网页代码
  • 做自己的网站要钱么/企业策划书
  • 德宏企业网站建设/优化网站广告优化
  • 网站如何做优化推广/关键词点击工具