潍坊网站建设平台资深seo顾问
十七题是一个很经典的字体加密案例,很适合新手入门~
目录列表
- 过程分析
- 代码实现
过程分析
打开开发者工具直接看请求,发现它请求的没有加密参数,以为万事大吉的你迫不及待的点击了响应,然后就会发现依托。。。
返回的数据中字体是加密的,但是浏览器却能正常显示,说明通过JS代码对响应数据进行了解密操作,所以就要找它解密的逻辑咯~
所以直接跟栈分析,发现它的启动器很少,就两个。。
所以就可以开始断点分析了,可以跟到一个decryptFontNumber
方法中,解密的逻辑就在这里~
可以看到是通过取了FONT_DECRYPT_MAP
这个对象中的值,对密文的值进行了一个映射,从而实现了解密的逻辑,所以我们只需要拿到这个FONT_DECRYPT_MAP
的值就好了。。。
在控制台输出一下,后面就直接用python
字典来模拟它映射的逻辑就好了。
OK,逆向结束。。。
代码实现
"""
-*- coding: utf-8 -*-
@File : .py
@author : @鲨鱼爱兜兜
@Time : 2025/04/06 20:51
"""import requestsdef 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]
@鲨鱼爱兜兜