Commit Graph

248 Commits

Author SHA1 Message Date
rlaphoenix e1532b1451 Fix optional --vmp argument to create-device command 2022-07-22 19:25:08 +01:00
rlaphoenix e1951d20d0 Update Changelog for v1.1.0 2022-07-21 17:32:14 +01:00
rlaphoenix 35abd2962f Bump to v1.1.0 2022-07-21 17:32:06 +01:00
rlaphoenix b262e115d3 Add ability to use Privacy mode on test command 2022-07-21 17:28:04 +01:00
rlaphoenix 95982725c3 Cdm: Support providing Service Cert as any 3 schemas
Some service's might provide the Service Certificate as a SignedDrmCertificate instead of a SignedMessage so I added support for supplying such format certificates. I also added support for supplying a DrmCertificate directly, though it's unlikely for a service to provide it raw without a signature like that.

The Service Certificate is now also stored as just the DrmCertificate internally, as it will not be using the signature.
2022-07-21 17:26:14 +01:00
rlaphoenix 70e79825b3 Device: Re-use magic reference across Structures 2022-07-21 16:23:19 +01:00
rlaphoenix f2174dfa72 Device: Blank flags on v1 WVDs when migrating
This flag was technically used before this project and to ensure it will be unused and ready for safe use in this project and on v3 (if/when), we should blank the flags.
2022-07-21 16:21:22 +01:00
rlaphoenix fe21bfe88c Fix migrate cmd's error handling, missing ValueError catching 2022-07-21 16:20:22 +01:00
rlaphoenix 93f70f73c2 Device: Fix header structure, should not be a constant 1 2022-07-21 16:19:52 +01:00
rlaphoenix 1442c945cc Move Migration Code to Device.migrate()
Also now more effectively migrates using the v1 Structure data.

Also fixes the migration error of possibly leaving behind VMP data. Will warn you if VMP data is already in the Client ID (if its different).
2022-07-21 16:10:42 +01:00
rlaphoenix a729648a34 Device: Reference Structures class within Device class 2022-07-21 15:49:17 +01:00
rlaphoenix 3d6ddb8dcd Device: Remove explicit deprecated key control flag
This flag was used before this project was made, never after. Therefore I do not need to actually take this flag slot as deprecated from the get-go.
2022-07-21 15:48:45 +01:00
rlaphoenix b41f09bee4 Device: Add v1 Structure for Migration 2022-07-21 15:42:17 +01:00
rlaphoenix db80776ac0 Device: Move the structure under a Structures class 2022-07-21 15:40:46 +01:00
rlaphoenix 02ca1b00c9 Fix year on release dates in Changelog 2022-07-21 14:08:07 +01:00
rlaphoenix 7b06a3c053 Add cmd to migrate older .wvd files to v2 2022-07-21 13:58:41 +01:00
rlaphoenix 14126c67b1 Remove doc-string about non-existent name argument 2022-07-21 13:34:12 +01:00
rlaphoenix 5e93d6321d Add cmd to create a new .wvd device file
It even adds VMP data to the Client ID blob directly (instead of storing possibly duplicated). It will warn you if the Client ID already had VMP data there.

The filename is generated from client id information and has a crc32 checksum to help avoid with conflicts.
The output directory is the current working directory. You can set the directory with -o/--output.
2022-07-21 13:32:13 +01:00
rlaphoenix 1f389dbab9 Device: Fix typo on `type_` in dump() 2022-07-21 13:09:53 +01:00
rlaphoenix ac4c8affb0 deps: Add unidecode 2022-07-21 13:09:33 +01:00
rlaphoenix f34018afe9 Bump to v1.0.1 2022-07-21 01:38:02 +01:00
rlaphoenix 8298703601 Add Changelog 2022-07-21 01:37:25 +01:00
rlaphoenix e20f251aae Cdm: Simplify Session ID
The whole Session ID based on some weird half buggy reverse engineering is completely unnecessary.
2022-07-21 01:33:09 +01:00
rlaphoenix a55aeb8cce docs: Remove outdated comment about Sessions
Sessions are technically implemented in a non-singleton approach, and the issue that provoked this comment has since been fixed (context data <-> license mismatch).
2022-07-21 01:19:10 +01:00
rlaphoenix 23165f92de Cdm: Fix bug where context data may not correspond to the right license
We are using a trick with the request_id to be able to add an identifier between get_license_challenge() and parse_license() without any middleman data needing to be passed by the user.

Otherwise the user would need to either create the context data themselves after get_license_challenge() and pass it to get_license(), or something that is similar at its core to that.
2022-07-21 01:12:28 +01:00
rlaphoenix 68db728bf0 Cdm: Only store license request's context data
This reduces the amount of data needing to be stored, but also simplifies the key derivation.
2022-07-20 22:25:57 +01:00
rlaphoenix 53f7c1dd62 Cdm: Fix size and Improve code of Android Session IDs 2022-07-20 21:40:40 +01:00
rlaphoenix e9e65e5760 Update license cmd to move license type from Cdm to get_license_challenge() 2022-07-20 21:11:01 +01:00
rlaphoenix 909e83c199 Cdm: Return a DecodeError in set_service_certificate
This is to match with the doc-string stating it returns a DecodeError on failure.
2022-07-20 20:55:08 +01:00
rlaphoenix 2bb5c9e0b5 Cdm: Remove unnecessary raw class instance variable 2022-07-20 20:37:04 +01:00
rlaphoenix 7f60844ee1 Cdm: Move License Type from constructor to get_license_challenge() 2022-07-20 20:36:17 +01:00
rlaphoenix 59615dd804 Add more information to poetry in pyproject 2022-07-20 15:03:37 +01:00
rlaphoenix 9aeef343ee Bump to v1.0.0 2022-07-20 14:55:47 +01:00
rlaphoenix 320d57eecf deps: Replace my pymp4 fork with official project 2022-07-20 14:55:07 +01:00
rlaphoenix 72281ece1c Add poetry script for a 'pywidevine' shiv 2022-07-20 14:47:24 +01:00
rlaphoenix 6a9e875e35 Add Test command, uses Bitmovin demo 'Art of Motion' 2022-07-20 14:46:36 +01:00
rlaphoenix 7f4ff5e0f0 Add License command for quick generic licensing 2022-07-20 14:45:28 +01:00
rlaphoenix 2701c7dcd0 Add main CLI function, shows version and homepage 2022-07-20 14:44:20 +01:00
rlaphoenix 36c83268c3 Add Widevine CDM Class
Please note that this CDM implementation isn't inherently secure. For more information see the README about Key and Output Security.

Also adds a utility to get an absolute path to something in the environment PATH, by multiple names, if found.
2022-07-20 14:41:42 +01:00
rlaphoenix 9331f4efc1 Add Widevine Key Class 2022-07-20 14:38:35 +01:00
rlaphoenix 5c9d4cda73 Add Widevine Device (.WVD) Class 2022-07-20 14:37:14 +01:00
rlaphoenix 35ccd2f393 Add PSSH Utility Class 2022-07-20 14:36:20 +01:00
rlaphoenix 681949bb43 Add CI/CD GitHub Workflows 2022-07-20 14:31:43 +01:00
rlaphoenix a62a1f16f7 Add initial pyproject and poetry dependencies 2022-07-20 14:31:08 +01:00
rlaphoenix ba0e89aea3 Add License Protocol Buffer 2022-07-20 14:30:29 +01:00
rlaphoenix 94b0b99912 Add README and Widevine Protocol Overview 2022-07-20 14:29:42 +01:00
rlaphoenix 74b672a670 Add gitignore and license 2022-07-20 14:29:17 +01:00
rlaphoenix f4e2e83ed8 Add GitHub Issue Templates 2022-07-20 14:28:52 +01:00