好友
阅读权限10
听众
最后登录1970-1-1
|
前言:
仅作为个人学习,请勿将导出的题库用于商业目的
本人也是个逆向小白请见谅,文中多数操作为咨询AI或其他工具
1.逆向
首先进入刷题页面,开发者搜索字符串”decrypt(“,这是一个解密函数,后面加密的数据可以通过这个函数进行解密
在函数底部下个断点,刷新后返回上层
这里密文 密钥 明文都出来了
这些就是这个题目下的所有题目的题目id
主要有两个api: 1./api/questions/fetch 参数是题库的id,返回该题库id下的所有的题目id
2./api/questions/ids 参数是题目的id,返回是题目的详细信息(所返回题目被文字混淆,需要修复)
![]()
2.题目解密
在上面通过请求fetch有了题目id,再通过ids有了题目的详细信息,但都是被加密过的,只需要用到第一次字符串搜索到的函数解密
下面是我用ai写的一段解密函数,可以参考(可用于实际解密),题目id和题目内容用的一样方法
参数1:密文
参数2:密钥(断点后返回找o的值)
def decrypt(encrypted_b64, key_str):
"""TripleDES 解密"""
key = key_str.encode('utf-8')
if len(key) < 24:
key = key.ljust(24, b'\0')
missing = len(encrypted_b64) % 4
if missing:
encrypted_b64 += '=' * (4 - missing)
encrypted = base64.b64decode(encrypted_b64)
cipher = DES3.new(key, DES3.MODE_ECB)
decrypted = cipher.decrypt(encrypted)
decrypted = unpad(decrypted, DES3.block_size)
return decrypted.decode('utf-8')
3.题目混淆
题目详细内容解析出来就以下json的格式
{
"paper_id": "26845979",
"paper_name": "《2026年最新-含解析》华为数通H12-831-DATACOM-HCIP稳定题库",
"total_questions": 383,
"questions_by_type": {
"1": {
"name": "单选题",
"count": 113,
"questions": [
{
"id": "6522220923",
"uid": "18041059",
"paperid": "26845979",
"chapter": "0",
"difficulty": "2",
"difficulty_score": "0.00",
"parentid": "0",
"path": "",
"ptype": "4",
"question": "如图所示的网络,相邻的讲由器之间使坏直连接口建立EBGP邻消关系,每台设备的Router ID为10.0.X.X,AS号为6500x.其水x为讲由器的编号,R1和R4均有到达192.168.1.0/24的静默讲由,通过import方式引入BGP,R3针对所有邻消配置了\"peer y.y.y.y as-path-filter 1 import\"命令,以下将一项可以使R3到达192.168.1.0/24份择AS-Path最长的讲径?<p><img src=\"//up.zaixian*****.com//5283701/user_import_question/64e13f8425c7724e9346037c7ddf99cb.png\" alt=\"64e13f8425c7724e9346037c7ddf99cb.png\"></p>",
"qtype": "1",
"type_name": "",
"number": "",
"options": "[{\"Key\":\"A\",\"Value\":\"<p>ip as-path-filter 1 permit .*\\nip as-path-filter 1 deny 65001$\\nip as-path-filter 1 deny ^65005<\\/p>\"},{\"Key\":\"B\",\"Value\":\"<p>ip as-path-filter 1 deny ^65002\\nip as-path-filter 1 deny ^65005\\nip as-path-filter 1 permit .*<\\/p>\"},{\"Key\":\"C\",\"Value\":\"<p>ip as-path-filter 1 deny 65001$\\nip as-path-filter 1 permit .*<\\/p>\"},{\"Key\":\"D\",\"Value\":\"<p>ip as-path-filter 1 deny .*6500\\nip as-path-filter 1 permit .*<\\/p>\"}]",
"answer": "B",
"analysis": "ip as-path-filter 1 permit .* 可以使R3到达192.168.1.0/24选择AS-Path最长的路径。AS-Path是BGP中用于表示路由路径的属性,它由一系列AS号构成,AS号之间使用空格分隔。在这里,R3希望选择AS-Path最长的路径,即AS号数量最多的路径。为了实现这个目标,我们可以在R3上配置AS-Path过滤器,拒绝包含特定AS号的路径。根据题目描述,R3希望拒绝包含AS号65002和65005的路径,因此应该配置ip as-path-filter 1 deny ^65002和ip as-path-filter 1 deny ^65005。同时,为了允许其他路径通过,应该配置ip as-path-filter 1 permit .*。这样,R3就会选择AS-Path最长的路径来到达192.168.1.0/24。",
"hash": "556bf6e7286104e66c8c836b3aff3e3c8e0ccd30",
"question_context_id": "",
"question_images": "",
"answer_images": "",
"extra": "",
"status": "0",
"is_show": "1",
"editor": "",
"created_at": "2025-11-10 20:16:31",
"updated_at": "2025-11-10 20:16:31",
"note": "",
"note_is_public": "1",
"note_id": "0",
"self_analysis": "",
"ai_analysis": "根据题目描述,R3针对所有邻居配置了'peer y.y.y.y as-path-filter 1 import'命令,意味着R3会引入AS路径过滤。为了使R3能够到达192.168.1.0/24,需要确保引入的路径不包含特定的AS编号,特别是65002和65001等可能引起路由冲突的AS编号。选项B中的配置通过deny语句排除了65002和65001等AS路径,同时允许其他路径通过,符合题意。",
"ai_analysis_like": "-1",
"point": null,
"all_right": "6318",
"all_wrong": "497",
"all_accuracy": "0.9270",
"special_font": "k2c346c90af9095a679136afc00d5b6b2"
},在"question": "如图所示的网络,相邻的讲由器之间使坏直连接口建立EBGP邻消关系中我们能明显发现这里面的文字内容被替换或混淆了
定位到元素位置,我们能发现他加载了一个.ttf的文件,禁止使能后发现前端文字也发生了混淆,把正确的“路由器” 写成“讲由器“,说明这个.ttf中应该是把混淆字和正常字关联起来了
network中下载这个.ttf文件并打开
根据上面的“路由器” 写成“讲由器“,我们搜索”路”字,发现直接定位到“讲”这个字上,再通过Unicode码 去正常的字体文件里搜索发现,这个$8DEF对应的就是路由器
所以我们就能判断他们把ttf中的文字做了替换,在正确的Unicode编码上改成另外一个字,然后再通过正常的ttf文件做对比进行还原
在之前获取到json中已经有了不同题目的ttf文件"special_font": "k2c346c90af9095a679136afc00d5b6b2"(每次刷新都有可能变)
接下来在network中找到url的前缀,拼接special_font内容下载
![]()
1.请求获取所有题目id并解密
2.根据题目id获取所有题目详细内容并解密成json(混淆字符的替换?)
3.根据json内容转换excel、word、txt
|
|