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

图灵逆向——题十七-字体加密

十七题是一个很经典的字体加密案例,很适合新手入门~

目录列表

    • 过程分析
    • 代码实现

过程分析

打开开发者工具直接看请求,发现它请求的没有加密参数,以为万事大吉的你迫不及待的点击了响应,然后就会发现依托。。。
在这里插入图片描述
返回的数据中字体是加密的,但是浏览器却能正常显示,说明通过JS代码对响应数据进行了解密操作,所以就要找它解密的逻辑咯~

所以直接跟栈分析,发现它的启动器很少,就两个。。
在这里插入图片描述
所以就可以开始断点分析了,可以跟到一个decryptFontNumber方法中,解密的逻辑就在这里~
在这里插入图片描述

可以看到是通过取了FONT_DECRYPT_MAP这个对象中的值,对密文的值进行了一个映射,从而实现了解密的逻辑,所以我们只需要拿到这个FONT_DECRYPT_MAP的值就好了。。。
在这里插入图片描述
在控制台输出一下,后面就直接用python字典来模拟它映射的逻辑就好了。
在这里插入图片描述
OK,逆向结束。。。

代码实现

"""
-*- coding: utf-8 -*-
@File   : .py
@author : @鲨鱼爱兜兜
@Time   : 2025/04/06 20:51
"""

import requests


def decrypt(arr: list):
    """
    My decrypt
    :param arr:
    :return:
    """
    FONT_DECRYPT_MAP = {
        'ꙮ': '0',
        'ઊ': '1',
        'સ': '2',
        'ત': '3',
        'ধ': '4',
        'ન': '5',
        'પ': '6',
        'ફ': '7',
        'બ': '8',
        'ભ': '9'
    }
    for i in range(len(arr)):
        arr[i] = ''.join([FONT_DECRYPT_MAP.get(char, char) for char in arr[i]])
    return [int(_) for _ in arr]


cookies = {
    'sessionid': '你的值',
    'Hm_lvt_b5d072258d61ab3cd6a9d485aac7f183': '1743870511,1743871379,1743932867,1743933915',
    'HMACCOUNT': '你的值',
    'Hm_lpvt_b5d072258d61ab3cd6a9d485aac7f183': '1743942809',
}
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/17/',
    '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',
    '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',
}
s = 0
for page in range(1, 21):
    params = {
        'page': f'{page}'
    }
    response = requests.get('https://stu.tulingpyton.cn/api/problem-detail/17/data/', params=params, cookies=cookies,
                            headers=headers)
    response.raise_for_status()
    response.encoding = 'utf-8'
    print(response.json())
    s += sum(decrypt(response.json()['current_array']))
print(s)

这题还是相对其他题目比较简单的~

第十七题,秒了~[doge]

在这里插入图片描述

@鲨鱼爱兜兜

相关文章:

  • 网站开发需要哪些人员seo行业岗位有哪些
  • 购物网站哪个好病毒式营销的案例
  • 襄阳网站建设企业电商网站建设平台
  • 如何做行业网站做营销策划的公司
  • 有哪些做司考真题的网站品牌推广的概念
  • 网站开发进修广州seo优化效果
  • 常见的 set 选项与空变量检查
  • QML Item 元素
  • stack容器(栈容器)
  • RT-Thread 屏蔽在线软件包的方法
  • 【愚公系列】《高效使用DeepSeek》064-跨文化谈判
  • libva之ffavdemo分析
  • 视觉革命:跨境电商进入“以图搜物”时代
  • 【Harmony】端云一体化(云函数)
  • Linux vagrant 导入Centos到virtualbox
  • 重构谷粒商城11:node快速入门
  • linux命令五
  • 三分钟知识点:Spring事务的传播机制
  • Python基础知识点(类和对象)
  • 初识MySQL · 复合查询(内外连接)
  • uniapp开发微信小程序,根据胶囊按钮来自定义导航栏
  • java InterruptedException
  • 从零开始写android 的智能指针
  • vue watch 和 watchEffect的区别和用法
  • C++:日期类,运算符重载,深浅拷贝问题
  • python:面向对象之包