file-integrity-monitor
Monitor de integridade de arquivos por hashes SHA-256 (baseline vs estado atual).
8 testes · 8 passou · 0 falhou · 0 skip
- test_hash_file_stable0.00s
- test_build_baseline_file0.00s
- test_build_baseline_dir0.00s
- test_compare_detects_change0.00s
- test_compare_detects_added_and_removed0.00s
- test_cli_init_check_detects_modification0.00s
- test_cli_init_check_clean0.00s
- test_cli_diff_json0.00s
Entrypoints (CLI)
fim
Módulos e funções principais
src/fim/__init__.py
- —
src/fim/cli.py
cmd_init()cmd_check()cmd_diff()build_parser()main()
src/fim/core.py
hash_file()— Retorna o hash SHA-256 do conteúdo de um arquivo.collect_files()— Expande arquivos e diretórios em uma lista plana de caminhos.build_baseline()— Percorre os caminhos e gera um dicionário path -> hash.compare()— Compara baseline com estado atual e classifica as diferenças.
Estrutura de arquivos
- LICENSE
- README.md
- pyproject.toml
- src/file_integrity_monitor.egg-info/PKG-INFO
- src/file_integrity_monitor.egg-info/SOURCES.txt
- src/file_integrity_monitor.egg-info/dependency_links.txt
- src/file_integrity_monitor.egg-info/entry_points.txt
- src/file_integrity_monitor.egg-info/top_level.txt
- src/fim/__init__.py
- src/fim/cli.py
- src/fim/core.py
- tests/test_fim.py
README
# file-integrity-monitor (FIM)
Ferramenta defensiva de linha de comando que monitora a integridade de
arquivos por meio de hashes SHA-256. Ela cria um **baseline** de hashes e,
posteriormente, detecta modificações, criações e remoções comparando o
estado atual com esse baseline.
## ⚠️ Aviso ético
Esta é uma ferramenta **defensiva e educacional**. Ela serve para detectar
alterações em sistemas **de sua propriedade ou nos quais você tenha
autorização explícita** para monitorar. Não a utilize para inspecionar
arquivos de terceiros sem permissão. O autor não se responsabiliza por uso
inadequado.
## Requisitos
- Python 3.10+
- Apenas biblioteca padrão (sem dependências externas).
## Instalação
```bash
pip install -e .
```
## Uso
Criar um baseline de arquivos/diretórios:
```bash
fim init /etc /home/voce/documentos
```
O baseline é salvo em `.fim-baseline.json` (use `-o` para outro caminho).
Verificar alterações (retorna código 1 se houver diferenças):
```bash
fim check
```
Mostrar diferenças em JSON:
```bash
fim diff
```
## Como funciona
1. `init` percorre os caminhos informados (arquivos ou diretórios) e armazena
o hash SHA-256 de cada arquivo em um JSON.
2. `check`/`diff` recalcula os hashes e os compara com o baseline,
classificando cada arquivo em `modified`, `added` ou `removed`.
## Testes
```bash
pytest
```
## Licença
MIT — Copyright (c) 2026 Diogo Damasceno.
Como rodar na prática (entrada → saída):
$ fim baseline /etc
baseline.json criado (1284 arquivos, SHA-256)
$ fim check /etc
ALTERADO /etc/passwd\nINTEGRO 1282/1284 arquivos