widevine

package module
v1.4.4 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 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

This section is empty.

Types

type Cdm added in v1.2.6

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

func (Cdm) Decrypt added in v1.4.4

func (c Cdm) Decrypt(license_response, key_id []byte) ([]byte, error)

func (Cdm) Key added in v1.2.6

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

func (*Cdm) New added in v1.4.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)
}

type Pssh added in v1.2.6

type Pssh struct {
	ContentId []byte
	KeyId     []byte
}

func (Pssh) Encode added in v1.4.4

func (p Pssh) Encode() []byte

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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