
Расширение для Chrome, демонстрирующее обход Widevine L3 DRM
Этот репозиторий ранее содержал код для обхода DRM Widevine уровня L3 в Chrome на машинах с Windows.
Он больше не работает с 31 мая 2021 года, но вы можете прочитать статью о реверс-инжиниринге.
Обновление
Google подал запрос на удаление по DMCA против большинства форков этого репозитория. Оригинальное содержимое репозитория на тот момент заархивировано ниже.
Widevine — это система DRM, принадлежащая Google, которая используется многими популярными стриминговыми сервисами (Netflix, Spotify и т.д.) для предотвращения загрузки медиаконтента.
Но наименее защищённый уровень безопасности Widevine, L3, используемый в большинстве браузеров и ПК, реализован полностью программно (т.е. без аппаратных TEE), что делает его обратимым и обходимым.
Это расширение Chrome демонстрирует, как можно обойти DRM Widevine, перехватывая вызовы к Encrypted Media Extensions (EME) браузера и расшифровывая все передаваемые ключи контента Widevine — фактически превращая его в DRM с открытым ключом.
Чтобы увидеть эту концепцию в действии, просто загрузите расширение в режиме разработчика и перейдите на любой сайт, воспроизводящий защищённый Widevine контент, например, https://bitmovin.com/demos/drm [Обновление: ссылка не работает?].
Ключи будут выводиться в открытом виде в консоль JavaScript.
например:
WidevineDecryptor: Found key: 100b6c20940f779a4589152b57d2dacb (KID=eb676abbcb345e96bbcf616630f1a3da)
Расшифровка самого медиа — это уже просто вопрос использования инструмента, способного расшифровать потоки MPEG-CENC, например ffmpeg.
например:
ffmpeg -decryption_key 100b6c20940f779a4589152b57d2dacb -i encrypted_media.mp4 -codec copy decrypted_media.mp4
ПРИМЕЧАНИЕ: Расширение в настоящее время поддерживает только платформу Windows.
В контексте браузеров фактическое расшифровывание медиа обычно происходит внутри проприетарного бинарного файла (widevinecdm.dll, известного как Content Decryption Module или CDM) только после получения лицензии от лицензионного сервера с зашифрованным ключом.
Этот бинарный файл обычно сильно обфусцирован и использует сторонние решения, которые якобы обеспечивают «защиту» программного обеспечения, такие как Arxan или Whitecryption.
Затем можно выполнить некоторую работу по реверс-инжинирингу этого бинарного файла, чтобы извлечь секретные ключи и воспроизвести алгоритм расшифровки ключей из ответа лицензии.
Эта PoC была сделана, чтобы ещё раз показать, что обфускация кода, антиотладочные трюки, алгоритмы белого ящика и другие методы безопасности через неясность всё равно в конечном итоге будут побеждены и, в некотором смысле, бессмысленны.
Это НЕ предназначено для нарушения авторских прав или поощрения пиратства.
Это только для образовательных целей. Загрузка материалов, защищённых авторским правом, со стриминговых сервисов может нарушать их Условия предоставления услуг. Используйте на свой страх и риск.