Added DRM override

This commit is contained in:
TPD94 2025-06-01 17:38:07 -04:00
parent 033bf72151
commit 96c850c878
7 changed files with 186 additions and 4 deletions

View File

@ -67,6 +67,14 @@ chrome.runtime.onInstalled.addListener((details) => {
}
});
chrome.storage.local.set({ drm_override: "DISABLED" }, () => {
if (chrome.runtime.lastError) {
console.error("Error setting DRM Override type:", chrome.runtime.lastError);
} else {
console.log("DRM Override type set to DISABLED on first install.");
}
});
chrome.storage.local.set({ cdrm_instance: null }, () => {
if (chrome.runtime.lastError) {
console.error("Error setting CDRM instance:", chrome.runtime.lastError);

View File

@ -58,4 +58,19 @@ window.addEventListener("message", function(event) {
);
});
}
if (event.data.type === "__GET_DRM_OVERRIDE__") {
console.log("Received request for DRM override");
chrome.storage.local.get("drm_override", (result) => {
const drmOverride = result.drm_override || "DISABLED";
window.postMessage(
{
type: "__DRM_OVERRIDE__",
drmOverride
},
"*"
);
});
}
});

View File

@ -3,12 +3,16 @@ import hamburgerIcon from "../assets/hamburger.svg";
function TopNav({ onMenuClick }) {
const [injectionType, setInjectionType] = useState("LICENSE");
const [drmOverride, setDrmOverride] = useState("LICENSE");
useEffect(() => {
chrome.storage.local.get("injection_type", (result) => {
chrome.storage.local.get(["injection_type", "drm_override"], (result) => {
if (result.injection_type) {
setInjectionType(result.injection_type);
}
if (result.drm_override) {
setDrmOverride(result.drm_override);
}
});
}, []);
@ -26,6 +30,17 @@ function TopNav({ onMenuClick }) {
});
};
const handleDrmOverrideChange = (type) => {
chrome.storage.local.set({ drm_override: type }, () => {
if (chrome.runtime.lastError) {
console.error("Error updating drm_override:", chrome.runtime.lastError);
} else {
setDrmOverride(type);
console.log(`DRM Override updated to ${type}`);
}
});
};
return (
<div className="w-full h-full flex flex-row">
<img
@ -34,6 +49,35 @@ function TopNav({ onMenuClick }) {
className="h-full w-16 p-2 flex items-center cursor-pointer"
onClick={onMenuClick}
/>
<div className="flex flex-row h-full justify-center items-center ml-auto mr-2">
<p className="text-white text-lg p-2 mr-2 border-r-2 border-r-white text-nowrap">
DRM Override:
</p>
<button
onClick={() => handleDrmOverrideChange("WIDEVINE")}
className={`text-white text-lg p-2 rounded-md m-1 cursor-pointer ${
drmOverride === "WIDEVINE" ? "bg-green-500/70" : "bg-black"
}`}
>
Widevine
</button>
<button
onClick={() => handleDrmOverrideChange("PLAYREADY")}
className={`text-white text-lg p-2 rounded-md m-1 cursor-pointer ${
drmOverride === "PLAYREADY" ? "bg-sky-500/70" : "bg-black"
}`}
>
PlayReady
</button>
<button
onClick={() => handleDrmOverrideChange("DISABLED")}
className={`text-white text-lg p-2 rounded-md m-1 cursor-pointer ${
drmOverride === "DISABLED" ? "bg-red-500/70" : "bg-black"
}`}
>
Disabled
</button>
</div>
<div className="flex flex-row h-full justify-center items-center ml-auto mr-2">
<p className="text-white text-lg p-2 mr-2 border-r-2 border-r-white text-nowrap">
Injection Type:

View File

@ -10,6 +10,17 @@ let interceptType = "DISABLED"; // Default to LICENSE, can be changed to 'EME' f
let originalChallenge = null;
let widevineDeviceInfo = null;
let playreadyDeviceInfo = null;
let drmOveride = "DISABLED"
window.postMessage({ type: "__GET_DRM_OVERRIDE__" }, "*");
window.addEventListener("message", function(event) {
if (event.source !== window) return;
if (event.data.type === "__DRM_OVERRIDE__") {
drmOveride = event.data.drmOverride || "DISABLED";
console.log("DRM Override set to:", drmOveride);
}
});
window.postMessage({ type: "__GET_INJECTION_TYPE__" }, "*");
@ -542,7 +553,7 @@ MediaKeySession.prototype.generateRequest = async function(initDataType, initDat
playReadyPssh = getPlayReadyPssh(initData);
playReadyAttempted = !!playReadyPssh;
if (playReadyPssh) {
if (playReadyPssh && drmOveride !== "WIDEVINE") {
console.log("[PlayReady PSSH] Found:", playReadyPssh);
const drmType = {
type: "__DRM_TYPE__",
@ -579,7 +590,7 @@ MediaKeySession.prototype.generateRequest = async function(initDataType, initDat
// === Fallback to Widevine ===
if (!playReadySucceeded) {
widevinePssh = getWidevinePssh(initData);
if (widevinePssh) {
if (widevinePssh && drmOveride !== "PLAYREADY") {
console.log("[Widevine PSSH] Found:", widevinePssh);
const drmType = {
type: "__DRM_TYPE__",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CDRM Decryption Extension</title>
<script type="module" crossorigin src="./assets/index-DwE1Hrng.js"></script>
<script type="module" crossorigin src="./assets/index-BnIE4uKp.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-DyrP80vq.css">
</head>
<body class="min-w-full min-h-full w-full h-full">