Documentação: inglês como versão principal e português em *.pt-BR.md
README, ROADMAP, CHANGELOG, CONTRIBUTING, SECURITY e docs/ passam a ter a versão principal em inglês. As versões em português ficam em *.pt-BR.md e docs/pt-BR/, com seletor de idioma no topo de cada arquivo. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RRZm8uTVN3WLTwcbrDQAUM
This commit is contained in:
1 parent
3755fc7d2a
commit
b93ad02a0e
16 files changed
+1192
-369
No files matched your search
@@ -0,0 +1,97 @@
|
||||
# Architecture
|
||||
|
||||
[English](architecture.md) · [Português](pt-BR/arquitetura.md)
|
||||
|
||||
Guará is a Rust workspace with three parts: a core (`guara-core`), a terminal binary (`guara-cli`) and an interface (`apps/gui`) that is the same web page served in two ways.
|
||||
|
||||
```
|
||||
crates/guara-core library: everything that reads, interprets and recovers
|
||||
crates/guara-cli `guara` binary: commands and the local interface server
|
||||
apps/gui/ui HTML, CSS and JS of the interface
|
||||
apps/gui/src-tauri desktop shell (Tauri) that loads the same interface
|
||||
```
|
||||
|
||||
## Flow of a scan
|
||||
|
||||
```
|
||||
source (device or image)
|
||||
│ source / device read-only access, bad sectors tolerated
|
||||
▼
|
||||
virtual disk (optional)
|
||||
│ assemble joins E01/AFF4 images, RAID, LVM and encrypted volumes
|
||||
▼
|
||||
partitions and volumes
|
||||
│ partition, volume MBR, GPT, volumes lost and found by signature
|
||||
▼
|
||||
two searches in parallel
|
||||
├─ fs/* metadata: NTFS, FAT, exFAT, ext, HFS+, Btrfs, XFS, APFS
|
||||
└─ carve + signatures file structure in free space and outside partitions
|
||||
+ formats, jpegscan, defrag, mp4rebuild
|
||||
▼
|
||||
scan merges without duplicates and assigns confidence
|
||||
▼
|
||||
saved session resume, export, report
|
||||
▼
|
||||
recover copies with MD5, SHA-1 and SHA-256 and writes the manifest
|
||||
```
|
||||
|
||||
## Core modules
|
||||
|
||||
### Access and assembly
|
||||
| Module | Role |
|
||||
|---|---|
|
||||
| `source`, `device` | Open devices and images read-only; list disks |
|
||||
| `image` | Raw image tolerant of bad sectors, with an error map |
|
||||
| `ewf`, `aff4` | Read and write E01/Ex01 and AFF4 |
|
||||
| `assemble` | Builds the virtual disk: image, RAID, LVM and encrypted volume |
|
||||
| `raid`, `raid_detect`, `lvm` | RAID reassembly (with automatic parameter discovery) and LVM2 |
|
||||
| `crypt/` | BitLocker, LUKS and FileVault 2 |
|
||||
| `reconnect` | Recognize the same disk that came back under another name |
|
||||
|
||||
### Interpretation
|
||||
| Module | Role |
|
||||
|---|---|
|
||||
| `partition`, `volume` | Partition tables and volume detection |
|
||||
| `fs/` | One reader per file system |
|
||||
| `signatures`, `formats` | Format detectors based on structure |
|
||||
| `carve`, `scan` | Signature scan and merging with the metadata |
|
||||
| `jpegscan`, `defrag`, `mp4rebuild` | Fragmented JPEG and MP4 without `moov` |
|
||||
| `meta`, `sqlite`, `thumb` | Metadata, SQLite reader, thumbnails |
|
||||
|
||||
### Results and forensics
|
||||
| Module | Role |
|
||||
|---|---|
|
||||
| `recover` | Copies the files, checks the hashes, writes the manifest, resumes recovery |
|
||||
| `hashing`, `search` | Hashes and text search across the whole disk |
|
||||
| `report`, `explorer` | HTML report, CSV, explorer filters and groupings |
|
||||
| `health`, `external` | SMART and external tools (`smartctl`) |
|
||||
|
||||
### Service
|
||||
`service`, `http`, `settings`, `notify`, `owner`: the layer the interface uses (local API, settings, notifications, and writing with the right owner when running as administrator).
|
||||
|
||||
## Interface
|
||||
|
||||
The interface is a single page (`apps/gui/ui`). There are two ways to run it:
|
||||
|
||||
- **Desktop app (Tauri):** the window loads the page and talks to the core directly.
|
||||
- **`guara ui`:** the binary starts a token-protected server on `127.0.0.1` and opens the browser.
|
||||
|
||||
Because the front end is the same, everything that exists in one exists in the other.
|
||||
|
||||
## Design decisions
|
||||
|
||||
- **Read-only on the source, by construction.** All device access goes through `source::open_path`. Code review rejects any write to the source.
|
||||
- **Refusing a destination on the same disk** as the source (Linux and macOS), to avoid overwriting what you want to recover.
|
||||
- **Confidence per file.** Each detector declares how much it managed to verify; merging keeps the best evidence.
|
||||
- **Own readers.** File systems, ciphers, SQLite and image containers are implemented in the core, to tolerate corrupted structures, which is exactly the use case.
|
||||
- **Secrets out of the session.** Passwords are never written; at most the volume key, and only with `--remember-keys`.
|
||||
- **Privileges.** Reading a raw disk requires administrator, but everything Guará writes (sessions, reports, recovered files) keeps the owner and permissions of the user who launched it.
|
||||
|
||||
## Tests
|
||||
|
||||
About a hundred tests, in `crates/guara-core/tests/` (one file per area: `ext4`, `xfs`, `apfs`, `bitlocker`, `raid`, `ewf`, `jpegscan`, `mp4rebuild`, `sqlite` and others).
|
||||
|
||||
- **Images generated on the fly** with `mtools`, `ntfs-3g`, `e2fsprogs` and the like (`scripts/make-fixtures.sh`).
|
||||
- **Reference images** from external projects (cryptsetup, dfvfs, AFF4) downloaded by `scripts/fetch-testdata.sh` into `target/testdata`. Without them, the corresponding tests are skipped.
|
||||
- The BitLocker tests take about 75 s because of key derivation.
|
||||
- In CI the tests with real images run only on Linux.
|
||||
+70
-68
@@ -1,124 +1,126 @@
|
||||
# Referência do terminal
|
||||
# Terminal reference
|
||||
|
||||
Ler disco bruto exige privilégios: administrador no Windows, `sudo` no Linux e no macOS. Use `guara <comando> --help` para a lista completa de opções.
|
||||
[English](cli.md) · [Português](pt-BR/cli.md)
|
||||
|
||||
## Comandos
|
||||
Reading a raw disk requires privileges: administrator on Windows, `sudo` on Linux and macOS. Use `guara <command> --help` for the full list of options.
|
||||
|
||||
| Comando | Para que serve |
|
||||
## Commands
|
||||
|
||||
| Command | What it does |
|
||||
|---|---|
|
||||
| `devices` | Lista discos e pendrives, avisa TRIM e volumes montados |
|
||||
| `inspect <origem>` | Partições, espaço não particionado, cifragem |
|
||||
| `health <origem>` | Saúde do disco (SMART); requer `smartmontools` |
|
||||
| `scan <origem>` | Varredura de arquivos apagados e perdidos |
|
||||
| `resume <sessão>` | Continua uma varredura pausada |
|
||||
| `recover <sessão> <destino>` | Recupera os arquivos de uma sessão |
|
||||
| `image <origem> <destino>` | Imagem forense (bruta, E01 ou AFF4) |
|
||||
| `verify <imagem>` | Confere uma imagem E01 ou Ex01 contra o hash gravado |
|
||||
| `hash <origem>` | MD5, SHA-1 e SHA-256 do dispositivo |
|
||||
| `search <origem> <termos...>` | Texto no disco inteiro, UTF-8 e UTF-16 |
|
||||
| `export <sessão> <csv>` | Planilha dos achados |
|
||||
| `report <sessão> <html>` | Relatório HTML imprimível |
|
||||
| `sessions` | Sessões salvas automaticamente |
|
||||
| `ui` | Interface no navegador (127.0.0.1, com token) |
|
||||
| `devices` | Lists disks and USB sticks, warns about TRIM and mounted volumes |
|
||||
| `inspect <source>` | Partitions, unpartitioned space, encryption |
|
||||
| `health <source>` | Disk health (SMART); requires `smartmontools` |
|
||||
| `scan <source>` | Scan for deleted and lost files |
|
||||
| `resume <session>` | Continues a paused scan |
|
||||
| `recover <session> <destination>` | Recovers the files of a session |
|
||||
| `image <source> <destination>` | Forensic image (raw, E01 or AFF4) |
|
||||
| `verify <image>` | Checks an E01 or Ex01 image against the stored hash |
|
||||
| `hash <source>` | MD5, SHA-1 and SHA-256 of the device |
|
||||
| `search <source> <terms...>` | Text across the whole disk, UTF-8 and UTF-16 |
|
||||
| `export <session> <csv>` | Spreadsheet of the findings |
|
||||
| `report <session> <html>` | Printable HTML report |
|
||||
| `sessions` | Automatically saved sessions |
|
||||
| `ui` | Interface in the browser (127.0.0.1, with token) |
|
||||
|
||||
`--json` existe em `devices`, `inspect`, `health` e `scan`.
|
||||
`--json` exists on `devices`, `inspect`, `health` and `scan`.
|
||||
|
||||
## Varredura
|
||||
## Scanning
|
||||
|
||||
```bash
|
||||
sudo guara scan /dev/sdb --session s.json --list # profunda, com lista
|
||||
sudo guara scan /dev/sdb --quick # só metadados, em segundos
|
||||
guara scan disco.img --category image,document --min-confidence medium
|
||||
guara scan disco.img --recover /mnt/outro-disco/Recuperados
|
||||
sudo guara scan /dev/sdb --session s.json --list # deep, with listing
|
||||
sudo guara scan /dev/sdb --quick # metadata only, in seconds
|
||||
guara scan disk.img --category image,document --min-confidence medium
|
||||
guara scan disk.img --recover /mnt/other-disk/Recovered
|
||||
```
|
||||
|
||||
Filtros (valem em `scan`, `recover`, `export` e `report`):
|
||||
Filters (valid on `scan`, `recover`, `export` and `report`):
|
||||
|
||||
| Opção | Efeito |
|
||||
| Option | Effect |
|
||||
|---|---|
|
||||
| `--category` | `image`, `document`, `video`, `audio`, `archive`, `database`, `other` (separe por vírgula) |
|
||||
| `--min-confidence` | `low`, `medium` ou `high` |
|
||||
| `--name` | só nomes e caminhos que contenham o texto |
|
||||
| `--organize` | como gravar: `folders` (pastas originais), `type`, `date` ou `flat` |
|
||||
| `--category` | `image`, `document`, `video`, `audio`, `archive`, `database`, `other` (comma separated) |
|
||||
| `--min-confidence` | `low`, `medium` or `high` |
|
||||
| `--name` | only names and paths that contain the text |
|
||||
| `--organize` | how to write: `folders` (original folders), `type`, `date` or `flat` |
|
||||
|
||||
## Recuperação
|
||||
## Recovery
|
||||
|
||||
```bash
|
||||
guara recover s.json /mnt/outro-disco/Recuperados --category image
|
||||
guara recover s.json /mnt/other-disk/Recovered --category image
|
||||
guara resume s.json
|
||||
```
|
||||
|
||||
O destino precisa estar em **outro disco**. Cada recuperação grava `guara-manifesto.json` com MD5, SHA-1 e SHA-256 de todos os arquivos. Se a recuperação for interrompida, repetir o comando pula o que já foi copiado e conferido.
|
||||
The destination must be on **another disk**. Every recovery writes `guara-manifesto.json` with the MD5, SHA-1 and SHA-256 of every file. If the recovery is interrupted, repeating the command skips what was already copied and checked.
|
||||
|
||||
## Volumes cifrados
|
||||
## Encrypted volumes
|
||||
|
||||
```bash
|
||||
sudo guara scan /dev/sdb1 --ask-password
|
||||
sudo guara scan /dev/sdb1 --recovery-key 111111-222222-333333-444444-555555-666666-777777-888888
|
||||
sudo guara scan /dev/sdb1 --key-file chave.BEK
|
||||
sudo guara scan /dev/sdb1 --key-file key.BEK
|
||||
sudo guara scan /dev/sdb1 --volume-key 4f2a...
|
||||
```
|
||||
|
||||
| Opção | Uso |
|
||||
| Option | Use |
|
||||
|---|---|
|
||||
| `--ask-password` | Pergunta no terminal, sem mostrar. **Preferida** |
|
||||
| `GUARA_PASSWORD` | Variável de ambiente com a senha |
|
||||
| `--password` | Senha na linha de comando (fica no histórico do shell) |
|
||||
| `--recovery-key` | Chave numérica do BitLocker |
|
||||
| `--key-file` | `.BEK` do BitLocker ou keyfile do LUKS |
|
||||
| `--volume-key` | Chave do volume em hexadecimal (a que o Guará mostra ao abrir um volume) |
|
||||
| `--remember-keys` | Guarda na sessão as chaves dos volumes abertos (nunca a senha) |
|
||||
| `--ask-password` | Asks in the terminal, without echo. **Preferred** |
|
||||
| `GUARA_PASSWORD` | Environment variable with the password |
|
||||
| `--password` | Password on the command line (stays in the shell history) |
|
||||
| `--recovery-key` | BitLocker numeric key |
|
||||
| `--key-file` | BitLocker `.BEK` or LUKS keyfile |
|
||||
| `--volume-key` | Volume key in hexadecimal (the one Guará shows when it opens a volume) |
|
||||
| `--remember-keys` | Stores the keys of opened volumes in the session (never the password) |
|
||||
|
||||
## RAID e LVM
|
||||
## RAID and LVM
|
||||
|
||||
Passe o disco principal e os outros membros com `--member`, repetido. Use `-` para um disco ausente.
|
||||
Pass the main disk and the other members with `--member`, repeated. Use `-` for a missing disk.
|
||||
|
||||
```bash
|
||||
# Com metadados do mdadm ou do LVM: o Guará lê tudo sozinho
|
||||
guara inspect disco1.img --member disco2.img --member disco3.img
|
||||
# With mdadm or LVM metadata: Guará reads everything by itself
|
||||
guara inspect disk1.img --member disk2.img --member disk3.img
|
||||
|
||||
# Sem metadados: descobre nível, faixa, layout e ordem
|
||||
guara scan disco1.img --member disco2.img --member disco3.img --raid
|
||||
# Without metadata: discovers level, stripe size, layout and order
|
||||
guara scan disk1.img --member disk2.img --member disk3.img --raid
|
||||
|
||||
# Fixando o que você já sabe
|
||||
guara scan disco1.img --member disco2.img --member - --raid \
|
||||
# Fixing what you already know
|
||||
guara scan disk1.img --member disk2.img --member - --raid \
|
||||
--raid-level 5 --raid-chunk-kb 64 --raid-layout left-symmetric --raid-order 0,1,2
|
||||
```
|
||||
|
||||
## Imagem forense
|
||||
## Forensic image
|
||||
|
||||
```bash
|
||||
sudo guara image /dev/sdb /mnt/outro-disco/sdb.img # bruta, com mapa de erros
|
||||
sudo guara image /dev/sdb /mnt/outro-disco/sdb --format e01 \
|
||||
--case 2026-001 --examiner "Nome" --evidence E1 --description "HD do notebook"
|
||||
sudo guara image /dev/sdb /mnt/outro-disco/sdb --format aff4
|
||||
guara verify /mnt/outro-disco/sdb.E01
|
||||
sudo guara image /dev/sdb /mnt/other-disk/sdb.img # raw, with error map
|
||||
sudo guara image /dev/sdb /mnt/other-disk/sdb --format e01 \
|
||||
--case 2026-001 --examiner "Name" --evidence E1 --description "Laptop HDD"
|
||||
sudo guara image /dev/sdb /mnt/other-disk/sdb --format aff4
|
||||
guara verify /mnt/other-disk/sdb.E01
|
||||
```
|
||||
|
||||
Para E01: `--segment-mib` (tamanho de cada segmento, padrão 1500, 0 para um arquivo só) e `--compression` (0 a 9, padrão 1).
|
||||
For E01: `--segment-mib` (size of each segment, default 1500, 0 for a single file) and `--compression` (0 to 9, default 1).
|
||||
|
||||
## Vídeo sem índice (MP4 sem moov)
|
||||
## Video without an index (MP4 without moov)
|
||||
|
||||
Passe um vídeo **íntegro da mesma câmera ou drone** para o Guará refazer o índice:
|
||||
Pass an **intact video from the same camera or drone** so Guará can rebuild the index:
|
||||
|
||||
```bash
|
||||
guara scan cartao.img --reference VIDEO_BOM.MP4 --category video
|
||||
guara scan card.img --reference GOOD_VIDEO.MP4 --category video
|
||||
```
|
||||
|
||||
`--reference` pode ser repetido. O áudio não é reconstruído.
|
||||
`--reference` can be repeated. Audio is not reconstructed.
|
||||
|
||||
## Busca de texto
|
||||
## Text search
|
||||
|
||||
```bash
|
||||
sudo guara search /dev/sdb "contrato" "cpf" --case-sensitive --max 500
|
||||
sudo guara search /dev/sdb "contract" "ssn" --case-sensitive --max 500
|
||||
```
|
||||
|
||||
Procura em UTF-8 e UTF-16 (`--no-utf16` desliga), inclusive no espaço livre e fora de partições. Mostra posição, partição e contexto. `--max` limita os resultados (padrão 200).
|
||||
Searches in UTF-8 and UTF-16 (`--no-utf16` turns it off), including free space and areas outside partitions. Shows position, partition and context. `--max` limits the results (default 200).
|
||||
|
||||
## Relatório
|
||||
## Report
|
||||
|
||||
```bash
|
||||
guara report s.json relatorio.html --case 2026-001 --examiner "Nome" --hash-source
|
||||
guara report s.json report.html --case 2026-001 --examiner "Name" --hash-source
|
||||
```
|
||||
|
||||
Traz identificação do caso, origem, partições, resumo, hashes e a lista dos arquivos. `--hash-source` inclui o hash da origem inteira.
|
||||
Includes case identification, source, partitions, summary, hashes and the list of files. `--hash-source` adds the hash of the whole source.
|
||||
@@ -1,5 +1,7 @@
|
||||
# Arquitetura
|
||||
|
||||
[English](../architecture.md) · **Português**
|
||||
|
||||
O Guará é um workspace Rust com três partes: um núcleo (`guara-core`), um binário de terminal (`guara-cli`) e uma interface (`apps/gui`) que é a mesma página web servida de duas formas.
|
||||
|
||||
```
|
||||
@@ -0,0 +1,126 @@
|
||||
# Referência do terminal
|
||||
|
||||
[English](../cli.md) · **Português**
|
||||
|
||||
Ler disco bruto exige privilégios: administrador no Windows, `sudo` no Linux e no macOS. Use `guara <comando> --help` para a lista completa de opções.
|
||||
|
||||
## Comandos
|
||||
|
||||
| Comando | Para que serve |
|
||||
|---|---|
|
||||
| `devices` | Lista discos e pendrives, avisa TRIM e volumes montados |
|
||||
| `inspect <origem>` | Partições, espaço não particionado, cifragem |
|
||||
| `health <origem>` | Saúde do disco (SMART); requer `smartmontools` |
|
||||
| `scan <origem>` | Varredura de arquivos apagados e perdidos |
|
||||
| `resume <sessão>` | Continua uma varredura pausada |
|
||||
| `recover <sessão> <destino>` | Recupera os arquivos de uma sessão |
|
||||
| `image <origem> <destino>` | Imagem forense (bruta, E01 ou AFF4) |
|
||||
| `verify <imagem>` | Confere uma imagem E01 ou Ex01 contra o hash gravado |
|
||||
| `hash <origem>` | MD5, SHA-1 e SHA-256 do dispositivo |
|
||||
| `search <origem> <termos...>` | Texto no disco inteiro, UTF-8 e UTF-16 |
|
||||
| `export <sessão> <csv>` | Planilha dos achados |
|
||||
| `report <sessão> <html>` | Relatório HTML imprimível |
|
||||
| `sessions` | Sessões salvas automaticamente |
|
||||
| `ui` | Interface no navegador (127.0.0.1, com token) |
|
||||
|
||||
`--json` existe em `devices`, `inspect`, `health` e `scan`.
|
||||
|
||||
## Varredura
|
||||
|
||||
```bash
|
||||
sudo guara scan /dev/sdb --session s.json --list # profunda, com lista
|
||||
sudo guara scan /dev/sdb --quick # só metadados, em segundos
|
||||
guara scan disco.img --category image,document --min-confidence medium
|
||||
guara scan disco.img --recover /mnt/outro-disco/Recuperados
|
||||
```
|
||||
|
||||
Filtros (valem em `scan`, `recover`, `export` e `report`):
|
||||
|
||||
| Opção | Efeito |
|
||||
|---|---|
|
||||
| `--category` | `image`, `document`, `video`, `audio`, `archive`, `database`, `other` (separe por vírgula) |
|
||||
| `--min-confidence` | `low`, `medium` ou `high` |
|
||||
| `--name` | só nomes e caminhos que contenham o texto |
|
||||
| `--organize` | como gravar: `folders` (pastas originais), `type`, `date` ou `flat` |
|
||||
|
||||
## Recuperação
|
||||
|
||||
```bash
|
||||
guara recover s.json /mnt/outro-disco/Recuperados --category image
|
||||
guara resume s.json
|
||||
```
|
||||
|
||||
O destino precisa estar em **outro disco**. Cada recuperação grava `guara-manifesto.json` com MD5, SHA-1 e SHA-256 de todos os arquivos. Se a recuperação for interrompida, repetir o comando pula o que já foi copiado e conferido.
|
||||
|
||||
## Volumes cifrados
|
||||
|
||||
```bash
|
||||
sudo guara scan /dev/sdb1 --ask-password
|
||||
sudo guara scan /dev/sdb1 --recovery-key 111111-222222-333333-444444-555555-666666-777777-888888
|
||||
sudo guara scan /dev/sdb1 --key-file chave.BEK
|
||||
sudo guara scan /dev/sdb1 --volume-key 4f2a...
|
||||
```
|
||||
|
||||
| Opção | Uso |
|
||||
|---|---|
|
||||
| `--ask-password` | Pergunta no terminal, sem mostrar. **Preferida** |
|
||||
| `GUARA_PASSWORD` | Variável de ambiente com a senha |
|
||||
| `--password` | Senha na linha de comando (fica no histórico do shell) |
|
||||
| `--recovery-key` | Chave numérica do BitLocker |
|
||||
| `--key-file` | `.BEK` do BitLocker ou keyfile do LUKS |
|
||||
| `--volume-key` | Chave do volume em hexadecimal (a que o Guará mostra ao abrir um volume) |
|
||||
| `--remember-keys` | Guarda na sessão as chaves dos volumes abertos (nunca a senha) |
|
||||
|
||||
## RAID e LVM
|
||||
|
||||
Passe o disco principal e os outros membros com `--member`, repetido. Use `-` para um disco ausente.
|
||||
|
||||
```bash
|
||||
# Com metadados do mdadm ou do LVM: o Guará lê tudo sozinho
|
||||
guara inspect disco1.img --member disco2.img --member disco3.img
|
||||
|
||||
# Sem metadados: descobre nível, faixa, layout e ordem
|
||||
guara scan disco1.img --member disco2.img --member disco3.img --raid
|
||||
|
||||
# Fixando o que você já sabe
|
||||
guara scan disco1.img --member disco2.img --member - --raid \
|
||||
--raid-level 5 --raid-chunk-kb 64 --raid-layout left-symmetric --raid-order 0,1,2
|
||||
```
|
||||
|
||||
## Imagem forense
|
||||
|
||||
```bash
|
||||
sudo guara image /dev/sdb /mnt/outro-disco/sdb.img # bruta, com mapa de erros
|
||||
sudo guara image /dev/sdb /mnt/outro-disco/sdb --format e01 \
|
||||
--case 2026-001 --examiner "Nome" --evidence E1 --description "HD do notebook"
|
||||
sudo guara image /dev/sdb /mnt/outro-disco/sdb --format aff4
|
||||
guara verify /mnt/outro-disco/sdb.E01
|
||||
```
|
||||
|
||||
Para E01: `--segment-mib` (tamanho de cada segmento, padrão 1500, 0 para um arquivo só) e `--compression` (0 a 9, padrão 1).
|
||||
|
||||
## Vídeo sem índice (MP4 sem moov)
|
||||
|
||||
Passe um vídeo **íntegro da mesma câmera ou drone** para o Guará refazer o índice:
|
||||
|
||||
```bash
|
||||
guara scan cartao.img --reference VIDEO_BOM.MP4 --category video
|
||||
```
|
||||
|
||||
`--reference` pode ser repetido. O áudio não é reconstruído.
|
||||
|
||||
## Busca de texto
|
||||
|
||||
```bash
|
||||
sudo guara search /dev/sdb "contrato" "cpf" --case-sensitive --max 500
|
||||
```
|
||||
|
||||
Procura em UTF-8 e UTF-16 (`--no-utf16` desliga), inclusive no espaço livre e fora de partições. Mostra posição, partição e contexto. `--max` limita os resultados (padrão 200).
|
||||
|
||||
## Relatório
|
||||
|
||||
```bash
|
||||
guara report s.json relatorio.html --case 2026-001 --examiner "Nome" --hash-source
|
||||
```
|
||||
|
||||
Traz identificação do caso, origem, partições, resumo, hashes e a lista dos arquivos. `--hash-source` inclui o hash da origem inteira.
|
||||
@@ -1,6 +1,8 @@
|
||||
# O que o Guará suporta
|
||||
|
||||
Matriz do que existe hoje (versão 1.0.0). Para o que vem a seguir, veja o [ROADMAP](../ROADMAP.md).
|
||||
[English](../support.md) · **Português**
|
||||
|
||||
Matriz do que existe hoje (versão 1.0.0). Para o que vem a seguir, veja o [ROADMAP](../../ROADMAP.pt-BR.md).
|
||||
|
||||
## Tabelas de partição
|
||||
|
||||
@@ -99,4 +101,4 @@ A pré-visualização é lida direto do disco, sem gravar nada: imagem, vídeo,
|
||||
- Recuperar dados **sobrescritos**. Em SSD com TRIM o próprio disco pode zerar blocos apagados.
|
||||
- Desbloquear celulares ou contornar senhas e travas de segurança.
|
||||
- Substituir uma ferramenta de extração de dispositivos móveis.
|
||||
- Produzir laudo com validade pericial por si só: ainda não passou por validação externa (NIST CFTT). Veja o [ROADMAP](../ROADMAP.md).
|
||||
- Produzir laudo com validade pericial por si só: ainda não passou por validação externa (NIST CFTT). Veja o [ROADMAP](../../ROADMAP.pt-BR.md).
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
# What Guará supports
|
||||
|
||||
[English](support.md) · [Português](pt-BR/suporte.md)
|
||||
|
||||
Matrix of what exists today (version 1.0.0). For what comes next, see the [ROADMAP](../ROADMAP.md).
|
||||
|
||||
## Partition tables
|
||||
|
||||
MBR and GPT. When the table fails, Guará searches for volumes by signature (NTFS, FAT, exFAT, ext, APFS, HFS+, BitLocker, LUKS) and also examines the **unpartitioned space**.
|
||||
|
||||
## File systems
|
||||
|
||||
"Metadata" means Guará reads the file system structure and returns **name, folder and dates**. Without it, recovery depends only on carving, which returns the content without a name.
|
||||
|
||||
| File system | Metadata | What is used | Limits |
|
||||
|---|---|---|---|
|
||||
| NTFS | ✅ | MFT, deleted records, creation, modification and access dates | Compressed and EFS files are skipped or marked as incomplete; attribute list handled partially |
|
||||
| FAT12/16/32 | ✅ | Deleted entries, long names, dates | |
|
||||
| exFAT | ✅ | Deleted entries, dates | Covered by a synthetic image; needs validation on more real media |
|
||||
| ext2/3/4 | ✅ | Deleted inodes, old copies in the journal (ext4), free block map | |
|
||||
| HFS+ | ✅ | Leftovers of catalog tree nodes, journal | |
|
||||
| Btrfs | ✅ | Old versions of the trees; zlib, zstd and lzo extents | |
|
||||
| XFS | ✅ | Freed inodes, names of freed entries, free space per group | Deletion tested only in simulation |
|
||||
| APFS | 🟡 | Container, object map, file tree, snapshots, old nodes | No free-space map; deletion tested only in simulation |
|
||||
| ReFS | ❌ | Only detected | Recovery through carving |
|
||||
| Storage Spaces | ❌ | Not supported | |
|
||||
|
||||
In every case carving keeps running on the free space and the result is merged without duplicates.
|
||||
|
||||
## Encrypted volumes
|
||||
|
||||
Guará opens the volume with the **password or key you provide**, mounts a virtual disk and scans inside it. It does not crack passwords.
|
||||
|
||||
| Format | Accepted credentials |
|
||||
|---|---|
|
||||
| BitLocker | Password, recovery key (8 groups of 6 digits), `.BEK` file, clear key |
|
||||
| LUKS1 and LUKS2 | Password, key file, volume key |
|
||||
| FileVault 2 (Core Storage) | Password, recovery key, volume key |
|
||||
|
||||
Passwords are **never** written to the session file. With `--remember-keys` the session stores the already derived volume key, not the password. In the terminal, prefer `--ask-password` or the `GUARA_PASSWORD` variable over `--password`, which stays in the shell history.
|
||||
|
||||
## RAID and LVM
|
||||
|
||||
| Item | Support |
|
||||
|---|---|
|
||||
| RAID 0, 1, 4, 5, 6, 10 and linear from mdadm superblocks | ✅ including degraded (use `-` in `--member` for a missing disk) |
|
||||
| RAID without metadata | ✅ `--raid` discovers level, stripe size, layout and order; `--raid-level`, `--raid-chunk-kb`, `--raid-layout` and `--raid-order` fix what you already know |
|
||||
| LVM2 | ✅ linear, striped, mirrored and RAID |
|
||||
| Storage Spaces | ❌ |
|
||||
|
||||
## Forensic images
|
||||
|
||||
| Format | Read | Write |
|
||||
|---|---|---|
|
||||
| Raw (dd, `.img`) | ✅ | ✅ with a bad sector error map |
|
||||
| E01 and Ex01 (Expert Witness) | ✅ | ✅ with case metadata and segmentation |
|
||||
| AFF4 | ✅ | ✅ |
|
||||
|
||||
`guara verify` recomputes the MD5 of an E01 or Ex01 image and compares it with the one stored in it.
|
||||
|
||||
## Carving: formats recognized by structure
|
||||
|
||||
The detectors read headers, blocks and internal sizes to return the **exact size** and a **confidence**, instead of cutting at a fixed number of bytes.
|
||||
|
||||
| Family | Formats |
|
||||
|---|---|
|
||||
| Image | JPEG, PNG, GIF, BMP, TIFF, ICO, HEIC, WebP |
|
||||
| Document | PDF, DOC/XLS/PPT (OLE), DOCX/XLSX/PPTX/ODF/EPUB (ZIP), RTF |
|
||||
| Video and audio | MP4/MOV, AVI, WAV, MP3, Matroska/WebM, Ogg, MPEG-TS, FLV, ASF/WMV, MIDI |
|
||||
| Compressed | ZIP, 7z, RAR, gzip, zstd, ar |
|
||||
| Database and system | SQLite, Windows registry (regf), EVTX, PST, pcap/pcapng, EXE/DLL (PE), ELF, SWF |
|
||||
|
||||
### Fragmented files
|
||||
|
||||
- **JPEG:** reassembled from up to three fragments (`jpegscan.rs`, `defrag.rs`).
|
||||
- **MP4/MOV without an index (`moov`):** the index is rebuilt from an intact video from the **same camera or drone**, passed with `--reference`. Works with H.264 and HEVC. Audio is not reconstructed.
|
||||
- Other formats only come out whole if they are contiguous; otherwise they come out truncated with low confidence.
|
||||
|
||||
## Metadata and preview
|
||||
|
||||
| Type | What is read |
|
||||
|---|---|
|
||||
| Photos | EXIF: camera, lens, serial number, date, GPS |
|
||||
| PDF | Author, program, dates |
|
||||
| Office and OpenDocument | Author, last modified by, company |
|
||||
| MP4/MOV | Recording date, duration, resolution |
|
||||
| SQLite | Schema, tables, blobs, dates, deleted rows from the free space of pages |
|
||||
|
||||
The preview is read straight from the disk, without writing anything: image, video, audio, PDF, text, Office, ZIP and hex.
|
||||
|
||||
## Platforms
|
||||
|
||||
| | CLI | Interface | Tests with real images |
|
||||
|---|---|---|---|
|
||||
| Linux | ✅ | ✅ AppImage and deb | ✅ |
|
||||
| Windows | ✅ | ✅ msi and exe | build and synthetic tests only |
|
||||
| macOS | ✅ | ✅ dmg | build and synthetic tests only |
|
||||
|
||||
## What Guará does not do
|
||||
|
||||
- Recover **overwritten** data. On an SSD with TRIM the disk itself may zero deleted blocks.
|
||||
- Unlock phones or bypass passwords and security locks.
|
||||
- Replace a mobile device extraction tool.
|
||||
- Produce a report with forensic validity by itself: it has not been through external validation (NIST CFTT) yet. See the [ROADMAP](../ROADMAP.md).
|
||||
Reference in new issue
Block a user