36 Commits

Author SHA1 Message Date
Ingan121
98e3745ced Misc 2025-08-31 16:02:49 +09:00
Ingan121
6a876c4348 Handle webm kid duplicate when saving log and use the real webm initData when generating challenge (for consistency with the real WV CDM) 2025-08-31 14:55:59 +09:00
Ingan121
92bca46aee * Implement proper support for 'webm' initDataType instead of relying on previously logged PSSH with same KID
* Still prefer saved logs from same-origin to prevent duplicate entries
* Fix remove individual log button not working with new logs with origin data
2025-08-31 14:38:41 +09:00
Ingan121
1a03a7e484 Use temp storage for logs from incognito windows 2025-08-30 23:58:41 +09:00
Ingan121
721d964c5c Disable persistence for incognito windows 2025-08-30 23:46:04 +09:00
Ingan121
de8ce64157 Fix persistent randomly failing 2025-08-30 23:31:04 +09:00
Ingan121
11637a784f * Fix the collapse button bar in dark mode
* Fix mks.remove() and the session remover in panel UI ignoring the origin
* Misc logic changes
2025-08-30 19:56:39 +09:00
Ingan121
55a910e4fe * Refactor the persistent log saving logic to use one log entry for all sessions associated with a pssh on a specific origin
* Some other misc refactor
* Auto reload all command boxes when changing the command options
* Add origin isolation to prevent cross-origin fingerprinting, etc. with webm-type initData or persistent licenses
  * Logs from different origins can have duplicate entries even if pssh is same
2025-08-30 19:30:45 +09:00
Ingan121
19d14fb28b * Small redesign after the merge
* Fix 'some' coding style inconsistencies (but there are still many)
* Also make the command options collapsible, and save the collapsed state
* Next commit: change the decision of keeping duplicate sessions for persistent sessions
2025-08-30 15:34:10 +09:00
Ingan121
a10eef88bf * Add a separate error viewer popup for long errors
* Block persistentState: required keySystemAccess if persistence is disallowed
* Finish persistent license support
  * Tested on https://biograf-155113.appspot.com/ttt/episode-2/, it's a bit broken so you should put sessionId in IndexedDB manually with the console
2025-08-29 20:22:15 +09:00
Ingan121
7bb893e31e * Some refactor for persistent license support
* Always use the JS-facing sessionId for internal handling (on both WV and PR) for simplicity
  * Replace dirty string-based inter-script communication with JSON one
  * Not tested yet at all due to lack of functional test material
2025-08-28 23:51:14 +09:00
Ingan121
88f743d5a5 * Allow putting device names dynamically in the SuperGeneric API URL field
* Prevent importing invalid device files
* Misc panel UI changes
  * Allow removing site profiles without actually visiting the page
  * Fix special characters in the back of the site scope label going to the front of the label
* Fix encoding and formatting of the exported log JSON files
* Remove unused code
2025-08-26 20:09:35 +09:00
Ingan121
aa1b0ff95e Misc 2025-08-25 20:52:44 +09:00
Ingan121
e262977381 Fix server certificates not being used with "webm" initType in Widevine Remote 2025-08-25 20:48:00 +09:00
Ingan121
4e9e7cf7ba * Add support for forced client ID encryption mode
* One more refactor to remove redundancy
2025-08-25 20:15:11 +09:00
Ingan121
0a69dc3204 * More friendly error messages for remote failures
* Prevent error message showing when a page calls close() on unload
* Add support for server certificates for Widevine remote
2025-08-24 22:56:14 +09:00
Ingan121
ba9d4c6a52 * Better error notification (prevent unnecessary multiple notifs, etc.)
* Add support for overwriting devices
2025-08-23 22:47:08 +09:00
Ingan121
7797ebf6b3 * Update HardcodedDevice to reflect the code change that mandated returning sessionKey 2025-08-23 21:01:56 +09:00
Ingan121
665853f6da * Refactor to use the same device interface when parsing license (attempt to make it survive config changes mid-run)
* Better error handling for the panel
* Fix error message not showing if an empty content key array is returned from the remote server
* Fix PlayReady remote not working with raw pyplayready serve
2025-08-23 20:32:28 +09:00
Ingan121
3e1000227a * Add proper support for pyplayready remote API
* Merge SuperGeneric with the normal remote mode
* Refactor the previous non-generic remote CDM code to use SuperGeneric with generated default API config
* Improve error handling and notification
* Fix removing a remote device of a system messing with the other system's selected remote device
* Log tab titles and use that for generating m3u8dl commands
2025-08-22 23:23:30 +09:00
Ingan121
227d078f78 Add back PlayReady support for SuperGeneric 2025-08-22 17:27:27 +09:00
Ingan121
462dbfb41b * Show more friendly error messages for remote API failures
* Return a Widevine EME disabled on Firefox+Widevine (just like the real message) when WV is blocked
* Refactor SuperGeneric to be more flexible about number of requests
2025-08-18 23:41:30 +09:00
Ingan121
6068a747b1 * Improve panel UI
* Finish SuperGeneric
* Add support for PlayReady remote device (never tested cuz I don't own one)
* Fix ClearKey not working when blockDisabled is enabled
* Notify background script failures
2025-08-17 16:47:57 +09:00
Ingan121
6632b952a0 * Some major refactor
* Improve the custom scope input UI
2025-08-16 17:05:20 +09:00
Ingan121
4912da3def * Fix long domains looking ugly
* Update panel icon more frequently
* Misc security improvements by preventing potential (low possibility?) xss in the panel, and blocking panel only messages sent from the content script
* Tried to add mobile browser support but turns out most of them lacks CK support
  * Added feature to download and import remotely hosted CDM files, for browsers with borked file pickers
2025-08-12 23:52:37 +09:00
Ingan121
ab7a05657e * Completely disable the content script injection when it's globally disabled
* Ignore per-site enabled config if globally disabled
* Show button to reload the current tab after changing the config
* Show active icon in the panel UI if active
2025-08-11 23:36:02 +09:00
Ingan121
0ff4b4638e * Add per-site config
* Completely disable EME hooks when disabled
* Add ClearKey toggle
* Add an option to block disabled key systems (for forcing pages to use a specific key system, without messing with the browser configs/files)
* Panel UI now follows the system/browser dark mode setting
* Show all saved logs
* Add badge text for active status indicator
2025-08-11 04:38:01 +09:00
Ingan121
1d8735395c Fix remote WV CDM 2025-07-21 23:30:43 +09:00
Ingan121
0ec34da0bc * Add proper support for server certificates (only for local WV devices)
* Fix issues with some services that append extra data, which is not a PR WRM initData, to the WV PSSH
2025-07-21 20:39:24 +09:00
Ingan121
d7574957a9 Fix more services 2025-07-17 23:43:11 +09:00
Ingan121
8ea11d8e7b Fix ClearKey webm initData according to the spec (untested still) 2025-07-15 22:19:39 +09:00
Ingan121
42143619f0 * Fix some sites with server certificate usage not working (proper server cert support is not yet done) 2025-07-15 20:00:56 +09:00
Ingan121
5fe27eea28 * Finish the webm initType support
* Add active state indicator
* Prevent polluting the global namespace
2025-07-14 23:21:37 +09:00
Ingan121
5f89a4193c * Fix PRD remove button not working
* Trying to implement the "webm" type initData
  * Didn't fully understand the logic yet and just made it fail for now - which works quite well for triggering fallback
2025-07-07 23:55:18 +09:00
Ingan121
36df571076 * Fix audio/video codec support detection to check for real browser support for them
* Fix logic error when comparing the key system name
* Fix for services that checks all of the availalbe kids in keyStatus
  * Also work around for some services that expect flipped bytes
* Handle cases where a website sends a mixture of WV and PR PSSH
* Add handler for MediaKeySession.close
2025-07-06 20:45:27 +09:00
Ingan121
4aad854427 Initial commit 2025-07-02 21:04:47 +09:00