Cryptanalysis of a proprietary 1999 video DRM system, recovering 51 minutes of lost media through static binary analysis and known-plaintext attack.
Frame from a recovered "CyberRing" match. WCW wrestlers were filmed against blue screen and composited into a CGI arena with fire effects. This is what 1999 interactive entertainment looked like.
The WCW Internet Powerdisk was a promotional CD-ROM distributed with WCW Magazine in 1999. It shipped 61 video clips (match highlights, wrestler profiles, show intros) encrypted with a proprietary system called PAVENCRYPT, developed by a company called UIT.
Playback required the bundled ULI Player, which fetched per-file decryption keys from a remote server at runtime. When UIT's server infrastructure went offline around 2000, the content became permanently inaccessible. The player would only display:
"Decryption key not found in the server database"
No keys exist on the disc. No documentation of the format was ever published. UIT appears to have dissolved entirely. For 25 years, the content has been unplayable.
Our reverse engineering findings are corroborated by the original 1999 license agreement filed with the SEC, which describes the "Server Side Key Generator Program" creating "security keys based on time."
The recovered videos are available on the Internet Archive:
https://archive.org/details/wcw-cyberring-powerdisk-1999
61 clips totaling 51 minutes 20 seconds, converted to H.264/AAC MP4. Original content produced by WCW (Turner Broadcasting). IP now held by WWE.
# 1. Extract the ISO
7z x WCW_R1.ISO -oiso_contents
# 2. Decrypt all PAV files to MPEG-1
python decrypt_pav.py
# 3. Convert to MP4 (optional, requires ffmpeg)
python convert_mp4.pyRequirements: Python 3.6+ (no third-party packages). ffmpeg for optional MP4 conversion.
Each .PAV file is encrypted with a repeating-key byte-subtraction cipher:
plaintext[i] = (ciphertext[i] - key[i % key_length]) mod 256
Keys are unique per file, ranging from 8 to 24 bytes of printable ASCII, randomly generated at
encoding time. The decryption routine lives inside PavSource.ax, a 24 KB
DirectShow source filter built in April 1999:
mov cl, [ebx+edx+0x3C] ; load key[key_index]
sub byte ptr [eax], cl ; plaintext = ciphertext - key_byteNo brute force. No emulation. No server. The keys are recovered mathematically:
-
MPEG-1 files end with known bytes. The file tail contains
0xFFpadding followed by the Program End Code (00 00 01 B9). -
A repeating key over a constant produces a repeating pattern. The encrypted tail has detectable periodicity equal to the key length.
-
Key recovery is algebraic. Given the known plaintext, we can derive
key[i] = (ciphertext[i] - 0xFF) mod 256. -
Verification is structural. The decrypted output must begin with a valid MPEG-1 Pack Start Code (
00 00 01 BA).
The entire attack executes in seconds with no external input.
┌─────────────────────────────────────────────────┐
│ "PAVENCRYPT" magic (10 bytes) │
├─────────────────────────────────────────────────┤
│ Unencrypted MPEG-1 preview (16-32 KB) │
│ 2 video frames, no audio (serves as thumbnail) │
├─────────────────────────────────────────────────┤
│ Encrypted MPEG-1 Program Stream │
│ Per-file subtraction key, 8-24 bytes │
│ │
│ Video: 320×240, 30fps, ~1.29 Mbps │
│ Audio: MP2, 44.1 kHz, mono, 64 kbps │
└─────────────────────────────────────────────────┘
61 clips spanning WCW's late-1999 roster:
| Category | Count | Highlights |
|---|---|---|
| Match footage | 9 | Hogan vs. Goldberg, Hogan vs. Macho Man, CyberRing matches |
| Wrestler bios | 13 | Goldberg, Sting, Hogan, DDP, Flair, Nash, Steiner |
| Show intros | 5 | Monday Nitro, Thunder, Surge |
| Storyline segments | 8 | "Hacker" serial narrative |
| Promos & merchandise | 9 | Wrestler shirts and merchandise spots |
| Other segments | 17 | Nitro Girls, Nasty Boys matches, Rey Mysterio, Konnan |
decrypt_pav.py Decryptor: key recovery + decryption to MPEG-1
convert_mp4.py Transcoder: batch MPEG-1 to H.264/AAC MP4
analyze_pav.py Inspector: non-destructive PAV structure analysis
PavSource.ax Original DirectShow filter binary (reversed)
UlPlayer.exe Original ULI Player application
FINDINGS.md Technical report: format spec, disassembly, all 61 keys
TIMELINE.md Reverse engineering methodology, step by step
docs/PRIMARY_SOURCES.md Original 1999 SEC filing documenting the encryption system
This tool works on any PAVENCRYPT-format file. ULI Player was licensed to multiple content distributors in the late 1990s. The attack generalizes to any repeating-key cipher applied to a file format with predictable byte patterns, which describes most proprietary DRM schemes from that era.
