
Outil de récupération de dump de Gallery Vault avec découverte automatisée, dérivation de clé et restauration automatique des médias.
Outil de récupération pour les fichiers chiffrés par l'application Android Gallery Vault (ThinkYeah). Il prend en charge la disposition du conteneur V2 décrite ci-dessous et ne nécessite pas le code PIN de Gallery Vault.
Ne récupérez que des données qui vous appartiennent ou que vous êtes autorisé à examiner.
Installez les dépendances d'exécution :
python3 -m pip install -r requirements.txt
Pour le développement et les tests :
python3 -m pip install -r requirements-dev.txt
ruff format --check .
ruff check .
python3 -m pytest
python3 gv_tui.py
Sélectionnez un répertoire de dump ou un fichier chiffré individuel, vérifiez le répertoire de sortie, puis appuyez sur F5 ou choisissez Récupérer. F10 demande un arrêt sécurisé pendant qu'une récupération est active et quitte lorsque le système est inactif.
La découverte intelligente recherche les répertoires nommés comme .galleryvault_DoNotDelete_123 et traite leur répertoire files. Désactivez-la pour inspecter chaque fichier situé sous le chemin sélectionné.
python3 gv_decryptor.py /chemin/vers/dump --out /chemin/vers/sortie
Options utiles :
--manual, --scan-all Analyse tous les fichiers au lieu de découvrir les référentiels
--no-recursive Analyse ou découvre uniquement au niveau supérieur
--overwrite Remplace les fichiers récupérés existants
--verbose Affiche les fichiers ignorés et les compteurs de statut détaillés
Un fichier chiffré individuel est également accepté :
python3 gv_decryptor.py fichier_chiffré --manual
Si --out est omis, les fichiers récupérés sont placés dans INPUT_recovered. L'arborescence d'entrée est préservée sous ce répertoire. Les fichiers existants ne sont pas remplacés sauf si --overwrite est fourni, et la sortie est écrite de manière atomique afin qu'une récupération échouée ou annulée ne laisse pas de fichier partiellement récupéré.
Les codes de sortie du CLI sont :
0 : au moins un fichier a été récupéré et aucun candidat n'a échoué1 : aucun fichier n'a été récupéré, ou au moins un candidat a échoué2 : configuration d'entrée ou de sortie invalideL'extension récupérée est sélectionnée à partir de la signature du fichier. Le détecteur intégré reconnaît PNG, JPEG, GIF, WebP, MP4, MOV, 3GP, HEIC/HEIF, AVIF, MP3, WAV, Ogg, AVI, Matroska, PDF et ZIP. Le contenu inconnu est écrit en .bin.
Dans le format Gallery Vault V2 pris en charge, le code PIN protège l'interface de l'application ; la charge utile du fichier utilise une transformation XOR dépendante de la position. Sa clé par fichier est stockée dans le conteneur après avoir été chiffrée avec une clé DES dérivée de constantes utilisées par l'application.
Une disposition simplifiée du conteneur est :
┌──────────────────── Conteneur Gallery Vault V2 ────────────────────┐
│ Préfixe de vignette │ Charge utile chiffrée │
├────────────────────────────────────────────────────────────────────┤
│ Marqueur interne >>tyfs>> │
│ Bloc de charge utile éventuellement permuté │
├─────────────────────────── Métadonnées de fin ─────────────────────┤
│ Longueur de la vignette 8 octets │
│ Limite charge utile/marqueur 8 octets │
│ Sélecteur de disposition 1 octet │
│ Clé XOR chiffrée par DES variable, alignée par bloc │
│ Longueur de la clé chiffrée 8 octets │
│ Métadonnées variable │
│ Longueur des métadonnées 8 octets │
│ Champ de version 2 octets (01 01) │
├────────────────────────────────────────────────────────────────────┤
│ Marqueur de fin <<tyfs<< │
└────────────────────────────────────────────────────────────────────┘
│
▼
valider les décalages → récupérer la clé XOR → assembler la charge utile
│
▼
diffuser le fichier récupéré
Le déchiffreur valide ces décalages et marqueurs avant de traiter une charge utile. Il déchiffre ensuite la clé par fichier, assemble les plages de charge utile sélectionnées par l'octet de disposition, puis applique :
plain[i] = encrypted[i] XOR (i & 0xff) XOR key[i mod key_length]
Les fichiers sont transformés par blocs, ce qui maintient une utilisation mémoire bornée pour les grandes vidéos. La découverte intelligente et l'analyse de tous les fichiers utilisent la même implémentation dans le CLI et le TUI.
UNSUPPORTED_VERSION signifie que le fichier contient des marqueurs Gallery Vault mais ne contient pas le champ de version V2 pris en charge.CORRUPT_STRUCTURE signifie qu'un marqueur, une longueur ou une limite de charge utile est invalide.NOT_GV signifie que le marqueur de fin Gallery Vault n'a pas été trouvé près de la fin du fichier.EXISTS signifie que la destination a été préservée ; utilisez --overwrite uniquement lorsque le remplacement est intentionnel.--verbose lors de l'analyse d'un répertoire mixte pour voir les statuts détaillés.Gallery Vault a connu plusieurs versions et dispositions de stockage. La compatibilité est limitée aux fichiers correspondant à la structure V2 ci-dessus ; conservez les données chiffrées d'origine jusqu'à ce que les fichiers récupérés aient été vérifiés.
Cet outil est fourni à des fins éducatives et médico-légales uniquement. L'auteur décline toute responsabilité en cas d'utilisation abusive. Assurez-vous toujours d'avoir l'autorisation appropriée avant de déchiffrer des données qui ne vous appartiennent pas.