widevine

package
v1.54.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 10, 2022 License: OSL-3.0 Imports: 12 Imported by: 3

README

Widevine

Theatricality and deception, powerful agents to the uninitiated.

But we are initiated, aren’t we, Bruce?

The Dark Knight Rises (2012)

L1

  • Amzn needs AndroidCDM L1 for 720P/1080P/4K
  • Disney+ needs Android L1 for 1080P+
  • NetFlix I think needs L1 for Main Profile & UHD

Where did proto file come from?

https://github.com/TDenisM/widevinedump/tree/main/pywidevine/cdm/formats

Where to download L3 CDM?

https://github.com/Jnzzi/4464_L3-CDM

How to dump L3 CDM?

Install Android Studio. Then create Android virtual device:

API Level ABI Target
24 x86 Android 7.0 (Google APIs)

Then download Widevine Dumper.

Then install:

pip install -r requirements.txt

Then download Frida server, example file:

frida-server-15.1.22-android-x86.xz

Then start Frida server:

adb root
adb push frida-server-15.1.17-android-x86 /data/frida-server
adb shell chmod +x /data/frida-server
adb shell /data/frida-server

Then start Android Chrome and visit Bitmovin demo. If you receive this prompt:

bitmovin.com wants to play protected content. Your device’s identity will be verified by Google.

Click ALLOW. Then start dumper:

python dump_keys.py

Once you see "Hooks completed", go back to Chrome, scroll down and click LOAD. Result:

2022-05-21 02:10:52 PM - Helpers.Scanner - 49 - INFO - Key pairs saved at
key_dumps\Android Emulator 5554/private_keys/4464/2770936375

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func KeyID added in v1.54.0

func KeyID(rawPSSH string) ([]byte, error)

Types

type Container

type Container struct {
	Key  []byte // 3
	Type uint64 // 4
}

func (Container) String

func (c Container) String() string

type Containers

type Containers []Container

func (Containers) Content

func (c Containers) Content() *Container

type Module

type Module struct {
	*rsa.PrivateKey
	// contains filtered or unexported fields
}

func NewModule

func NewModule(privateKey, clientID, kID []byte) (*Module, error)

func (Module) Marshal added in v1.54.1

func (m Module) Marshal() ([]byte, error)

func (Module) Unmarshal added in v1.54.1

func (m Module) Unmarshal(response []byte) (Containers, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL