yasssefrei/file-integrity-monitor
GitHub: yasssefrei/file-integrity-monitor
基于 SHA-256 哈希比对的 Python 文件完整性监视器,通过基线快照检测文件系统变更并输出带时间戳的审计日志,面向网络安全教学场景。
Stars: 0 | Forks: 0
# 文件完整性监视器 (FIM)



用于检测文件系统变更的教学工具。它会计算
每个文件的 **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, 哈希校验, 子域名变形, 安全运维, 无后门, 系统审计, 网络安全, 逆向工具, 隐私保护