
Cryptanalyse d'un système DRM vidéo propriétaire de 1999. Récupère 61 vidéos de catch cryptées à partir du CD-ROM WCW Internet Powerdisk via une analyse statique binaire et une attaque à texte clair connu.
Cryptanalyse d'un système propriétaire de DRM vidéo de 1999, récupérant 51 minutes de médias perdus grâce à une analyse binaire statique et une attaque à texte clair connu.

Image extraite d'un match « CyberRing » récupéré. Les catcheurs de la WCW ont été filmés sur fond bleu et composités dans une arène CGI avec des effets de feu. Voilà à quoi ressemblait le divertissement interactif en 1999.
Le WCW Internet Powerdisk était un CD-ROM promotionnel distribué avec le magazine WCW en 1999. Il contenait 61 clips vidéo (moments forts de matchs, biographies de catcheurs, intros d'émissions) chiffrés avec un système propriétaire appelé PAVENCRYPT, développé par une société nommée UIT.
La lecture nécessitait le lecteur ULI Player fourni, qui récupérait les clés de déchiffrement par fichier depuis un serveur distant au moment de l'exécution. Lorsque l'infrastructure serveur d'UIT a été mise hors ligne vers 2000, le contenu est devenu définitivement inaccessible. Le lecteur affichait simplement :
« Decryption key not found in the server database »
Aucune clé n'est présente sur le disque. Aucune documentation du format n'a jamais été publiée. UIT semble avoir complètement disparu. Pendant 25 ans, le contenu est resté illisible.
Nos conclusions de rétro-ingénierie sont corroborées par le contrat de licence original de 1999 déposé auprès de la SEC, qui décrit le « Server Side Key Generator Program » créant des « clés de sécurité basées sur le temps ».
Les vidéos récupérées sont disponibles sur Internet Archive :
https://archive.org/details/wcw-cyberring-powerdisk-1999
61 clips totalisant 51 minutes 20 secondes, convertis en MP4 H.264/AAC. Contenu original produit par la WCW (Turner Broadcasting). Les droits de propriété intellectuelle sont désormais détenus par la WWE.
# 1. Extraire l'ISO
7z x WCW_R1.ISO -oiso_contents
# 2. Déchiffrer tous les fichiers PAV en MPEG-1
python decrypt_pav.py
# 3. Convertir en MP4 (optionnel, nécessite ffmpeg)
python convert_mp4.py
Prérequis : Python 3.6+ (aucun paquet tiers). ffmpeg pour la conversion MP4 optionnelle.
Chaque fichier .PAV est chiffré avec un chiffrement par soustraction d'octets à clé répétée :
plaintext[i] = (ciphertext[i] - key[i % key_length]) mod 256
Les clés sont uniques par fichier, de 8 à 24 octets d'ASCII imprimable, générées aléatoirement au
moment du codage. La routine de déchiffrement se trouve dans PavSource.ax, un filtre source
DirectShow de 24 Ko construit en avril 1999 :
mov cl, [ebx+edx+0x3C] ; load key[key_index]
sub byte ptr [eax], cl ; plaintext = ciphertext - key_byte
Pas de force brute. Pas d'émulation. Pas de serveur. Les clés sont récupérées mathématiquement :
Les fichiers MPEG-1 se terminent par des octets connus. La fin du fichier contient un bourrage de 0xFF
suivi du code de fin de programme (00 00 01 B9).
Une clé répétée sur une constante produit un motif répété. La fin chiffrée présente une périodicité détectable égale à la longueur de la clé.
La récupération de la clé est algébrique. Connaissant le texte clair, on peut dériver
key[i] = (ciphertext[i] - 0xFF) mod 256.
La vérification est structurelle. Le résultat déchiffré doit commencer par un
code de départ de paquet MPEG-1 valide (00 00 01 BA).
L'ensemble de l'attaque s'exécute en quelques secondes sans aucune donnée externe.
┌─────────────────────────────────────────────────┐
│ Magic « PAVENCRYPT » (10 octets) │
├─────────────────────────────────────────────────┤
│ Aperçu MPEG-1 non chiffré (16-32 Ko) │
│ 2 images vidéo, sans audio (sert de vignette) │
├─────────────────────────────────────────────────┤
│ Flux Programme MPEG-1 chiffré │
│ Clé de soustraction par fichier, 8-24 octets │
│ │
│ Vidéo : 320×240, 30 ips, ~1,29 Mbps │
│ Audio : MP2, 44,1 kHz, mono, 64 kbps │
└─────────────────────────────────────────────────┘
61 clips couvrant le roster de la WCW de fin 1999 :
decrypt_pav.py Déchiffreur : récupération de clé + déchiffrement en MPEG-1
convert_mp4.py Transcodeur : lot MPEG-1 vers MP4 H.264/AAC
analyze_pav.py Inspecteur : analyse non destructive de la structure PAV
PavSource.ax Binaire original du filtre DirectShow (rétro-conçu)
UlPlayer.exe Application ULI Player originale
FINDINGS.md Rapport technique : spécification du format, désassemblage, les 61 clés
TIMELINE.md Méthodologie de rétro-ingénierie, étape par étape
docs/PRIMARY_SOURCES.md Dépôt SEC original de 1999 documentant le système de chiffrement
Cet outil fonctionne sur tout fichier au format PAVENCRYPT. Le lecteur ULI Player a été concédé sous licence à plusieurs distributeurs de contenu à la fin des années 1990. L'attaque se généralise à tout chiffrement à clé répétée appliqué à un format de fichier avec des motifs d'octets prévisibles, ce qui décrit la plupart des systèmes DRM propriétaires de cette époque.
| Catégorie | Compte | Points forts |
|---|
| Séquences de match | 9 | Hogan vs. Goldberg, Hogan vs. Macho Man, matchs CyberRing |
| Biographies de catcheurs | 13 | Goldberg, Sting, Hogan, DDP, Flair, Nash, Steiner |
| Intros d'émissions | 5 | Monday Nitro, Thunder, Surge |
| Segments d'histoire | 8 | Narration en série « Hacker » |
| Promos et marchandise | 9 | T-shirts et spots publicitaires des catcheurs |
| Autres segments | 17 | Nitro Girls, matchs des Nasty Boys, Rey Mysterio, Konnan |