
Gallery Vault Dump-Wiederherstellungstool mit automatisierter Erkennung, Schlüsselableitung und automatischer Medienwiederherstellung.
Wiederherstellungstool für Assets, die von der Android-Anwendung Gallery Vault (ThinkYeah) verschlüsselt wurden. Es unterstützt das unten dokumentierte V2-Containerformat und benötigt keine Gallery-Vault-PIN.
Stellen Sie nur Daten wieder her, die Ihnen gehören oder deren Untersuchung Ihnen gestattet ist.
Installieren Sie die Laufzeitabhängigkeiten:
python3 -m pip install -r requirements.txt
Für Entwicklung und Tests:
python3 -m pip install -r requirements-dev.txt
ruff format --check .
ruff check .
python3 -m pytest
python3 gv_tui.py
Wählen Sie ein Dump-Verzeichnis oder eine einzelne verschlüsselte Datei aus, prüfen Sie das Ausgabeverzeichnis und drücken Sie F5 oder wählen Sie Wiederherstellen. F10 fordert einen sicheren Stopp an, während eine Wiederherstellung aktiv ist, und beendet das Programm im Leerlauf.
Die intelligente Erkennung sucht nach Verzeichnissen mit Namen wie .galleryvault_DoNotDelete_123 und verarbeitet deren files-Verzeichnis. Deaktivieren Sie sie, um jede Datei unter dem ausgewählten Pfad zu untersuchen.
python3 gv_decryptor.py /pfad/zum/dump --out /pfad/zur/ausgabe
Nützliche Optionen:
--manual, --scan-all Alle Dateien scannen statt Repositorys zu erkennen
--no-recursive Nur auf oberster Ebene scannen oder erkennen
--overwrite Vorhandene wiederhergestellte Dateien ersetzen
--verbose Übersprungene Dateien und detaillierte Statuszahlen anzeigen
Eine einzelne verschlüsselte Datei wird ebenfalls akzeptiert:
python3 gv_decryptor.py verschluesselte_datei --manual
Wenn --out weggelassen wird, werden wiederhergestellte Dateien in EINGABE_recovered abgelegt. Die Eingabestruktur bleibt unter diesem Verzeichnis erhalten. Vorhandene Dateien werden nicht überschrieben, sofern nicht --overwrite angegeben wird, und die Ausgabe wird atomar geschrieben, sodass eine fehlgeschlagene oder abgebrochene Wiederherstellung keine unvollständige wiederhergestellte Datei hinterlässt.
CLI-Exit-Codes:
0: Mindestens ein Asset wurde wiederhergestellt und kein Kandidat ist fehlgeschlagen1: Es wurden keine Assets wiederhergestellt oder mindestens ein Kandidat ist fehlgeschlagen2: Ungültige Eingabe- oder AusgabekonfigurationDie wiederhergestellte Erweiterung wird anhand der Dateisignatur ausgewählt. Der integrierte Detektor erkennt PNG, JPEG, GIF, WebP, MP4, MOV, 3GP, HEIC/HEIF, AVIF, MP3, WAV, Ogg, AVI, Matroska, PDF und ZIP. Unbekannte Inhalte werden als .bin geschrieben.
Im unterstützten Gallery-Vault-V2-Format schützt die PIN die Anwendungsoberfläche; die Datei-Payload verwendet eine positionsabhängige XOR-Transformation. Ihr dateispezifischer Schlüssel wird im Container gespeichert, nachdem er mit einem DES-Schlüssel verschlüsselt wurde, der aus von der Anwendung verwendeten Konstanten abgeleitet wird.
Ein vereinfachtes Containerlayout:
┌──────────────────── Gallery Vault V2 container ────────────────────┐
│ Thumbnail-Präfix │ Verschlüsselte Payload │
├────────────────────────────────────────────────────────────────────┤
│ Innerer Marker >>tyfs>> │
│ Optionaler vertauschter Payload-Block │
├─────────────────────────── Tail-Metadaten ─────────────────────────┤
│ Thumbnail-Länge 8 Bytes │
│ Payload/Marker-Grenze 8 Bytes │
│ Layout-Selektor 1 Byte │
│ DES-verschlüsselter XOR-Schlüssel variabel, blockausgerichtet │
│ Länge des verschlüsselten Schlüssels 8 Bytes │
│ Metadaten variabel │
│ Metadatenlänge 8 Bytes │
│ Versionsfeld 2 Bytes (01 01) │
├────────────────────────────────────────────────────────────────────┤
│ End-Marker <<tyfs<< │
└────────────────────────────────────────────────────────────────────┘
│
▼
Offsets validieren → XOR-Schlüssel wiederherstellen → Payload zusammensetzen
│
▼
wiederhergestelltes Asset streamen
Der Decryptor validiert diese Offsets und Marker, bevor er eine Payload verarbeitet. Anschließend entschlüsselt er den dateispezifischen Schlüssel, setzt die vom Layout-Byte ausgewählten Payload-Bereiche zusammen und wendet Folgendes an:
plain[i] = encrypted[i] XOR (i & 0xff) XOR key[i mod key_length]
Dateien werden in Blöcken transformiert, wodurch der Speicherverbrauch bei großen Videos begrenzt bleibt. Intelligente Erkennung und Vollscan verwenden dieselbe Implementierung in CLI und TUI.
UNSUPPORTED_VERSION bedeutet, dass die Datei Gallery-Vault-Marker enthält, aber nicht das unterstützte V2-Versionsfeld.CORRUPT_STRUCTURE bedeutet, dass ein Marker, eine Länge oder eine Payload-Grenze ungültig ist.NOT_GV bedeutet, dass der Gallery-Vault-End-Marker nicht in der Nähe des Dateiendes gefunden wurde.EXISTS bedeutet, dass das Ziel erhalten wurde; verwenden Sie --overwrite nur, wenn der Ersatz beabsichtigt ist.--verbose beim Scannen eines gemischten Verzeichnisses, um detaillierte Statusmeldungen zu sehen.Gallery Vault hatte mehrere Versionen und Speicherlayouts. Die Kompatibilität ist auf Dateien beschränkt, die der obigen V2-Struktur entsprechen; bewahren Sie die ursprünglichen verschlüsselten Daten auf, bis die wiederhergestellten Dateien verifiziert wurden.
Dieses Tool wird ausschließlich für Bildungs- und forensische Zwecke bereitgestellt. Der Autor übernimmt keine Verantwortung für Missbrauch. Stellen Sie stets sicher, dass Sie über die entsprechende Autorisierung verfügen, bevor Sie Daten entschlüsseln, die Ihnen nicht gehören.