widevine

package module
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: May 5, 2024 License: OSL-3.0 Imports: 13 Imported by: 1

README

widevine

Theatricality and deception, powerful agents to the uninitiated. But we are initiated, aren’t we, Bruce?

The Dark Knight Rises (2012)

where did proto file come from?

https://github.com/rlaphoenix/pywidevine/blob/master/pywidevine/license_protocol.proto

other interesting files:

WidevineModularDRMSecurityIntegrationGuideforCENC.pdf
Widevine_DRM_Architecture_Overview.pdf

https://github.com/github/dmca/blob/master/2020/11/2020-11-09-Google.md

FoxRefire/wvg

https://github.com/FoxRefire/wvg

hyugogirubato/KeyDive

https://github.com/hyugogirubato/KeyDive

Jnzzi/4464_L3-CDM

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

wvdumper/dumper

install Android Studio. then create Android virtual device:

abi
x86
api level
24
target
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.17-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 Shaka Player. click the green play button. 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:

$env:PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION = 'python'
python dump_keys.py

once you see "Hooks completed", go back to Chrome and click the green play button again. 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 PSSH added in v1.2.7

func PSSH(key_id, content_id []byte) []byte

Types

type CDM added in v1.2.4

type CDM struct {
	// contains filtered or unexported fields
}

func (CDM) Key added in v1.2.4

func (c CDM) Key(post Poster, key_id []byte) ([]byte, error)

func (*CDM) New added in v1.2.4

func (c *CDM) New(private_key, client_id, pssh []byte) error

type Poster

type Poster interface {
	RequestUrl() (string, bool)
	RequestHeader() (http.Header, error)
	WrapRequest([]byte) ([]byte, error)
	UnwrapResponse([]byte) ([]byte, error)
}

Jump to

Keyboard shortcuts

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