yasssefrei/file-integrity-monitor

GitHub: yasssefrei/file-integrity-monitor

基于 SHA-256 哈希比对的 Python 文件完整性监视器,通过基线快照检测文件系统变更并输出带时间戳的审计日志,面向网络安全教学场景。

Stars: 0 | Forks: 0

# 文件完整性监视器 (FIM) ![语言](https://img.shields.io/badge/Python-3.14-blue.svg) ![依赖](https://img.shields.io/badge/d%C3%A9pendances-stdlib%20uniquement-brightgreen.svg) ![许可证](https://img.shields.io/badge/licence-MIT-lightgrey.svg) 用于检测文件系统变更的教学工具。它会计算 每个文件的 **SHA-256** 哈希值,将其与可信参考(即 *baseline*)进行 比较,并带有时间戳地记录每一项异常。 ## 功能 - 递归扫描文件夹快照:SHA-256 哈希值 + 大小 + 修改日期。 - 检测 **新增 (AJOUTÉS)**、**修改 (MODIFIÉS)** 和 **删除 (SUPPRIMÉS)** 的文件。 - 分块读取(4 Kio):处理大文件时无需加载至 RAM。 - 带有 **ISO-8601 UTC** 时间戳的审计日志,提供可读文本格式及 JSON Lines 格式 (SIEM)。 - 检测到异常时返回 **非零退出代码**,便于集成至 cron / CI。 - 健壮的错误处理(文件不可读、权限被拒绝):记录日志,绝不崩溃。 - **零依赖**:仅使用 Python 的标准库。 ## 安装 ``` git clone cd file-integrity-monitor python3 --version # Python 3 requis (testé sur 3.14). Aucune dépendance à installer. ``` ## 使用方法 ### 1. 创建参考 baseline ``` python3 fim.py init /chemin/a/surveiller --baseline baseline.json ``` 预期输出: ``` Baseline créée : 42 fichier(s) -> baseline.json ``` ### 2. 验证完整性 ``` python3 fim.py check /chemin/a/surveiller --baseline baseline.json ``` 发生变更时的预期输出: ``` [AJOUTE] backdoor.sh — fichier absent de la baseline [SUPPRIME] data.txt — fichier présent dans la baseline mais absent [MODIFIE] config/app.conf — SHA-256 da9b75ddfacd… -> 7708e14e20c0… ; taille 18 -> 19 octets 3 anomalie(s) détectée(s) : 1 ajouté(s), 1 modifié(s), 1 supprimé(s) ``` 如果一切完好,退出代码为 `0`;如果检测到异常,则为 `1`;如果 发生错误(找不到文件夹或 baseline),则为 `2`。自动化使用 示例: ``` python3 fim.py check /etc --baseline /var/lib/fim/etc.json || \ echo "ALERTE : /etc a été modifié" | mail -s "FIM" admin@exemple.fr ``` ### 完整演示 ``` bash examples/demo.sh ``` 此脚本会创建一个测试文件夹,构建 baseline,模拟 变更(新增/修改/删除),重新运行验证并显示 审计日志。 ## 项目结构 ``` file-integrity-monitor/ ├── fim.py # Point d'entrée exécutable ├── fim/ │ ├── hashing.py # Empreintes SHA-256 par blocs │ ├── baseline.py # Instantané JSON (chemin -> hash/taille/mtime) │ ├── monitor.py # Comparaison baseline / état courant │ ├── audit_log.py # Journal d'audit horodaté (texte + JSON Lines) │ └── cli.py # Interface CLI (sous-commandes init / check) ├── tests/ # Tests unitaires (unittest) └── examples/demo.sh # Démonstration de bout en bout ``` ## 测试 ``` python3 -m unittest discover -s tests -v ``` 测试涵盖了哈希的确定性、分块读取、baseline 的 JSON 往返处理以及三种异常类型的检测。 ## 警告 本项目为**教学性质**。它演示了完整性监视器的原理 (类似于 Tripwire 或 AIDE),但并不适用于生产环境。 请参阅 [RAPPORT.md](RAPPORT.md) 中的“威胁模型 / 局限性”部分。 ## 文档 具体的开发方法、设计选择说明、架构以及 威胁模型均在 [RAPPORT.md](RAPPORT.md) 中详细说明。 ## 许可证 基于 [MIT](LICENSE) 许可证分发。© 2026 Yassine Belhaj。
标签:DNS 反向解析, PB级数据处理, Python, SQL, x64dbg, 哈希校验, 子域名变形, 安全运维, 无后门, 系统审计, 网络安全, 逆向工具, 隐私保护