news 2026/4/22 23:49:00

Python实战:分析在线考试系统字体加密,实现题库自动下载与解密

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python实战:分析在线考试系统字体加密,实现题库自动下载与解密

前言

在日常学习中,我们经常需要从在线考试系统下载题库进行复习。然而,很多考试系统为了防止数据被爬取,采用了字体加密技术,将真实的题目内容替换为特殊字体字符,直接复制粘贴看到的是乱码。

今天,我将分享一个基于 Python 的考试题库自动化处理工具,能够突破字体加密保护,将加密的题目内容转换为可读格式。

项目简介

这是一个基于 Python 的考试题库自动化处理工具,专门用于从在线考试系统下载题库数据并解密其中的字体加密内容。该工具能够突破在线考试系统的字体反爬虫机制,将加密的题目内容转换为可读格式。

核心功能

  • 🔍智能题库下载: 自动化从在线考试系统获取题目数据
  • 🔓字体解密技术: 突破字体加密保护,还原真实题目内容
  • 📊数据结构化: 将原始数据转换为结构化的 JSON 格式
  • 🎨多平台支持: 支持 Windows 和 Linux 操作系统
  • 🚀高效处理: 使用多线程和进度条提升用户体验

技术架构

技术栈

  • 语言: Python 3.10+
  • 核心库:
    • fonttools: 字体文件处理和分析
    • requests: HTTP 请求处理
    • beautifulsoup4: HTML 内容解析
    • tqdm: 进度条显示
    • hashlib: 字形哈希计算

核心模块

模块功能描述
app.py主程序入口协调整个解密流程
FontDecryption.py字体解密引擎字形哈希计算和映射构建
solutionData.py数据解析器题目数据提取和格式化
fontDownload.py字体下载器从远程服务器下载加密字体文件

使用方法

环境准备

  1. 克隆项目

    gitclone https://github.com/happy-join-github/KaoShiBao.gitcdkaoshibao
  2. 创建虚拟环境

    python-mvenv .env
  3. 激活虚拟环境

    Windows:

    .env\Scripts\Activate.ps1

    Linux/Mac:

    source.env/bin/activate
  4. 安装依赖

    pipinstall-rrequirement.txt

数据获取步骤

  1. 手动登录系统

    • 打开浏览器,访问考试系统官网
    • 使用账号密码登录
  2. 注入 JavaScript 脚本

    • 找到你要下载的题库,进入题库详情页面
    • 按下 F12 打开开发者工具
    • 在 Console 中输入以下代码:
    constaxiosInstance=window.$nuxt.$axios;window.DecryptedQuestions=[];axiosInstance.interceptors.response.use(function(response){if(response.config&&response.config.url&&response.config.url.includes('/questions/ids')){console.log('%c=== 成功捕获解密后的明文数据 ===','color:white;background:#67c23a;font-size:16px;padding:10px;border-radius:5px;font-weight:bold;');if(Array.isArray(response.data.data)){window.DecryptedQuestions.push(response.data)}}returnresponse;},function(error){returnPromise.reject(error);});console.log("%c 注入完成",'color:white;background:#67c23a;font-size:16px;padding:10px;border-radius:5px;font-weight:bold;');
  3. 获取题库数据

    • 点击顺序/随机练习按钮(每次点击获取10道题)
    • 重复点击直到获取足够数量的题目
    • 在 Console 中输入:copy(window.DecryptedQuestions)
    • 打开项目文件夹中的title.json文件,粘贴数据
  4. 启动主程序

    python app.py

输出结果

解密后的数据以结构化 JSON 格式保存:

{"question":"采切轻向上象方法进行软件开发时...","qtype":"1","options":[{"Key":"A","Value":"汽车和座位"},{"Key":"B","Value":"汽车和车窗"},{"Key":"C","Value":"汽车和发动机"},{"Key":"D","Value":"汽车和音乐系统"}],"answer":"D","analysis":"这道题考查面向对象方法中组成关系的理解...","decrypted_question":"采用面向对象方法进行软件开发时...","special_font":"k9fddb066cb69ed65a1c9dbcc23f75f09"}

性能特点

  • 高效解密: 基于字形哈希的快速映射算法
  • 批量处理: 支持大量题目的并发解密
  • 内存优化: 流式处理大数据文件
  • 错误恢复: 完善的异常处理机制

项目结构

kaoshibao/ ├── app.py # 主程序入口 ├── requirement.txt # 依赖包列表 ├── utils/ # 工具模块 │ ├── FontDecryption.py # 字体解密核心算法 │ ├── solutionData.py # 数据解析处理 │ └── export.py # 数据导出工具 ├── fonts/ # 字体文件存储 │ ├── fontDownload.py # 字体下载器 │ ├── MSYH.TTC # 微软雅黑基准字体 │ └── msyh_glyph_hashes.json # 字形哈希映射表 ├── result/ # 处理结果输出 │ └── 20250601120000/ # 日期文件夹 │ ├── titleData_decrypted.json # 解密后的数据 │ └── questions.html # 可视化HTML文件 └── readme.md # 项目说明文档

总结

本项目通过深入分析字体加密技术,实现了对在线考试系统题库的自动化解密。核心思想是利用字形哈希匹配来还原加密字符,这种方法具有通用性,可以应用于类似场景。

免责声明

⚠️重要提醒:

  • 本代码仅用于参考和学习,造成的其他影响,与作者无关
  • 本工具仅供学习和研究使用
  • 请遵守相关法律法规和网站使用条款
  • 作者不承担任何滥用责任
  • 使用本工具产生的任何后果由用户自行承担

开源地址

如果这个项目对你有帮助,欢迎 Star 支持!

GitHub: https://github.com/happy-join-github/KaoShiBao


关于作者: Python 爱好者,专注于数据采集和自动化工具开发。如果你有更好的想法或建议,欢迎在评论区交流!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 3:43:36

渗透测试入门教程(非常详细),从零基础入门到精通,看完这一篇就够了

什么是渗透测试 渗透测试就是模拟真实黑客的攻击手法对目标网站或主机进行全面的安全评估,与黑客攻击不一样的是,渗透测试的目的是尽可能多地发现安全漏洞,而真实黑客攻击只要发现一处入侵点即可以进入目标系统。 一名优秀的渗透测试工程师也…

作者头像 李华
网站建设 2026/4/19 3:37:28

后悔没早点明白!这10条职场潜规则条条扎心

刚毕业那会儿,我觉得职场就是另一个校园——努力就有回报,公平竞争,多劳多得。三年后,脸被打得生疼。不是抱怨,只是发现学校没教的东西太多了,而这些东西往往决定了你能走多远。今天把这些年踩过的坑、悟出…

作者头像 李华
网站建设 2026/4/22 12:59:00

一个开发者的自白:我效率低、爱熬夜、还总想“白嫖”?

大家好,我是凤希。今天想和大家坦诚地聊聊我自己,一个正在开发“凤希AI伴侣”的普通程序员。看了我昨天的日记素材,我发现自己的缺点简直“罄竹难书”。与其藏着掖着,不如摊开来说,或许这才是最真实的人设。缺点一&…

作者头像 李华
网站建设 2026/4/18 18:52:46

1.46 DeepSeek + Faiss实战:搭建本地知识库检索系统完整教程

1.46 DeepSeek + Faiss实战:搭建本地知识库检索系统完整教程 引言 本文将实战演示如何用DeepSeek(大模型)和Faiss(向量数据库)搭建一个完整的本地知识库检索系统。从环境配置到系统部署,提供完整的代码和步骤。 一、系统架构 1.1 架构设计 #mermaid-svg-R2FdcFFVLz0a…

作者头像 李华
网站建设 2026/4/19 3:30:11

CPU三大核心部件功能详解

首先,想象一下CPU是一个高度自动化、极其高效的“工厂”,它的任务就是不停地执行“指令”(即程序)。而IR、ID和OC就是这个工厂流水线上的三个关键工位,共同负责理解并执行每一条指令。一、专业解释(角色与作…

作者头像 李华