summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorTomer <11458759+tomer8007@users.noreply.github.com>2020-10-17 21:25:57 +0200
committerGitHub <noreply@github.com>2020-10-17 21:25:57 +0200
commite9757b2fd5be33b2925128a5f0441fca2e953e32 (patch)
treece1b0ac137bf8ed367d9b788c2d00a7c983b959e /README.md
parentInitial commit (diff)
downloadwidevine-l3-decryptor-e9757b2fd5be33b2925128a5f0441fca2e953e32.tar
widevine-l3-decryptor-e9757b2fd5be33b2925128a5f0441fca2e953e32.tar.gz
widevine-l3-decryptor-e9757b2fd5be33b2925128a5f0441fca2e953e32.tar.bz2
widevine-l3-decryptor-e9757b2fd5be33b2925128a5f0441fca2e953e32.tar.lz
widevine-l3-decryptor-e9757b2fd5be33b2925128a5f0441fca2e953e32.tar.xz
widevine-l3-decryptor-e9757b2fd5be33b2925128a5f0441fca2e953e32.tar.zst
widevine-l3-decryptor-e9757b2fd5be33b2925128a5f0441fca2e953e32.zip
Diffstat (limited to 'README.md')
-rw-r--r--README.md32
1 files changed, 32 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a6046d5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,32 @@
+# Widevine L3 Decryptor
+[Widevine](https://www.widevine.com/solutions/widevine-drm) is a Google-Owned DRM system that's in use by many popular streaming services (Netflix, Spotify, ...) to protect media contnet from being downloaded.
+
+But Widevine's least secure security level, L3, as used in most browsers and PCs, is implemented 100% in software (i.e no hardware TEEs), thereby making it reversible and bypassable.
+
+This Chrome extension demonstates how it's possible to bypass Widevine DRM by hijacking calls to the browser's [Encrypted Media Extensions (EME)](https://www.html5rocks.com/en/tutorials/eme/basics/) and decrypting all Widevine content keys transferred - effectively turning it into a clearkey DRM.
+
+## Usage
+To see this concept in action, just load the extnesion in developer mode and browse to any website that plays Widevine-protected content, such as https://bitmovin.com/demos/drm.
+
+Keys will be logged in plaintext to the javascript console:
+
+`WidevineDecryptor: Found key: 100b6c20940f779a4589152b57d2dacb (KID=eb676abbcb345e96bbcf616630f1a3da)
+`
+
+Decrypting the media itself is then just a matter of using a tool that can decrypt MPEG-CENC streams, like `ffmpeg`. e.g:
+
+`ffmpeg -decryption_key 100b6c20940f779a4589152b57d2dacb -i encrypted_media.mp4 -codec copy decrypted_media.mp4`
+
+## How
+In the context of browsers the actual decryption of the media is usually done inside a proprietary binary (`widevinecdm.dll`, known as the Content Decryption Module or CDM) only after receiving the license from a license server with an encrypted key in it.
+
+This binary is usually heavily obfuscated and makes use of third-party solutions that claim to offer software "protection" such as [Arxan](https://digital.ai/application-protection) or [Whitecryption](https://www.intertrust.com/products/application-shielding/).
+
+Some reversing job on that binary can then be done to extract the secret keys and mimic the key decryption algorithm from the license response.
+
+## Why
+This PoC was done to further show that code obfuscation, anti-debugging tricks, whitebox cryptography algorithms and other methods of security-by-obscurity will eventually by defeated anyway, and are, in a way, pointless.
+
+## Legal Desclaimer
+This is for educational purposes only. Downloading copyrighted matirials from streaming services may violate their Terms Of Service. Use at your own risk.
+