Update inject.js
This commit is contained in:
parent
a7b58a0a78
commit
b4de9c6d61
17
inject.js
17
inject.js
@ -462,7 +462,7 @@ MediaKeySession.prototype.generateRequest = function(initDataType, initData) {
|
||||
remoteCDM = new remotePlayReadyCDM(security_level, host, secret, device_name)
|
||||
remoteCDM.openSession();
|
||||
}
|
||||
if (remoteCDM) {
|
||||
if (remoteCDM && interceptType === "EME") {
|
||||
remoteCDM.getChallenge(pssh);
|
||||
}
|
||||
if (interceptType === "EME" && remoteCDM) {
|
||||
@ -500,7 +500,7 @@ MediaKeySession.prototype.update = function(response) {
|
||||
remoteCDM.setServiceCertificate(base64Response);
|
||||
}
|
||||
if (!base64Response.startsWith("CAUS") && pssh) {
|
||||
if (licenseResponseCounter === 1 && interceptType === "EME" || interceptType === "EME" && foundChallengeInBody) {
|
||||
if (licenseResponseCounter === 1 || foundChallengeInBody) {
|
||||
remoteCDM.parseLicense(base64Response);
|
||||
remoteCDM.getKeys();
|
||||
remoteCDM.closeSession();
|
||||
@ -509,7 +509,7 @@ MediaKeySession.prototype.update = function(response) {
|
||||
licenseResponseCounter++;
|
||||
}
|
||||
const updatePromise = originalUpdate.call(this, response);
|
||||
if (!pssh) {
|
||||
if (!pssh && interceptType !== "DISABLED") {
|
||||
updatePromise
|
||||
.then(() => {
|
||||
let clearKeys = getClearkey(response);
|
||||
@ -566,15 +566,20 @@ MediaKeySession.prototype.update = function(response) {
|
||||
XMLHttpRequest.prototype.send = function(body) {
|
||||
if (this._method && this._method.toUpperCase() === 'POST') {
|
||||
if (body) {
|
||||
if (body instanceof ArrayBuffer) {
|
||||
const buffer = new Uint8Array(body);
|
||||
if (body instanceof ArrayBuffer || body instanceof Uint8Array) {
|
||||
const buffer = body instanceof Uint8Array ? body : new Uint8Array(body);
|
||||
const base64Body = window.btoa(String.fromCharCode(...buffer));
|
||||
console.log("Converted body " + base64Body);
|
||||
if (base64Body.startsWith("CAES") && base64Body !== remoteCDM.challenge && interceptType === "EME") {
|
||||
foundChallengeInBody = true;
|
||||
// Block the request
|
||||
return;
|
||||
}
|
||||
if (base64Body.startsWith("CAES") && interceptType == "LICENSE") {
|
||||
foundChallengeInBody = true;
|
||||
remoteCDM.getChallenge(pssh)
|
||||
const injectedBody = base64ToUint8Array(remoteCDM.challenge);
|
||||
return originalSend.call(this, injectedBody);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user