Giter Site home page Giter Site logo

limangox / keydive Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hyugogirubato/keydive

0.0 0.0 0.0 2.56 MB

Extract Widevine L3 keys from Android devices effortlessly, spanning multiple Android versions for DRM research and education.

License: MIT License

JavaScript 11.53% Python 88.47%

keydive's Introduction

KeyDive: Widevine L3 Extractor for Android

KeyDive is a sophisticated Python script designed for the precise extraction of Widevine L3 DRM (Digital Rights Management) keys from Android devices. This tool leverages the capabilities of the Widevine CDM (Content Decryption Module) to facilitate the recovery of DRM keys, enabling a deeper understanding and analysis of the Widevine L3 DRM implementation across various Android SDK versions.

Important

Support for Android 14+ (SDK > 33) is currently under development. Some features may not function as expected on these newer versions.

Features

  • Automated extraction of Widevine L3 DRM keys.
  • Compatibility with a wide range of Android versions (SDK > 22), ensuring broad applicability.
  • Seamless extraction process, yielding essential DRM components such as the client_id.bin for device identification and the private_key.pem for the RSA private key.

Prerequisites

Before you begin, ensure you have the following prerequisites in place:

  1. ADB (Android Debug Bridge): Make sure to install ADB and include it in your system's PATH environment variable for easy command-line access.
  2. Frida-Server: Install frida-server on your target Android device. This requires root access on the device. For installation instructions and downloads, visit the official Frida documentation.
  3. Python Requirements: KeyDive requires specific Python libraries to function correctly. Install them using the provided requirements.txt file:
    pip install -r requirements.txt

Installation

Follow these steps to set up KeyDive:

  1. Ensure all prerequisites are met (see above).
  2. Clone this repository to your local machine.
  3. Navigate to the cloned directory and install the required Python dependencies as mentioned.

Usage

  1. Play a DRM-protected video on the target device.
  2. Launch the KeyDive script.
  3. Reload the DRM-protected video on your device.
  4. The script will automatically extract the Widevine L3 keys, saving them as follows:
    • client_id.bin - This file contains device identification information.
    • private_key.pem - This file contains the RSA private key.

This sequence ensures that the DRM-protected content is active and ready for key extraction by the time the KeyDive script is initiated, optimizing the extraction process.

Command-Line Options

usage: keydive.py [-h] [--device DEVICE] [--functions FUNCTIONS]

Extract Widevine L3 keys from an Android device.

options:
  -h, --help            show this help message and exit
  --device DEVICE       Target Android device ID.
  --functions FUNCTIONS
                        Ghidra XML functions file.

Extracting Functions for Advanced Usage

For advanced users looking to use custom functions with KeyDive, a comprehensive guide on extracting functions from Widevine libraries using Ghidra is available. Please refer to our Functions Extraction Guide for detailed instructions.

Temporary Disabling L1 for L3 Extraction

Some manufacturers (e.g., Xiaomi) allow the use of L1 keyboxes even after unlocking the bootloader. In such cases, it's necessary to install a Magisk module called liboemcrypto-disabler to temporarily disable L1, thereby facilitating L3 key extraction.

Credits

Special thanks to the original developers and contributors who have made KeyDive possible. This tool is the culmination of collaborative efforts, research, and a deep understanding of DRM technologies.

Disclaimer

KeyDive is intended for educational and research purposes only. The use of this tool in unauthorized testing of protected content is strictly prohibited. Please ensure you have permission before proceeding with DRM key extraction.


By using KeyDive, you acknowledge and agree to the terms of use and disclaimer stated above.

keydive's People

Contributors

hyugogirubato avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.