krycha420/Antivirus

GitHub: krycha420/Antivirus

一个基于 Python 的简易杀毒软件扫描器,通过文件签名和哈希机制检测并清除恶意软件。

Stars: 0 | Forks: 0

1. 作者信息 姓名:Krystian Kopeć 学号:337570 课程:计算机科学与编程基础 2. 项目目标与描述 本项目的目标是制作一个简单的杀毒软件扫描器,它可以扫描用户指定的目录, 检测包含病毒特征码的文件,并允许将其切除。该应用程序实现了任务要求的所有功能: - 文件索引 - 扫描(全盘扫描、快速扫描、循环扫描) - 威胁检测 - 修复(从受感染的文件中切除病毒特征码) 程序在控制台中运行,并以 JSON 格式存储文件状态。 3. 程序类划分及类描述 该程序按照面向对象编程的原则设计,划分为三个类以及一个控制模块。 - File 类(`file.py` 模块) 该类充当数据容器,代表系统中的单个文件。 1. 存储以下信息:文件名、路径、hash、最后修改时间、状态以及检测到的病毒特征码。 - Indexer 类(`indexer.py` 模块) 该类负责访问文件系统以及数据的读取和写入。 1. 递归搜索目录以查找文件。 2. 计算文件的 hash。hash 的计算是通过分块(chunks)实现的,即在计算大文件(例如视频)的 hash 时,为了不消耗过多 RAM,会分块读取数据,每次读取 8192 字节来计算 hash。 3. 管理文件的读取和写入。 4. 处理异常。 - Scanner 类(`scanner.py` 模块) 将 indexer 的操作与病毒数据库集成在一起。 ``` 1. Wczytuje sygnatury wirusów z pliku konfiguracyjnego (config.json). Celowo sygnatury wirusów są zapisane w systemie 16 aby były bardziej czytelne niz zapis bitowy. Dlatego potem korzystam z metody bytes.fromhex() aby zamienić sygnature z postaci heksadecymalnej na obiekt typu bytes, następnie czytam pliki binarnie i sprawdzam czy w pliku występuje sygnatura.Sygnatury nie są wpisane jako zwykły tekst, bo nie obsługiwałoby to znaków niedrukowalnych. 2. Aktualizuje stan w przypadku nowych lub zmodyfikowanych plików. 3. Prowadzi 3 tryby skanowania. 4. Zawiera metodę repair, która otwiera binarnie zainfekowany plik i usuwa ciąg bajtów odpowiadający wirusowi. ``` - 主模块(`main.py`) 负责与用户进行交互。 1. 获取待扫描目录的路径。 2. 显示扫描模式选择菜单。 3. 处理决策逻辑(在检测到感染的情况下)。 4. 用户指南与文件格式 要运行程序,请进入包含源代码和配置文件的目录,然后在终端中输入命令: python3 main.py - 程序启动后,会提示输入目录路径。 - 接着,用户需要从三种扫描模式中选择一种: 1:全盘扫描文件夹。 2:快速扫描(仅扫描更改)。 3:循环扫描(程序按照用户输入的间隔时间进行扫描)。 - 如果检测到病毒,程序将显示一条消息并询问:Do you want to cut out viruses YES/NO。选择 YES 将从文件中移除病毒。 配置文件与输出文件。 1. `config.json`(病毒库)包含病毒定义的 JSON 文件,格式如下: {"NAZWA_WIRUSA": "SYGNATURA_HEX", ...} 为了使程序能够检测到病毒,受扫描的文件在二进制读取视图中必须包含该病毒的特征码。 (如果病毒是单词“VIRUS”,则其十六进制特征码为 5649525553,转换为 bytes 类型对象后即为“VIRUS”。因此,只要二进制读取视图中存在“VIRUS”字样,程序就能检测到该病毒。) 2. `indexes.json`(文件索引)由程序生成的文件。以 JSON 格式存储文件状态。用于在应用程序多次运行之间记住状态。结构如下: [ { "name": "plik.txt", "path": "C:\\Sciezka\\do\\pliku.txt", "modification_time": 1704281000.0, "hash": "a1b2c3d4...", "status": "clean", "virus": null } ] 5. 反思部分 工作范围。 所有的项目要求均已实现。应用程序能够对文件进行索引、计算它们的 hash 并检测文件系统中的更改。 扫描机制可以检测到被定义为病毒特定的字节序列。`repair` 方法则用于移除这些“危险的字节序列”。 遇到的问题及解决方案。 - 起初我没有进行递归进入子目录的操作,但为了修复这个问题,只需使用 `rglob` 方法即可。 - 我原本以为程序只能扫描与杀毒软件位于同一目录下的文件夹,但实际上,提供绝对路径就解决了这个问题。
标签:Homebrew安装, Python, 文件哈希, 无后门, 特征码匹配, 逆向工具