~boringcactus/widevine-l3-decryptor

bf2f2685e0a957f4011ee64d0c720a3869580349 — Tomer 1 year, 9 months ago e272063 + a0b47ff
Merge pull request #15 from nyuszika7h/fix-iframes

Fix for pages that use iframes (and some other minor fixes)
3 files changed, 52 insertions(+), 52 deletions(-)

M content_key_decryption.js
M content_script.js
M manifest.json
M content_key_decryption.js => content_key_decryption.js +16 -16
@@ 166,21 166,21 @@ function wordToByteArray(wordArray)
// byte array to CryptoJS format
function arrayToWordArray(u8Array) 
{
	var words = [], i = 0, len = u8Array.length;

	while (i < len) {
		words.push(
			(u8Array[i++] << 24) |
			(u8Array[i++] << 16) |
			(u8Array[i++] << 8)  |
			(u8Array[i++])
		);
	}

	return {
		sigBytes: len,
		words: words
	};
    var words = [], i = 0, len = u8Array.length;

    while (i < len) {
        words.push(
            (u8Array[i++] << 24) |
            (u8Array[i++] << 16) |
            (u8Array[i++] << 8)  |
            (u8Array[i++])
        );
    }

    return {
        sigBytes: len,
        words: words
    };
}

const toHexString = bytes => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');


@@ 209,4 209,4 @@ function PEM2Binary(pem)
    return bytes.buffer;
}

}());
\ No newline at end of file
}());

M content_script.js => content_script.js +14 -14
@@ 2,9 2,9 @@ injectScripts();

async function injectScripts() 
{
	await injectScript('lib/pbf.3.0.5.min.js');
	await injectScript('lib/cryptojs-aes_0.2.0.min.js');
	await injectScript('protobuf-generated/license_protocol.proto.js');
    await injectScript('lib/pbf.3.0.5.min.js');
    await injectScript('lib/cryptojs-aes_0.2.0.min.js');
    await injectScript('protobuf-generated/license_protocol.proto.js');


    await injectScript('content_key_decryption.js');


@@ 13,14 13,14 @@ async function injectScripts()

function injectScript(scriptName) 
{
	return new Promise(function(resolve, reject) 
	{
		var s = document.createElement('script');
		s.src = chrome.extension.getURL(scriptName);
		s.onload = function() {
			this.parentNode.removeChild(this);
			resolve(true);
		};
		(document.head||document.documentElement).appendChild(s);
	});
}
\ No newline at end of file
    return new Promise(function(resolve, reject) 
    {
        var s = document.createElement('script');
        s.src = chrome.extension.getURL(scriptName);
        s.onload = function() {
            this.parentNode.removeChild(this);
            resolve(true);
        };
        (document.head||document.documentElement).appendChild(s);
    });
}

M manifest.json => manifest.json +22 -22
@@ 1,29 1,29 @@
{
  "manifest_version": 2,
  "name": "Widivine Decryptor",
  "name": "Widevine Decryptor",
  "short_name": "WidevineDecryptor",
   "description": "Decrypts and logs media keys from websites that use Widivine DRM",
  "description": "Decrypts and logs media keys from websites that use Widevine DRM",
  "version": "1.0.0",
  "permissions": 
  "permissions":
  [
	

  ],
   "icons": 
   {
      
   },
   "browser_action": {
    
   },
   
   "content_scripts": 
   [
  	{
  	  "matches": ["https://*/*"],
  	  "js": ["content_script.js"],
  "icons":
  {

  },
  "browser_action": {

  },
  "content_scripts":
  [
    {
      "matches": ["https://*/*"],
      "js": ["content_script.js"],
      "css": [],
  	  "run_at": "document_start"
  	}
   ],
	"web_accessible_resources": ["content_key_decryption.js", "eme_interception.js", "lib/*", "protobuf-generated/*"]
}
\ No newline at end of file
      "run_at": "document_start",
      "all_frames": true
    }
  ],
  "web_accessible_resources": ["content_key_decryption.js", "eme_interception.js", "lib/*", "protobuf-generated/*"]
}