docs: Windows and Linux only, no macOS build
The Gitea CI has one Linux runner; the GUI's Windows package is cross-compiled from it, but there is no path to a macOS build without Apple hardware and a developer account. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
089ffe0920
commit
8ba3151512
4 files changed
+38
-24
No files matched your search
@@ -1,6 +1,6 @@
|
|||||||
<p align="center"><img src="apps/gui/ui/guara.png" width="300" alt="Guará"></p>
|
<p align="center"><img src="apps/gui/ui/guara.png" width="300" alt="Guará"></p>
|
||||||
<h1 align="center">Guará</h1>
|
<h1 align="center">Guará</h1>
|
||||||
<p align="center">Free file recovery for hard drives, SSDs and USB sticks.<br>Terminal and graphical interface · Windows, Linux and macOS · read-only on the source.</p>
|
<p align="center">Free file recovery for hard drives, SSDs and USB sticks.<br>Terminal and graphical interface · Windows and Linux · read-only on the source.</p>
|
||||||
|
|
||||||
<p align="center"><a href="docs/support.md">What it supports</a> · <a href="docs/interface.md">Interface</a> · <a href="docs/cli.md">Terminal</a> · <a href="docs/architecture.md">Architecture</a> · <a href="ROADMAP.md">Roadmap</a> · <a href="CHANGELOG.md">Changelog</a></p>
|
<p align="center"><a href="docs/support.md">What it supports</a> · <a href="docs/interface.md">Interface</a> · <a href="docs/cli.md">Terminal</a> · <a href="docs/architecture.md">Architecture</a> · <a href="ROADMAP.md">Roadmap</a> · <a href="CHANGELOG.md">Changelog</a></p>
|
||||||
|
|
||||||
@@ -38,15 +38,16 @@ Download the package for your system from **[Releases](../../releases)**:
|
|||||||
|
|
||||||
| | CLI | Graphical app |
|
| | CLI | Graphical app |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Windows | `guara-*-windows-x86_64.zip` | `.msi` / `.exe` installer |
|
| Windows | — | `.msi` / `.exe` installer |
|
||||||
| macOS | `guara-*-macos-{aarch64,x86_64}.tar.gz` | `.dmg` |
|
|
||||||
| Linux | `guara-*-linux-{x86_64,aarch64}.tar.gz` | `.AppImage` / `.deb` |
|
| Linux | `guara-*-linux-{x86_64,aarch64}.tar.gz` | `.AppImage` / `.deb` |
|
||||||
|
|
||||||
Every file has a `.sha256` next to it. To build from source: `cargo build --release -p guara-cli` (Rust 1.80+).
|
The CLI is Linux-only; the desktop app ships for Linux and Windows. Every CLI
|
||||||
|
package has a `.sha256` next to it. To build from source: `cargo build
|
||||||
|
--release -p guara-cli` (Rust 1.80+, Linux).
|
||||||
|
|
||||||
**Updates:** the desktop app (AppImage, Windows and macOS) checks GitHub for a newer version when it opens; if there is one, a card offers **Update now**: it downloads, verifies the package signature, installs and reopens, so you no longer swap the AppImage by hand. The check is a single request for the release's `latest.json` and nothing of yours is sent; turn it off in **Settings**. Installs from `.deb`/`.rpm` only show the notice, because the package manager owns those files.
|
**Updates:** the desktop app (AppImage and Windows) checks Gitea for a newer version when it opens; if there is one, a card offers **Update now**: it downloads, verifies the package signature, installs and reopens, so you no longer swap the AppImage by hand. The check is a single request for the release's `latest.json` and nothing of yours is sent; turn it off in **Settings**. Installs from `.deb`/`.rpm` only show the notice, because the package manager owns those files.
|
||||||
|
|
||||||
> The binaries are **not signed yet**: Windows SmartScreen and macOS Gatekeeper will warn you. Check the SHA-256.
|
> The binaries are **not signed yet**: Windows SmartScreen will warn you. Check the SHA-256.
|
||||||
|
|
||||||
Reading raw disks requires privileges: **administrator** (Windows), `sudo` (Linux and macOS). Even as root, Guará writes sessions, reports and recovered files with the owner and permissions of the user who launched it.
|
Reading raw disks requires privileges: **administrator** (Windows), `sudo` (Linux and macOS). Even as root, Guará writes sessions, reports and recovered files with the owner and permissions of the user who launched it.
|
||||||
|
|
||||||
@@ -104,7 +105,7 @@ A desktop app (Tauri) in the style of a file manager, designed for when Guará f
|
|||||||
- **NTFS:** compressed files, EFS and heavily fragmented records are skipped or marked as incomplete.
|
- **NTFS:** compressed files, EFS and heavily fragmented records are skipped or marked as incomplete.
|
||||||
- **exFAT:** validated with a synthetic image; real media are still missing.
|
- **exFAT:** validated with a synthetic image; real media are still missing.
|
||||||
- **Phones:** Guará works with storage media and does **not** unlock devices or bypass passwords.
|
- **Phones:** Guará works with storage media and does **not** unlock devices or bypass passwords.
|
||||||
- **Windows and macOS:** the code builds and is tested in CI, but the tests with real images run only on Linux. Reports from real media are very welcome.
|
- **Windows:** the code builds and is tested in CI, but the tests with real images run only on Linux. There is no macOS build: Tauri needs the macOS SDK and code signing, both tied to Apple hardware and an Apple Developer account, which this project's CI (a single Linux runner) does not have. The source still compiles for macOS; it is just not built or tested.
|
||||||
- **GUI:** on Linux and macOS the app restarts entirely as administrator (`pkexec` or `osascript`) instead of using a helper process.
|
- **GUI:** on Linux and macOS the app restarts entirely as administrator (`pkexec` or `osascript`) instead of using a helper process.
|
||||||
|
|
||||||
## Where it is going
|
## Where it is going
|
||||||
@@ -114,7 +115,8 @@ Summary of the [ROADMAP](ROADMAP.md):
|
|||||||
| | |
|
| | |
|
||||||
|---|---|
|
|---|---|
|
||||||
| **Done** | Metadata from 8 file systems, BitLocker, LUKS, FileVault 2, RAID, LVM, E01, Ex01, AFF4, fragmented JPEG, MP4 without an index, SQLite reader, SMART, QCOW2/VMDK/VHD/VHDX/DMG, hash-chained audit trail, PDF report, Ed25519 signatures, APFS free map |
|
| **Done** | Metadata from 8 file systems, BitLocker, LUKS, FileVault 2, RAID, LVM, E01, Ex01, AFF4, fragmented JPEG, MP4 without an index, SQLite reader, SMART, QCOW2/VMDK/VHD/VHDX/DMG, hash-chained audit trail, PDF report, Ed25519 signatures, APFS free map |
|
||||||
| **Next** | Trusted timestamps (RFC 3161), tests on Windows and macOS |
|
| **Next** | Trusted timestamps (RFC 3161), more tests on Windows |
|
||||||
|
| **Not planned** | A macOS build — see [Known limits](#known-limits) |
|
||||||
| **Later** | NSRL and hash lists, content search, unified timeline, browser interpretation, Windows registry and messaging apps, dictionary and brute-force attacks on encrypted volumes |
|
| **Later** | NSRL and hash lists, content search, unified timeline, browser interpretation, Windows registry and messaging apps, dictionary and brute-force attacks on encrypted volumes |
|
||||||
| **No reference image** | ReFS and Storage Spaces: they only land with validation |
|
| **No reference image** | ReFS and Storage Spaces: they only land with validation |
|
||||||
| **Long term** | iOS and Android backups (iTunes, ADB), OCR, NIST CFTT validation, physical phone access through bootloader/chip exploits |
|
| **Long term** | iOS and Android backups (iTunes, ADB), OCR, NIST CFTT validation, physical phone access through bootloader/chip exploits |
|
||||||
|
|||||||
+10
-8
@@ -1,6 +1,6 @@
|
|||||||
<p align="center"><img src="apps/gui/ui/guara.png" width="300" alt="Guará"></p>
|
<p align="center"><img src="apps/gui/ui/guara.png" width="300" alt="Guará"></p>
|
||||||
<h1 align="center">Guará</h1>
|
<h1 align="center">Guará</h1>
|
||||||
<p align="center">Recuperação de arquivos livre e gratuita para HD, SSD e pendrive.<br>Terminal e interface gráfica · Windows, Linux e macOS · somente leitura na origem.</p>
|
<p align="center">Recuperação de arquivos livre e gratuita para HD, SSD e pendrive.<br>Terminal e interface gráfica · Windows e Linux · somente leitura na origem.</p>
|
||||||
|
|
||||||
<p align="center"><a href="docs/pt-BR/suporte.md">O que suporta</a> · <a href="docs/pt-BR/interface.md">Interface</a> · <a href="docs/pt-BR/cli.md">Terminal</a> · <a href="docs/pt-BR/arquitetura.md">Arquitetura</a> · <a href="ROADMAP.pt-BR.md">Roadmap</a> · <a href="CHANGELOG.pt-BR.md">Changelog</a></p>
|
<p align="center"><a href="docs/pt-BR/suporte.md">O que suporta</a> · <a href="docs/pt-BR/interface.md">Interface</a> · <a href="docs/pt-BR/cli.md">Terminal</a> · <a href="docs/pt-BR/arquitetura.md">Arquitetura</a> · <a href="ROADMAP.pt-BR.md">Roadmap</a> · <a href="CHANGELOG.pt-BR.md">Changelog</a></p>
|
||||||
|
|
||||||
@@ -38,15 +38,16 @@ Baixe o pacote do seu sistema em **[Releases](../../releases)**:
|
|||||||
|
|
||||||
| | CLI | App gráfico |
|
| | CLI | App gráfico |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Windows | `guara-*-windows-x86_64.zip` | instalador `.msi` / `.exe` |
|
| Windows | — | instalador `.msi` / `.exe` |
|
||||||
| macOS | `guara-*-macos-{aarch64,x86_64}.tar.gz` | `.dmg` |
|
|
||||||
| Linux | `guara-*-linux-{x86_64,aarch64}.tar.gz` | `.AppImage` / `.deb` |
|
| Linux | `guara-*-linux-{x86_64,aarch64}.tar.gz` | `.AppImage` / `.deb` |
|
||||||
|
|
||||||
Cada arquivo tem um `.sha256` ao lado. Compilar do código: `cargo build --release -p guara-cli` (Rust 1.80+).
|
O CLI é só para Linux; o app desktop sai para Linux e Windows. Cada pacote do
|
||||||
|
CLI tem um `.sha256` ao lado. Compilar do código: `cargo build --release -p
|
||||||
|
guara-cli` (Rust 1.80+, Linux).
|
||||||
|
|
||||||
**Atualizações:** o app desktop (AppImage, Windows e macOS) consulta o GitHub ao abrir; havendo versão nova, um cartão oferece **Atualizar agora**: ele baixa, confere a assinatura do pacote, instala e reabre, e você deixa de trocar o AppImage na mão. A consulta é uma única requisição ao `latest.json` da release e nada seu é enviado; desligue em **Configurações**. Instalações por `.deb`/`.rpm` só mostram o aviso, porque quem manda nesses arquivos é o gerenciador de pacotes.
|
**Atualizações:** o app desktop (AppImage e Windows) consulta o Gitea ao abrir; havendo versão nova, um cartão oferece **Atualizar agora**: ele baixa, confere a assinatura do pacote, instala e reabre, e você deixa de trocar o AppImage na mão. A consulta é uma única requisição ao `latest.json` da release e nada seu é enviado; desligue em **Configurações**. Instalações por `.deb`/`.rpm` só mostram o aviso, porque quem manda nesses arquivos é o gerenciador de pacotes.
|
||||||
|
|
||||||
> Os binários ainda **não são assinados**: o Windows SmartScreen e o Gatekeeper do macOS vão avisar. Confira o SHA-256.
|
> Os binários ainda **não são assinados**: o Windows SmartScreen vai avisar. Confira o SHA-256.
|
||||||
|
|
||||||
Ler discos brutos exige privilégios: **administrador** (Windows), `sudo` (Linux e macOS). Mesmo como root, o Guará grava sessões, relatórios e arquivos recuperados com o dono e as permissões do usuário que o abriu.
|
Ler discos brutos exige privilégios: **administrador** (Windows), `sudo` (Linux e macOS). Mesmo como root, o Guará grava sessões, relatórios e arquivos recuperados com o dono e as permissões do usuário que o abriu.
|
||||||
|
|
||||||
@@ -104,7 +105,7 @@ App desktop (Tauri) no estilo de um gerenciador de arquivos, pensado para quando
|
|||||||
- **NTFS:** arquivos comprimidos, EFS e registros muito fragmentados são ignorados ou marcados como incompletos.
|
- **NTFS:** arquivos comprimidos, EFS e registros muito fragmentados são ignorados ou marcados como incompletos.
|
||||||
- **exFAT:** validado com imagem sintética; faltam mídias reais.
|
- **exFAT:** validado com imagem sintética; faltam mídias reais.
|
||||||
- **Celulares:** o Guará trabalha com mídias de armazenamento e **não** desbloqueia aparelhos nem contorna senhas.
|
- **Celulares:** o Guará trabalha com mídias de armazenamento e **não** desbloqueia aparelhos nem contorna senhas.
|
||||||
- **Windows e macOS:** o código compila e é testado em CI, mas os testes com imagens reais rodam só no Linux. Relatos de mídias reais são muito bem-vindos.
|
- **Windows:** o código compila e é testado em CI, mas os testes com imagens reais rodam só no Linux. Não há build para macOS: o Tauri precisa do SDK do macOS e de assinatura, os dois presos a hardware Apple e a uma conta Apple Developer, que o CI deste projeto (um único runner Linux) não tem. O código-fonte continua compilando para macOS; só não é compilado nem testado.
|
||||||
- **GUI:** no Linux e macOS o app reinicia inteiro como administrador (`pkexec` ou `osascript`) em vez de usar um processo auxiliar.
|
- **GUI:** no Linux e macOS o app reinicia inteiro como administrador (`pkexec` ou `osascript`) em vez de usar um processo auxiliar.
|
||||||
|
|
||||||
## Para onde vai
|
## Para onde vai
|
||||||
@@ -114,7 +115,8 @@ Resumo do [ROADMAP](ROADMAP.pt-BR.md):
|
|||||||
| | |
|
| | |
|
||||||
|---|---|
|
|---|---|
|
||||||
| **Feito** | Metadados de 8 sistemas de arquivos, BitLocker, LUKS, FileVault 2, RAID, LVM, E01, Ex01, AFF4, JPEG fragmentado, MP4 sem índice, leitor de SQLite, SMART, QCOW2/VMDK/VHD/VHDX/DMG, trilha de auditoria encadeada por hash, relatório em PDF, assinaturas Ed25519, mapa livre do APFS |
|
| **Feito** | Metadados de 8 sistemas de arquivos, BitLocker, LUKS, FileVault 2, RAID, LVM, E01, Ex01, AFF4, JPEG fragmentado, MP4 sem índice, leitor de SQLite, SMART, QCOW2/VMDK/VHD/VHDX/DMG, trilha de auditoria encadeada por hash, relatório em PDF, assinaturas Ed25519, mapa livre do APFS |
|
||||||
| **Próximo** | Carimbo de tempo de terceiros (RFC 3161), testes em Windows e macOS |
|
| **Próximo** | Carimbo de tempo de terceiros (RFC 3161), mais testes em Windows |
|
||||||
|
| **Fora de plano** | Um build para macOS — veja [Limites conhecidos](#limites-conhecidos) |
|
||||||
| **Depois** | NSRL e listas de hashes, busca em conteúdo, linha do tempo unificada, interpretação de navegadores, registro do Windows e apps de mensagem, ataque de dicionário e força bruta a volumes cifrados |
|
| **Depois** | NSRL e listas de hashes, busca em conteúdo, linha do tempo unificada, interpretação de navegadores, registro do Windows e apps de mensagem, ataque de dicionário e força bruta a volumes cifrados |
|
||||||
| **Sem imagem de referência** | ReFS e Storage Spaces: só entram com validação |
|
| **Sem imagem de referência** | ReFS e Storage Spaces: só entram com validação |
|
||||||
| **Longo prazo** | Backups de iOS e Android (iTunes, ADB), OCR, validação NIST CFTT, acesso físico a celulares por exploit de bootloader/chip |
|
| **Longo prazo** | Backups de iOS e Android (iTunes, ADB), OCR, validação NIST CFTT, acesso físico a celulares por exploit de bootloader/chip |
|
||||||
|
|||||||
+9
-4
@@ -6,6 +6,11 @@ Where Guará has been, where it is and where it is going. What is marked as done
|
|||||||
|
|
||||||
Legend: ✅ done · 🟡 partial · 🔜 planned · 🔭 long-term idea · ⛔ out of scope
|
Legend: ✅ done · 🟡 partial · 🔜 planned · 🔭 long-term idea · ⛔ out of scope
|
||||||
|
|
||||||
|
> Items marked done for macOS reflect what the GitHub CI used to build and test,
|
||||||
|
> before the move to Gitea. The Gitea CI has one Linux runner; it builds and
|
||||||
|
> tests Linux and Windows. macOS is not built or tested any more — see the
|
||||||
|
> README's [Known limits](README.md#known-limits).
|
||||||
|
|
||||||
## Principles that do not change
|
## Principles that do not change
|
||||||
|
|
||||||
1. **The source is read-only.** Nothing in the core writes to the device being recovered.
|
1. **The source is read-only.** Nothing in the core writes to the device being recovered.
|
||||||
@@ -138,7 +143,7 @@ Physical access is the differentiator of commercial tools like Cellebrite. It de
|
|||||||
| **Reproducibility:** replay the recorded procedure and get the same result | 🔜 |
|
| **Reproducibility:** replay the recorded procedure and get the same result | 🔜 |
|
||||||
| PDF report (A4, built in) | ✅ |
|
| PDF report (A4, built in) | ✅ |
|
||||||
| **External validation:** NIST CFTT (Computer Forensic Tool Testing) tests and publication of the results | 🔭 |
|
| **External validation:** NIST CFTT (Computer Forensic Tool Testing) tests and publication of the results | 🔭 |
|
||||||
| Signed binaries (Windows and macOS) | 🔜 |
|
| Signed binaries (Windows) | 🔜 |
|
||||||
|
|
||||||
External validation is what makes a report accepted. Without it, Guará is good for triage, recovery and support, and the examiner must check the results by other means.
|
External validation is what makes a report accepted. Without it, Guará is good for triage, recovery and support, and the examiner must check the results by other means.
|
||||||
|
|
||||||
@@ -158,9 +163,9 @@ External validation is what makes a report accepted. Without it, Guará is good
|
|||||||
|
|
||||||
| Item | Status |
|
| Item | Status |
|
||||||
|---|---|
|
|---|---|
|
||||||
| CLI and interface for Windows, Linux and macOS | ✅ |
|
| CLI (Linux) and interface for Windows and Linux | ✅ |
|
||||||
| CI on three systems, automatic release by tag | ✅ |
|
| CI on Linux and Windows, automatic release by tag | ✅ |
|
||||||
| Tests with real reference images on Linux, macOS and Windows | ✅ |
|
| Tests with real reference images on Linux and Windows | ✅ |
|
||||||
| Update from inside the desktop app (signed packages, one click) | ✅ |
|
| Update from inside the desktop app (signed packages, one click) | ✅ |
|
||||||
| GUI: privileged helper process instead of restarting the whole app as administrator | 🔜 |
|
| GUI: privileged helper process instead of restarting the whole app as administrator | 🔜 |
|
||||||
| Signed and notarized binaries | 🔜 |
|
| Signed and notarized binaries | 🔜 |
|
||||||
|
|||||||
+9
-4
@@ -6,6 +6,11 @@ Onde o Guará esteve, onde está e para onde vai. O que está marcado como feito
|
|||||||
|
|
||||||
Legenda: ✅ feito · 🟡 parcial · 🔜 planejado · 🔭 ideia a longo prazo · ⛔ fora do escopo
|
Legenda: ✅ feito · 🟡 parcial · 🔜 planejado · 🔭 ideia a longo prazo · ⛔ fora do escopo
|
||||||
|
|
||||||
|
> Itens marcados como feitos para macOS refletem o que o CI do GitHub compilava e
|
||||||
|
> testava, antes da mudança para o Gitea. O CI do Gitea tem um único runner Linux;
|
||||||
|
> ele compila e testa Linux e Windows. O macOS deixou de ser compilado e testado —
|
||||||
|
> veja os [Limites conhecidos](README.pt-BR.md#limites-conhecidos) do README.
|
||||||
|
|
||||||
## Princípios que não mudam
|
## Princípios que não mudam
|
||||||
|
|
||||||
1. **A origem é somente leitura.** Nada no núcleo escreve no dispositivo recuperado.
|
1. **A origem é somente leitura.** Nada no núcleo escreve no dispositivo recuperado.
|
||||||
@@ -138,7 +143,7 @@ O acesso físico é o diferencial de ferramentas comerciais como a Cellebrite. D
|
|||||||
| **Reprodutibilidade:** repetir o procedimento gravado e obter o mesmo resultado | 🔜 |
|
| **Reprodutibilidade:** repetir o procedimento gravado e obter o mesmo resultado | 🔜 |
|
||||||
| Relatório em PDF (A4, próprio) | ✅ |
|
| Relatório em PDF (A4, próprio) | ✅ |
|
||||||
| **Validação externa:** testes do NIST CFTT (Computer Forensic Tool Testing) e publicação dos resultados | 🔭 |
|
| **Validação externa:** testes do NIST CFTT (Computer Forensic Tool Testing) e publicação dos resultados | 🔭 |
|
||||||
| Binários assinados (Windows e macOS) | 🔜 |
|
| Binários assinados (Windows) | 🔜 |
|
||||||
|
|
||||||
A validação externa é o que faz um laudo ser aceito. Sem ela, o Guará serve para triagem, recuperação e apoio, e o perito deve conferir os resultados por outro meio.
|
A validação externa é o que faz um laudo ser aceito. Sem ela, o Guará serve para triagem, recuperação e apoio, e o perito deve conferir os resultados por outro meio.
|
||||||
|
|
||||||
@@ -158,9 +163,9 @@ A validação externa é o que faz um laudo ser aceito. Sem ela, o Guará serve
|
|||||||
|
|
||||||
| Item | Estado |
|
| Item | Estado |
|
||||||
|---|---|
|
|---|---|
|
||||||
| CLI e interface para Windows, Linux e macOS | ✅ |
|
| CLI (Linux) e interface para Windows e Linux | ✅ |
|
||||||
| CI em três sistemas, release automática por tag | ✅ |
|
| CI em Linux e Windows, release automática por tag | ✅ |
|
||||||
| Testes com imagens de referência reais em Linux, macOS e Windows | ✅ |
|
| Testes com imagens de referência reais em Linux e Windows | ✅ |
|
||||||
| Atualização dentro do app desktop (pacotes assinados, um clique) | ✅ |
|
| Atualização dentro do app desktop (pacotes assinados, um clique) | ✅ |
|
||||||
| GUI: processo auxiliar privilegiado em vez de reiniciar o app inteiro como administrador | 🔜 |
|
| GUI: processo auxiliar privilegiado em vez de reiniciar o app inteiro como administrador | 🔜 |
|
||||||
| Binários assinados e notarizados | 🔜 |
|
| Binários assinados e notarizados | 🔜 |
|
||||||
|
|||||||
Reference in new issue
Block a user