Causes de corruption UXC
Une archive UXC peut être corrompue pour plusieurs raisons : coupure réseau pendant un téléchargement, défaillance disque, corruption par un antivirus trop agressif, ou altération volontaire (tentative de modification du contenu). Universal Installer V2 intègre des outils de diagnostic et de récupération partielle.
Avant toute tentative de réparation : vérifier d'abord si l'archive n'est pas simplement tronquée (téléchargement interrompu). Dans ce cas, le re-téléchargement est plus rapide que la réparation.
Diagnostic de l'archive
# Diagnostic complet d'une archive UXC
universal-installer diagnose archive_corrompu.uxc
# Résultat typique
=== Diagnostic UXC : archive_corrompu.uxc ===
Format version : 3.0 ✓
Header HMAC : INVALIDE ✗
Blocs total : 1280
Blocs valides : 1247 (97.4%)
Blocs invalides: 33 (2.6%)
- Blocs 124-127 : CRC32 mismatch
- Blocs 891-920 : données tronquées
- Bloc 1150 : SHA-256 invalide
Manifest : PARTIELLEMENT VALIDE △
Fichiers récupérables : 44/47 (93.6%)
Fichiers perdus : 3
- assets/video.mp4 (blocs 891-920)
- data/large_db.bin (bloc 1150, partiel)
- config/theme.bin (blocs 124-127)
Récupération par blocs
UXC v3 stocke les données en blocs indépendants de 64 KB. Un bloc corrompu n'affecte que les données de ce bloc — les autres sont récupérables :
from universal_installer.repair import UXCRepair
repair = UXCRepair("archive_corrompu.uxc")
# Récupérer les blocs valides
result = repair.recover_valid_blocks(
output="archive_repare.uxc",
skip_invalid=True,
verbose=True
)
print(f"Blocs récupérés : {result.recovered}/{result.total}")
print(f"Fichiers complets: {result.complete_files}")
print(f"Fichiers perdus : {result.lost_files}")
# Extraire uniquement les fichiers récupérables
repair.extract_recoverable(output_dir="recovered/")
Reconstruction du manifest
Si le manifest lui-même est corrompu mais que les blocs de données sont valides, Universal Installer peut reconstruire le manifest par inférence :
# Reconstruire le manifest depuis les blocs
universal-installer rebuild-manifest archive_corrompu.uxc --output manifest_reconstruit.json --verify-blocks
# Le manifest reconstruit contient
# les fichiers dont tous les blocs sont valides
# Les fichiers partiels sont signalés mais inclus
Cas irrécupérables
Certains types de corruption rendent la récupération impossible ou déconseillée :
- Header corrompu — si les 48 premiers bytes (magic + version + flags + salt) sont altérés, le format est illisible. Aucune récupération possible sans backup.
- Clé de déchiffrement manquante — si l'archive est chiffrée et que le mot de passe est perdu, aucun outil ne peut récupérer le contenu (AES-256-GCM).
- Corruption > 30% — au-delà de 30% de blocs invalides, le re-téléchargement est plus rapide que la récupération partielle.
- Fichiers critiques dans les blocs perdus — si les blocs corrompus contiennent des fichiers essentiels à l'application (exécutables principaux), la récupération partielle produit une installation non fonctionnelle.
Prévention
Trois mécanismes préventifs dans Universal Installer V2 :
# 1. Vérification HMAC avant tout déchiffrement
# (détecte la corruption avant l'extraction)
universal-installer verify archive.uxc --sig archive.uxc.sig
# 2. Reprise de téléchargement partielle
# Si le téléchargement est interrompu, reprendre depuis
# le dernier bloc valide (pas depuis le début)
universal-installer download https://cdn.exemple.fr/archive.uxc --resume --output archive.uxc
# 3. Double vérification SHA-256 après extraction
universal-installer extract archive.uxc --output-dir ./dest/ --verify-all # SHA-256 de chaque fichier contre le manifest
Conclusion
La conception par blocs d'UXC v3 limite la propagation de la corruption : un bloc invalide affecte au maximum 64 KB de données, pas l'archive entière. Dans 97% des cas de corruption réelle (coupure réseau, défaillance partielle de disque), la récupération est possible pour au moins 90% des fichiers. Pour les 3% restants (corruption massive, clé perdue, header détruit), seul un backup permet la récupération.