From edbe7b4b06c80ce9e6c36e0748737de7ab6b2d1d Mon Sep 17 00:00:00 2001 From: XMYSTERlOUSX <73080587+XMYSTERlOUSX@users.noreply.github.com> Date: Mon, 3 Oct 2022 18:09:49 +0530 Subject: [PATCH] Chrome Extensions! --- Aha Capture/background.js | 128 ++++++++++++++++++++++++++ Aha Capture/icon128.png | Bin 0 -> 5630 bytes Aha Capture/manifest.json | 11 +++ Altbalaji Capture/background.js | 130 +++++++++++++++++++++++++++ Altbalaji Capture/icon128.png | Bin 0 -> 8068 bytes Altbalaji Capture/manifest.json | 11 +++ Clearkey Capture/background.js | 60 +++++++++++++ Clearkey Capture/content-script.js | 21 +++++ Clearkey Capture/eme-logger-mod.js | 30 +++++++ Clearkey Capture/icon128.png | Bin 0 -> 18603 bytes Clearkey Capture/manifest.json | 34 +++++++ Jio Capture/background.js | 124 +++++++++++++++++++++++++ Jio Capture/icon128.png | Bin 0 -> 13004 bytes Jio Capture/manifest.json | 11 +++ Learnyst Capture/background.js | 122 +++++++++++++++++++++++++ Learnyst Capture/clear_storage.js | 7 ++ Learnyst Capture/icon128.png | Bin 0 -> 10654 bytes Learnyst Capture/manifest.json | 11 +++ Mystry Capture/background.js | 130 +++++++++++++++++++++++++++ Mystry Capture/icon128.png | Bin 0 -> 5787 bytes Mystry Capture/manifest.json | 11 +++ PSSH Capture/background.js | 140 +++++++++++++++++++++++++++++ PSSH Capture/content-script.js | 21 +++++ PSSH Capture/eme-logger-mod.js | 25 ++++++ PSSH Capture/icon.png | Bin 0 -> 145484 bytes PSSH Capture/icon128.png | Bin 0 -> 7436 bytes PSSH Capture/manifest.json | 35 ++++++++ Voot Capture/background.js | 124 +++++++++++++++++++++++++ Voot Capture/icon128.png | Bin 0 -> 6939 bytes Voot Capture/manifest.json | 11 +++ Zee5 Capture/background.js | 102 +++++++++++++++++++++ Zee5 Capture/icon128.png | Bin 0 -> 14886 bytes Zee5 Capture/manifest.json | 11 +++ 33 files changed, 1310 insertions(+) create mode 100644 Aha Capture/background.js create mode 100644 Aha Capture/icon128.png create mode 100644 Aha Capture/manifest.json create mode 100644 Altbalaji Capture/background.js create mode 100644 Altbalaji Capture/icon128.png create mode 100644 Altbalaji Capture/manifest.json create mode 100644 Clearkey Capture/background.js create mode 100644 Clearkey Capture/content-script.js create mode 100644 Clearkey Capture/eme-logger-mod.js create mode 100644 Clearkey Capture/icon128.png create mode 100644 Clearkey Capture/manifest.json create mode 100644 Jio Capture/background.js create mode 100644 Jio Capture/icon128.png create mode 100644 Jio Capture/manifest.json create mode 100644 Learnyst Capture/background.js create mode 100644 Learnyst Capture/clear_storage.js create mode 100644 Learnyst Capture/icon128.png create mode 100644 Learnyst Capture/manifest.json create mode 100644 Mystry Capture/background.js create mode 100644 Mystry Capture/icon128.png create mode 100644 Mystry Capture/manifest.json create mode 100644 PSSH Capture/background.js create mode 100644 PSSH Capture/content-script.js create mode 100644 PSSH Capture/eme-logger-mod.js create mode 100644 PSSH Capture/icon.png create mode 100644 PSSH Capture/icon128.png create mode 100644 PSSH Capture/manifest.json create mode 100644 Voot Capture/background.js create mode 100644 Voot Capture/icon128.png create mode 100644 Voot Capture/manifest.json create mode 100644 Zee5 Capture/background.js create mode 100644 Zee5 Capture/icon128.png create mode 100644 Zee5 Capture/manifest.json diff --git a/Aha Capture/background.js b/Aha Capture/background.js new file mode 100644 index 0000000..2748ebb --- /dev/null +++ b/Aha Capture/background.js @@ -0,0 +1,128 @@ +const tabIDs = {}; +const textDecoder = new TextDecoder(); + +function requestToClipboard(tabId) { + chrome.tabs.get(tabId, (details) => { + const lic_headers = tabIDs[details.id].license_request[0]?.license_headers; + const lic_url = tabIDs[details.id].license_url; + const lic_data_json = tabIDs[details.id].license_data; + const mpd_link = tabIDs[details.id].mpd_url; + const video_link = tabIDs[details.id].player_url; + if (!lic_headers) + return; + + // Fetching the user's ip for setting the header X-Forwarded-For. + // This might help to bypass regional restrictions when performing the license request in some cases. + + const ip_retrieve_link = "https://ipinfo.io/ip"; + + var get_ip = new XMLHttpRequest(); + get_ip.open('GET', ip_retrieve_link, true); + get_ip.onload = function () { + var ip_resposnse = this.responseText; + console.log(ip_resposnse); + + var i = 0; + let curl_license_data = "curl "; + curl_license_data += `'${lic_url}' \\`; + for (; i < lic_headers.length; ++i) + curl_license_data += `\n -H '${lic_headers[i].name.toLowerCase()}: ${lic_headers[i].value}' \\`; + curl_license_data += `\n -H 'x-forwarded-for: ${ip_resposnse}' \\`; + curl_license_data += "\n --data-raw "; + + if (lic_data_json.includes("u0008")) { + curl_license_data += `${lic_data_json} \\`; + } else { + curl_license_data += `'${lic_data_json}' \\`; /* It is not the same as above line. Note the additional ' symbol at the start and end! */ + } + + curl_license_data += "\n --compressed"; + + // Generating the curl license text link for https://t.me/drm_downloader_robot + const aha_gen_link = "https://drm-bot.herokuapp.com/aha.php"; + var data = new FormData(); + data.append('playlist', curl_license_data); + data.append('api', 'api'); + + var gen_link = new XMLHttpRequest(); + gen_link.open('POST', aha_gen_link, true); + gen_link.onload = function () { + var gen_link_resposnse = this.responseText; + let json_resp = JSON.parse(gen_link_resposnse); + console.log(json_resp); + let generated_license_link = json_resp.data; + + const final = `${video_link}*${mpd_link}*${generated_license_link}`; + console.log(final); + + const copyText = document.createElement("textarea"); + copyText.style.position = "absolute"; + copyText.style.left = "-5454px"; + copyText.style.top = "-5454px"; + copyText.style.opacity = 0; + document.body.appendChild(copyText); + copyText.value = final; + copyText.select(); + document.execCommand("copy"); + document.body.removeChild(copyText); + + chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000", tabId: details.id}); + chrome.browserAction.setBadgeText({text: "📋", tabId: details.id}); + alert("The aha link and the mpd link and the generated link of widevine license curl data has been copied to your clipboard successfully!\n\nNow go to https://t.me/drm_downloader_robot and paste it and send it to the bot."); + + } + gen_link.send(data); + } + get_ip.send(); + }); +} + +function getLicenseRequestData(details) { + if (details.url.includes(".mpd")) { + console.log(details.url); + tabIDs[details.tabId].mpd_url = details.url; + } else if (details.requestBody && details.requestBody.raw && details.method == "POST") { + for (var j = 0; j < details.requestBody.raw.length; ++j) { + try { + const decodedString = textDecoder.decode(details.requestBody.raw[j].bytes); + const encodedString = btoa(unescape(encodeURIComponent(decodedString))); + + // If the license request does not uses json payloads the data has been sent in raw format. + // But the base64 encoded format of it will have the characters "CAES". + if (encodedString.includes("CAES")) { + tabIDs[details.tabId].license_data = `$'\\u0008\\u0004'` + tabIDs[details.tabId].license_url = details.url + tabIDs[details.tabId].req_id = details.requestId + } else { + return; + } + } catch (e) { + console.error(e); + } + } + } +} +chrome.webRequest.onBeforeRequest.addListener( + getLicenseRequestData, + { urls: ["https://streaming-vod-aha.akamaized.net/*", "https://widevine-proxy.api.aha.firstlight.ai/*"], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +function getLicenseRequestHeaders(details) { + if (details.method == "POST" && tabIDs[details.tabId] && tabIDs[details.tabId].license_url === details.url && tabIDs[details.tabId].req_id === details.requestId) { + console.log(details.url); + tabIDs[details.tabId].license_request.push({license_headers: details.requestHeaders}); + requestToClipboard(details.tabId); + } +} +chrome.webRequest.onBeforeSendHeaders.addListener( + getLicenseRequestHeaders, + { urls: ["https://widevine-proxy.api.aha.firstlight.ai/*"], types: ["xmlhttprequest"] }, + ["requestHeaders"] +); + +chrome?.tabs?.onUpdated?.addListener((tabId, changeInfo, tab) => { + if (tab.url.includes("https://www.aha.video/player/")) { + tabIDs[tabId] = {license_data: "", license_request: [], license_url: "", req_id: "", mpd_url: "", player_url: tab.url}; + } +}); \ No newline at end of file diff --git a/Aha Capture/icon128.png b/Aha Capture/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4a677ec43ba3cc0919de00a8e29c9e32774703 GIT binary patch literal 5630 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 P3jj?uJ=IEOblCp@q32HB literal 0 HcmV?d00001 diff --git a/Aha Capture/manifest.json b/Aha Capture/manifest.json new file mode 100644 index 0000000..b34a0c9 --- /dev/null +++ b/Aha Capture/manifest.json @@ -0,0 +1,11 @@ +{ + "background": { + "persistent": true, + "scripts": [ "background.js" ] + }, + "manifest_version": 2, + "name": "Aha Capture", + "browser_action": {"default_icon": "icon128.png"}, + "permissions": [ "activeTab", "webRequest", "https://www.aha.video/*", "https://streaming-vod-aha.akamaized.net/*", "https://widevine-proxy.api.aha.firstlight.ai/*", "https://drm-bot.herokuapp.com/", "tabs", "clipboardWrite", "storage" ], + "version": "2.0" +} \ No newline at end of file diff --git a/Altbalaji Capture/background.js b/Altbalaji Capture/background.js new file mode 100644 index 0000000..d2febc4 --- /dev/null +++ b/Altbalaji Capture/background.js @@ -0,0 +1,130 @@ +const tabIDs = {}; +const textDecoder = new TextDecoder(); + +function requestToClipboard(tabId) { + chrome.tabs.get(tabId, (details) => { + const lic_headers = tabIDs[details.id].license_request[0]?.license_headers; + const lic_url = tabIDs[details.id].license_url; + const lic_data_json = tabIDs[details.id].license_data; + const mpd_link = tabIDs[details.id].mpd_url; + const video_link = tabIDs[details.id].video_metadata_url; + if (!lic_headers) + return; + + // Fetching the user's ip for setting the header X-Forwarded-For. + // This might help to bypass regional restrictions when performing the license request in some cases. + + const ip_retrieve_link = "https://ipinfo.io/ip"; + + var get_ip = new XMLHttpRequest(); + get_ip.open('GET', ip_retrieve_link, true); + get_ip.onload = function () { + var ip_resposnse = this.responseText; + console.log(ip_resposnse); + + var i = 0; + let curl_license_data = "curl "; + curl_license_data += `'${lic_url}' \\`; + for (; i < lic_headers.length; ++i) + curl_license_data += `\n -H '${lic_headers[i].name.toLowerCase()}: ${lic_headers[i].value}' \\`; + curl_license_data += `\n -H 'x-forwarded-for: ${ip_resposnse}' \\`; + curl_license_data += "\n --data-raw "; + + if (lic_data_json.includes("u0008")) { + curl_license_data += `${lic_data_json} \\`; + } else { + curl_license_data += `'${lic_data_json}' \\`; /* It is not the same as above line. Note the additional ' symbol at the start and end! */ + } + + curl_license_data += "\n --compressed"; + + // Generating the curl license text link for https://t.me/drm_downloader_robot + const alt_gen_link = "https://drm-bot.herokuapp.com/alt.php"; + var data = new FormData(); + data.append('playlist', curl_license_data); + data.append('api', 'api'); + + var gen_link = new XMLHttpRequest(); + gen_link.open('POST', alt_gen_link, true); + gen_link.onload = function () { + var gen_link_resposnse = this.responseText; + let json_resp = JSON.parse(gen_link_resposnse); + console.log(json_resp); + let generated_license_link = json_resp.data; + + const final = `${video_link}*${mpd_link}*${generated_license_link}`; + console.log(final); + + const copyText = document.createElement("textarea"); + copyText.style.position = "absolute"; + copyText.style.left = "-5454px"; + copyText.style.top = "-5454px"; + copyText.style.opacity = 0; + document.body.appendChild(copyText); + copyText.value = final; + copyText.select(); + document.execCommand("copy"); + document.body.removeChild(copyText); + + chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000", tabId: details.id}); + chrome.browserAction.setBadgeText({text: "📋", tabId: details.id}); + alert("The altbalaji link and the mpd link and the generated link of widevine license curl data has been copied to your clipboard successfully!\n\nNow go to https://t.me/drm_downloader_robot and paste it and send it to the bot.\n\nIf you need to play this video on the site please remember to disable this extension and reload the page."); + + } + gen_link.send(data); + } + get_ip.send(); + }); +} + +function getLicenseRequestData(details) { + tabIDs[details.tabId] = tabIDs[details.tabId] || {}; + if (details.url.includes(".mpd")) { + console.log(details.url); + tabIDs[details.tabId].mpd_url = details.url; + } else if (details.url.includes("videos")) { + console.log(details.url); + tabIDs[details.tabId].video_metadata_url = details.url; + } else if (details.requestBody && details.requestBody.raw && details.method == "POST") { + for (var j = 0; j < details.requestBody.raw.length; ++j) { + try { + const decodedString = textDecoder.decode(details.requestBody.raw[j].bytes); + const encodedString = btoa(unescape(encodeURIComponent(decodedString))); + + // If the license request does not uses json payloads the data has been sent in raw format. + // But the base64 encoded format of it will have the characters "CAES". + if (encodedString.includes("CAES")) { + tabIDs[details.tabId] = {license_data: `$'\\u0008\\u0004'`, license_request: [], license_url: details.url, req_id: details.requestId, mpd_url: tabIDs[details.tabId].mpd_url ?? "", video_metadata_url: tabIDs[details.tabId].video_metadata_url ?? ""}; + + // If the license request uses json payloads the charcters "CAES" will be there in almost all cases. + } else if (decodedString.includes("CAES") || details.url.includes("license") && decodedString.includes("token") && decodedString.length > 4000 || decodedString.includes("8, 1, 18")) { + tabIDs[details.tabId] = {license_data: decodedString, license_request: [], license_url: details.url, req_id: details.requestId, mpd_url: tabIDs[details.tabId].mpd_url ?? "", video_metadata_url: tabIDs[details.tabId].video_metadata_url ?? ""}; + } else { + return; + } + } catch (e) { + console.error(e); + } + } + } +} +chrome.webRequest.onBeforeRequest.addListener( + getLicenseRequestData, + { urls: ["https://api.cloud.altbalaji.com/media/videos/*", "https://cdn.cloud.altbalaji.com/*", "https://api.cloud.altbalaji.com/player/drm/widevine-modular"], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +function getLicenseRequestHeaders(details) { + if (details.method == "POST" && tabIDs[details.tabId] && tabIDs[details.tabId].license_url === details.url && tabIDs[details.tabId].req_id === details.requestId) { + console.log(details.url); + tabIDs[details.tabId].license_request.push({license_headers: details.requestHeaders}); + requestToClipboard(details.tabId); + + return { cancel: true }; /* This license request holds an one time token values in the payload. So blocking it before it is sent to the server and capturing them! */ + } +} +chrome.webRequest.onBeforeSendHeaders.addListener( + getLicenseRequestHeaders, + { urls: ["https://api.cloud.altbalaji.com/player/drm/widevine-modular"], types: ["xmlhttprequest"] }, + ["requestHeaders", "blocking"] +); \ No newline at end of file diff --git a/Altbalaji Capture/icon128.png b/Altbalaji Capture/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..1c346c819aabdccda57d5b4cbef15e401a7b42d4 GIT binary patch literal 8068 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"], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { + if (!request || !sender.tab) + return; + tabIDs[9999] = tabIDs[9999] || {}; + if (tabIDs[9999].clearkey_data === "") { + tabIDs[9999].clearkey_data = request; + console.log(`CLEARKEY DATA:- ${tabIDs[9999].clearkey_data}`); + requestToClipboard(9999, sender.tab.id); + } +}); \ No newline at end of file diff --git a/Clearkey Capture/content-script.js b/Clearkey Capture/content-script.js new file mode 100644 index 0000000..7c7de53 --- /dev/null +++ b/Clearkey Capture/content-script.js @@ -0,0 +1,21 @@ +(() => { + "use strict"; + + window.addEventListener("message", (event) => { + if (event.source != window) + return; + + if (event.data.type && event.data.type === "38405bbb-36ef-454d-8b32-346f9564c979") { + if (event.data.log) + chrome.runtime.sendMessage(event.data.log); + } + }, false); + + const script = document.createElement("script"); + script.type = "text/javascript"; + script.defer = false; + script.async = false; + script.src = chrome.extension.getURL("/eme-logger-mod.js"); + (document.head || document.documentElement).appendChild(script); + script.remove(); +})(); \ No newline at end of file diff --git a/Clearkey Capture/eme-logger-mod.js b/Clearkey Capture/eme-logger-mod.js new file mode 100644 index 0000000..4555323 --- /dev/null +++ b/Clearkey Capture/eme-logger-mod.js @@ -0,0 +1,30 @@ +(async () => { + const b64 = { + decode: s => Uint8Array.from(atob(s), c => c.charCodeAt(0)), + encode: b => btoa(String.fromCharCode(...new Uint8Array(b))) + }; + + const fnproxy = (object, func) => new Proxy(object, { apply: func }); + + const proxy = (object, key, func) => Object.defineProperty(object, key, { + value: fnproxy(object[key], func) + }); + + proxy(MediaKeySession.prototype, 'update', async (_target, _this, _args) => { + const [response] = _args; + const resp = b64.encode(response) + if (resp) { + if (resp.startsWith("eyJ")) { + console.groupCollapsed( + `[EME] MediaKeySession::update\n` + + ` Session ID: ${_this.sessionId || '(not available)'}\n` + + ` Clearkeys Response: ${resp}` + ); + window.postMessage({ type: "38405bbb-36ef-454d-8b32-346f9564c979", log: resp }, "*"); + } + } + console.trace(); + console.groupEnd(); + return _target.apply(_this, _args); + }); +})(); \ No newline at end of file diff --git a/Clearkey Capture/icon128.png b/Clearkey Capture/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..9f510f0015c4c28a4ae10a1de0e45fb5150dc4a2 GIT binary patch literal 18603 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 iR539+GB7$YF)J`IIxsLAn6zgA0000 {chrome.browserAction.setBadgeText({text: "", tabId: tabId});}, 20000); + + } + gen_link.send(data); + } + get_ip.send(); +} + +function getLicenseRequestData(details) { + tabIDs[details.tabId] = tabIDs[details.tabId] || {}; + if (details.url.includes("playbackrights") && details.method == "POST") { + console.log(details.url); + tabIDs[details.tabId].video_metadata_url = details.url; + } else if (details.requestBody && details.requestBody.raw && details.method == "POST") { + for (var j = 0; j < details.requestBody.raw.length; ++j) { + try { + const decodedString = textDecoder.decode(details.requestBody.raw[j].bytes); + const encodedString = btoa(unescape(encodeURIComponent(decodedString))); + + // If the license request does not uses json payloads the data has been sent in raw format. + // But the base64 encoded format of it will have the characters "CAES". + if (encodedString.includes("CAES")) { + tabIDs[details.tabId] = {license_data: `$'\\u0008\\u0004'`, license_request: [], license_url: details.url, req_id: details.requestId, video_metadata_url: tabIDs[details.tabId].video_metadata_url ?? ""}; + + // If the license request uses json payloads the charcters "CAES" will be there in almost all cases. + } else if (decodedString.includes("CAES") || details.url.includes("license") && decodedString.includes("token") && decodedString.length > 4000 || decodedString.includes("8, 1, 18")) { + tabIDs[details.tabId] = {license_data: decodedString, license_request: [], license_url: details.url, req_id: details.requestId, video_metadata_url: tabIDs[details.tabId].video_metadata_url ?? ""}; + } else { + return; + } + } catch (e) { + console.error(e); + } + } + } +} +chrome.webRequest.onBeforeRequest.addListener( + getLicenseRequestData, + { urls: ["https://prod.media.jio.com/apis/common/v3/playbackrights/*", "https://prod.media.jio.com/proxy*"], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +function getLicenseRequestHeaders(details) { + if (details.method == "POST" && tabIDs[details.tabId] && tabIDs[details.tabId].license_url === details.url && tabIDs[details.tabId].req_id === details.requestId) { + console.log(details.url); + tabIDs[details.tabId].license_request.push({license_headers: details.requestHeaders}); + console.log(tabIDs) + requestToClipboard(details.tabId); + } +} +chrome.webRequest.onBeforeSendHeaders.addListener( + getLicenseRequestHeaders, + { urls: ["https://prod.media.jio.com/proxy*"], types: ["xmlhttprequest"] }, + ["requestHeaders"] +); \ No newline at end of file diff --git a/Jio Capture/icon128.png b/Jio Capture/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1bc84b7f3abecf22d38783f84ef19de9b649ac GIT binary patch literal 13004 zcmV;-GBeGIP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rh2n!7gJE(*V0ssIp&`Cr=RCwC$ooTdXM|GIL zU3KpC=GXHiTHQ#vHGza=OISi!l7m3Pn88M1JCO+ru`Tclw#f=M!HP{5YlS!{0@=X^ z78r;jCYFg2LmVSOvyqH7H7$f%qNSdvH{a=0?fj^7&OP_O`^J7l%Vuj`^?mQvIaRf5 z*RDO6@B)M<-|_pzq7=QQq=upjJ&|xIu2-Cu^<|)MWTA16zmR+SuaYT zIA1ireWEJhL{S0j1)uva3X0+ZFQIJ$4Pe43N3HUVqE9&Cd*1U{!4#i$jExyBBN(iP z@vi&q2UZ(x^Mccw03NyV_n0DPgD+FGMV?$YB`>WGZjpN9;u`){#O|`l%h?85>qU*A z6vU#|goSk;?J`N7sY3-+F$yNvNT7`xIqA%O3`?RS_`$BRpY{GeH_yr|rFt%aM5 zUal-Tib9N+?1azGTtrdPfK*+E-Os{^L1}S-X-L)ZO;nN@kaDd?Z1@i7?dzua#%M{Z zUJQaV{P~qvBUh9F{^9K(;6>#U2WxfSd*nX(<29GP!g}+blA7xZ#`MG%ton@2Dy^NB z30}1Cwr=d#bO>>f2yh(}&-b%fNQt2B-N`ru@p?#zRxproHS3wOp07G19~nB-bN|7u zQ+i;?vi-PY{R+wlD?$JYJb2@OBv!{7Tc9Cq9dL4UkLMkc>ISEZNQ8*T;IQ7J1RXuU za3)6p8DVq~fGF6c)BN8$3BY8F)c(H3%q>p<>EZ{DC3rj}$ChXy0L=~v@FGX*RzBr~ zj}@Hm7jFk!0J^(;mFv{`6+Xyg{B+l)Kf`K7>OuA>%VCCp!ZrmnVrpL`dHMX<_4 zqVhqneP6+jy4ZM1v0>fk|I@Or&$1H0ov(W*Bh4DG*m4#VzOlK_l-_G&cT-V)zmVwM zBFSR-1dD>vRPQ!3O5ZcVe0KGmL~@DA^gIVpfi1gDlR{epu`r!?uJCUQ(F9hlrF z`I`z>6{CJ@GxE0$JNaPQn<2!2QBJ(=50-X_OZB49zvf&%M>S%< zXf%4SQ}?{OCf-JDTq5CcNjSilfBq(Z`SFkQ{gV$c5;t~j)Z%CQRo-g7idV&WMI5LG z2aUFzu3gqRZ(H@b&kGH-HMcGwZTnfKJ&J-&O$e%Q^*;U#o?TWA$712gFaGY5jPjH@ zz#XrD2fzK$o!oKF+nKQP(v80Kr~R?NG*97*pqjEhpLy<52n-@+{gV79S@@ik{7)C= ztCY%v#`$+TZ69Ix-`&P>SAFS=;^6pzXzjMKV3|%3h=s`h#)eC!66pam=|JTAbghd?z zKQ*w8BPULBygI&ZhcDhf)HIi>7`(~vTyhJYTU0fK9p2gXKZl*ZL=aGPsi3!u>Ne|z z$Se+L3nqXs-|+7km6*v!eP~Bz=)(ivTy0RiwDj58M%@zf3_o7%Qv)wtt;mPHnjux? z=vx;ah`J!`f9d+0&`OyH&3NJMX4?nXVBTxJO0ZxB1CMEQjC2dh?38$aOaP0AEb`#P zD*Aror6~$)7jP8Jn*-c-fOK% z3I}7OZ2RJWp7R+ySA&mV_6xXj#NQlw(!OTs%v*+~aDx%>Msq^`OjBKon41>>2&i-q zQ0;~pqYxJi(WU25y6iln^IuGTO&|5q38HEX*}X|c_{a| zSM-ea4F2-96xOam1^Sy!s*mku^e_IF((^~B#Xc?oZmQJzwne_Yu3nk5@vKL{=U?-y z^xGb4&TTzsaQ$DebLNsrT@tjAaDeQL*EwGO!lD#SrsU8pBS?&aLIkBUrl$-8WeP+6 znDxUHqlk&S{}DYtmd!j6L7<41_#-$G3a`18bvM2iwFc1;10cZIJr7g;^w)`|8o_bq zbxtnOE_Mm1K4d&^5ZE87Vd##Tt%NgjfcKyO)10hV`Q`6^TJFB?z3&=!=8}?AoC&_X zfF-hB&;^C7y@p+pG~ZDfub6>8;umkg4);L=il7x$uFWAZC=3(L|4coqbdAr>pczYlG(gKf;2Sw zUn-O(XZ3u*8%yQYKSkf`FT)ffY*fIT^rh)0FnAQB%GB;>iO0usG3f!d(*jx56Rq!~ z_~H%8d&2)E$v>06GHe{g?S2kxXBW}(;qRTH@{LH|F;%F41>`<)GZRr)JHY!cehml4 zPVmtFrz`7B@jd-cHwYeYbXs`zX#twV8Tycf8H=GAMfjc)Zv7B$$7amMXTi=*^Uf#H z{tD*8otWMpBr2lDAQ%kcUr8dCEC#LC82{luVrfM$=bTPUv?OzH|~)mn$=8q2L8vZxQV&BZECeLwyv6hbXKc#;ob5G|&s{2GQOUg$Ty};+yE+ zgCWmww#E0J#m?29%M^;EFs5=0gsMS)P0 z02B|zC&!q4_7EjZcbT>Aj*daoF_(?XE3k75 z<%?c|DOX5ety#PQ7@r751{%*Ep>SXfV}x0g%N6LU&~w4rU~F!WhBLaI@d;XQpu6|c zABP$RvoS^o=*~@nE8($SPhiCi_u?x>s5d(_h}OBEU;NoX;Yx(p0$)^}&hXoQ^Iu-^ zdcO43LyVZX|JrENO}$Qw&IFckP&5-~rR`js*W!DRvx06J!mk^kFg!$Q-C7F6z1ZOa zbo~Gv9cBFEUxxZ5GM9TZiWu0n11%TuNf3!7%6FQV7rqGU9kt!hP?)HKokejWF}!RX zrm%Hm60X|r!RTDF#<5WvKRO)Tu_+a1SZWsl)mn<@oQYH_A@@PDJ>T|BVW1D&TSiAF zGFxiCMnOJTVm2qb55b2;g_}g>tAZPU{!JfX+h4VuMQsG|>VX}YzCI>g9&Na@Il?jKaDB`hNCedR}opvUUJdETNIjSYRDxZ0|mr6O$C@c)jsTeQh81 zyfaDT2PI+DnsBJ}n+F;bQ#AMN3*O3^-kFRwHlXKhMutl1=(7k#5;i z)H)*7RMqG@W`-*Czhv9Ac&E(a~1G^urr?7DifgFQuo*q-0OEdEr{Jvwb?^sy8^bE}%1TD#3kW!KUb9P_~ zQTC2}0Ix`HEU}~Uk9&z~O^o%4z}8)Qk4153t|8hojNtJyvx+B`B6g^crnK;wuD&eH zJ&;0Kgw>5pHlnVTp#fvBRM43a8=3qmqlJV z`sP+3X+{8tCq}sF<*z5Il-_78>m)Ovgtv+B)``qIfRNq=Dyl*ggPye& z)(+uSvTP-CZ){6r_~Cv^2S!sb_ATaX*+-M@c-O+Vb8kjtr%33ozk62(F*WL z8GZLwHfTF&CY+_}4?r9Y7tT}N{UZw1I7qz^1W#}9Ca_iy!SCRO;u#x=wyh(^=S(u) zM^HU{jOM|k^djxWpSlIE*oewG+wr9+x8yT`cQha0i>uX`EG9mJo)W&NfF0_?4)hWY z_7SZc#H<^{u3tmptZnn~(+fH|Mg8#cB!N_M(h|BC7E&>-@%6^q|BiAv9Y+N4+1K90 zj^1I$edDJGo$RtkGxpOOY^SW6kmxKU5{1Zt8=pd*N1{|LYq?7VgFikAPaeX0K}~u# zYunkJepI0J6EDIK^mKU4rU$2}Kx5B7N+&0=BB%n*1}L1hjaZ;g8KksvEq16E+gBp$>&28xNMyj8dAQfWP{KKmb*3a`A~T$m4x)xxTCvHIbGz!;o}&U5e+qJyr3@ zB)-waL?!Zylwj}}s?Q$AA09<)g!njF^`LeJt5-|9H{}wQbGB0yo9w3Uvakxo^(Kw) z@54HeH-y4cC^kJ>BovY~YA`YQotr6bT0=9J#Ww?aA;kh~Uv~v!BaGM%rrsXwC`=E$ zXn&tan~uilBohxlLG?@bP@bxV%^)cOq&XC)V1N^fz;y-Z?{Fq;tq5S9_VA^`Yqyjr zT;Yu%xFBt6e&~yf*;gZQVjMqNLwm}A&B@h*SI^`V&mvRJAi?MC>8*s(;KXsNm^0Q= zJaa>Gh|F=09vQ(sbqL!a+XCK1_;L~LE7KS#V21iB4zIxs576`So%l*bq@gNV${f0Z z6@xK_j9az1Ma#CI!vg9(G-6z>ft#qp$OQ3;G5p9V^^sBHgCoeHQFQ+iij5eba|GpO zoUDlD;={+Th>hI>x*s6=!%ME?j7mQfasA>5+2P1%u9_K?(6p!lGmk*w@CMyLJyWkB$=e^}xmJuxolT z>-#CL9l#C^QCK^G4wi{}%9tpy>%ed|v$oCFfrzw4?f?+SXtRNzYT(A|xbZ36$r0ki z$8jenXdWLY9+`mgDWdTjzR^Iu!^9q9MZ{ojuw;5|Z8%X+C$H1_2K}`WA&BS>uUsr5 z`w#ux?-7kQYFu*Vzv1ui`S_~}o}#M5C2Uu+6;8$a1@+g8kDIK~JUL2n`}*KWO08x< z{QNPB2To$rlR<1oB%07&8XG62B0cAwg^LQAL_QNAa6svtGuZsQzl7;22l>M!z6Ps^Lc`XpTrg%?(E16c6C|HYN0g5U`kXMN`{|^+1&fBn!Kl%C}47{Re z(`A9uAlOUO!JQ%qP;cOlj^H&p)4d7NH3GFg`!JJLRO2L25@IW8WHHuY3I(LMj34Zw zuyqrKmu$x~cQB&`Y^4O1QuaHqzJ<_i_jZX~ial;>inuz3ADKi?RH=`S;!cj?k4_Mu z7{#3&#f(j%lQksv*w`cLiO}FZR70c|V-n@X2Ew=5%B4o5ZYrTiGR-Pqa%!nOuyUF6 z#Q}t|Xj7>Vhd;C5adsr3E>8&a>NMA!LU+#Nj*p|Ncq3W)hkCWj;pd*GZ?H_EuLJ`X zWT+3jVUW^>VTwZon6>@b;Q^#l3NF-Qp-cIQZr-=);-QgbUh2@;p|zNJqDnkAfjcot ze0+@N$Qb_UD0+OH=EN8>R>O|f(Pk68$BM;>V#Q%n&ZH&;bV%ahN85NWhl;?#$o7z?EJp;8&w)7$AeMB zB$Yt~jJ2%4_A+{|y8<)RgYBtcN)b|sKw7besbNHfV9vdY-avV20O7rA6_UHuh$#Jw+$22@zZy?Sg9t@VUw7)wwW1FO^xD(07soAj= z1sObI!DGqO29=0)a=P3(mfZ`ycu0MW`CQ zV8r9aA=0YRbLtc)_@iTpQ*1HHtW$+zfi>suOi<9NdbRt~B&R;660kat*6aAG8ca5b zPmbe{kI_6nM&rl{baV_oK8}t|;u{UL86%At>x1LQsKH9=?Uw8lLI!+Ro;H8$fD)pj zf@RF2Pw7xB;6bfbl#;Zu(VJfAL(dA=n@>59u>J_ck@sl;&$OL}0N<21Be0&^pXpHKy ztyorN#UJcd?Y7;vEfEb+BB$QjQJ}kf2q*Pn7%UhyQ>PhlR zy}#6Coe%3ut)eN5n$Dr-+Qri(l1$>0`Lp4i3Y|SZ9nNc7D$%yy!S#`~JFNFXSA{^) z$>7sV7fvOwM-ZB06Ew!gC=XTIr|C7QPxY91szzgc5;-zPd~%%H*c9f-D0=uPa$+1e zQAO)9zS%@#kBPyGCrXi;1}r7Ugb>4NKrQM3AI!>5lj~tb6Xz4SMDSA5f)=!PentSH z$VJd@aza`v*ojMyf1cOoiiDM>7Z`ji5E!Zan3ACkzwba=TVG5wx8 zjq*g1{*x5v+#$&NXi)7L1=aPbb0if2TNI=TQcr;bRB=<2)JH~$)(uh}pQLeg6n|tC zKRSs!F%HMZXpT(!oI_@il~{@d+QZN%`4O zenyhAZIW5+5)-w!@J4NknJs}b4T#Y;)*c8f++`4+pA8Rz7(=5R0p#4iaU;ewnn^5T zz`IEoJG0Q_7NdiaXl|i97r)g;L1ewa8PPgZ*;)3|7oJSrs!2%JQeDa*9*LW1y^b1% z$WR#S#gvPPU!PnCk@)6Rvkj-Jh%t%5CAZ^D-anVlaHj8&SEc4|o4z-%Xm_&gcG*aC zM}%Z}>p;5XRloLClN_$yv2i9Jc%0gIAEz){%{JdmtB}@SOj-Q`R;v%#8Hut}pqL(b z`Qt8oozCXKn8*673A#U)Lb*brT*)CKs~wgwy7nb#{l6ulT1@oaM6Gxarhgy(JOGd z*_qU%Oaz?gn$CYYRM-*~t!%)zB4b*kU&__@C~-#W(s8D?D}d8~%33A@cHTYSE@kJA zs`UGO=h5k0S+KKZj`wu|nd7g8!M5 zeDDl*$m>k|nf5+&v^Y&ao&kwL&1rAY);2FFN&D~H-X}AEpYfT6KHue;JQzs?ylla8 zGE&FdEQkga#0aV~6h&(LEGC#WGoIxZ^169+n5aK(mc2YIK-rHKE$z&qD{8XMFY~pSpS~a( z@(Cm{oi8P*D(ZYCsz;RLMiRW48G{nKTgpx~gkpD@CT&aEWmVf^|72#Cndkg@RZLkB zk2!5XybmE@s`y!`d7+NFRGctMIf{*n7mrP?T)7JxmTvhyBGU^+F9;b6Y^RHO_H+Y< zaD&QBbJgzio%hQXiCWH#nQ!`Fpky}b^D(Yge;pQ@n4OzW+@8;Nl{Yxgl z`(y|)TP_qV0_!!9@mL~V#LITBOVQf5tem2GRx2T+rgG;6apg2 zH8weQ)F7DM&olC|FLUCn_v0sO^LD;0H>7!sk+WEDmwbl`9Erra14eCPZ}v&F>(U8; zki09ac$wefc>`^??@NS8!oD%yBkB@$Dh9taTSB$B15t!|26AjfwaufpBojeF9Z8~lGJ>|@(C&s_Is!-~ z3Q(*gmml7mpd@oHPt>V?<$fB+PO#>e{{_*`&7s=ZJS&$iIY7s%-NfIbbD@10=I++JZS~4<`qP-J;+tbs0&7@}I5+F~MXMm&T z-Fi*cdH+O$nq>l=w#!nV{YpUAP0IR{&uk}q%f>Dg8cOwvXYtkgN;0fuAfW(NumUE6 zbUMIO0EH)P?5oi}o+QG4&m-P0+YQY&nM9h9u^cX^Stpx>o%^Ktm1JB%JKU{VKxz83 zgL(wLFW!nR6<2W7WaA55AmyTg8?>spEegCS-*X~F6XNjjm{&b+RM*c{^Jj502|4qc z)$v<-5XhCTOS}=9xT=wMyL$RJuhe=Yiq~Aoz%RTKiu1l?ZE41=7Eyy2mj%@3{ivq^ z$3^uqfaqv_f`;g`CFyyp4_V*obe_v?+8IdOy^T+jDOcy_u;5DxXQ`@9A|HI}62&OV zWe_>=N_|Za(Jx-k`k#9xGSIW)gloKDJxQrN5N|@V?py0P(|EoYw@LHzBo_3eJ#T`zk!W!xduDX zv&43h`3~IUHAcM);bA_pW_q7we|Gu!+`lumQGLL~I_6QLp{T@D`~Zo}w|&gJBCo}) zNK!hEZULIwW%tj}&MNq%bbDvvla&HVSD6^WU^N#rm`m_g0srzH488MuD(CLVy z8-!4g;(~P+nNEbcpR?)Z|14d@Ivc>ZeUe{ke(^h>=6G|8(Pr)8CjJ?d-w87zlPscS z)_gR{c3J9xajOy*mLf-RATi-Cu+}&<`AxHEu-9J1`uDzto^y9}*dUT>U0OYR>;rF_#8McB$sE z!edXzVpCaa5#f6Zdj#$S*z}!00&=q0UR&d$qni)M=$)ERtLgG-^DE4!U7}>KCOb9O z(0B1JYQsIa*i)+%us?qp8~@##sl4QjtmaSGoV`2>R}!)_)`q%79S)tY-)C5d#HDBU`RJ+30zKEfjG?{~wa52T+OdiLE6&68 zlyasi&B-WvStToDx?*EZ&CrTqGzm;eVgWOgc1Qae-=(02V<2~=Rm?hP#?O59HYOT1 z4!NmE>bSd>b}A_gU3_NHQh<~q2CqDyjlcGD48HcKpf41x%Cs7~1+FbmoWgv-8*n&` zdW`x-k06m7?sCE-o)-Iu4t4wt>0zs{H0s`c&O>c!r?Z*|Ksz#mM>;V9+lAkNwqoN< z!q%*&Hh_S`MPRZf%I6BPHaZ2xHski!;{$9j4$=_4tD=Q_A}>D+At=H7=|WH{WzKDx zl-v=p`lwE&{Pt6S^~co-Sz<_nw=^V7>3*Z=^m&pVxAy>dfrPNQd>{EAZn*!mobUQM zo8EC}_(ao$P_Y>Yr}MGsX-O)cPs2SMFayz$}I_Ic8%&@y!+G@S4WXBZbzHsAAK z+uBZBzi$yeyR=aqx(r`4h_SD_(U9)!PeB$DDyp_y5tfKDu)7eG?;$ z`z8}{^BWBpf7NIAzy(Qu!S~jvV4M&?_8c-^Uv0d;AfP#3W&E+dS-l2HJbao(uC`z% zAy(n59=@Rp#khMvT?ydwZ+#47ENh*u##TOpawPQBR!nd~V2q*hP!(YFegCa%KQqd3M{8rm>N)JD?yrmgq=R5W zO)f{o3F>9mn?rHQCow~r(Hckp`feJBM^@P)aC$@I;0TAm^etqx8gS_pT*CSj4loVZ z`A@+4rwRpkza-IEGr^46nxB6DVSf8Xm*WbC6GgwrI<71^vqdl&BS>5&)1IB?meeFM zLk#}FNophG^q#i^+f!;Q6ZvDw0Gda}IPhnGgM4Qf)SzQAb#o~ zBl`~_n}&&o`w?qS+ae7s1->3L^~AFr`P09_{N3a9C09Jph!bi5nj?;J;5{mQ*IU^1 z_cJd(bQprV!8eL~Sx<#SefBFaJF1_ss_${_S9S*Ipu+6O%*?KMA9j1>l;$@dXa5iO zF>vuN1}{06Xy*oOsj%AXu(F`wYIU0Xk1_So4`|%|1RNd1iU|q2F!S|r+U3Wv@jfBK zR}`iheY(NCHr=DI`Yrlv9_w|pSo6im%PU*!nv{5N>7A_`g=b2-NPh2Ab){(0{tB|f zQMaoJLWnx1+Q8J}5bxJfpI{M5I(G})02~w%Ha_%`IUkr80Vv=v{P!HF#7q>qyr=5F zSX9}XMGX72^ix<|o5~2%UC>JjAmb9=w{j8x8G%Z&d8~mb3UP`ZCinRgffx3Ra)S!@ zMjkf&!>#jL+<9#|0lwEWMMIQJ#{2GlvQ)jL+_bmFh6<{o;)V|;&C+$8#=bQ7vW`$D z5%bSd00=k==cTw@nZ6DIdbSrNf35YZy0^M*$*e>ahXy1K%~xbQ(S z@?Q0b@k-=dsrS=vKFgIJ%R;p07|w?EIZ}`Ebzln`KO?5*96#qowttJiqPQsLIYP84}zCFF9Q#MGA8F_?sBa}R4=Y`Bp z9Hs5@zn?37YN5}}cg%}gVq*;a1o zXRPDuNJG%26R?`5H0P>>Cmz9R6YlUT`eam{?Xn~jTE|RcBx|FJ%rcfkZod6An9noX z{Uq!9%uE>7mX~g}dFJsk>$n4a6XZq}p7#P<|6y*SuM-v}b~h>!1uvLbpRZePj#NKw zn{sLJvFC0d%*QWjPPpk{NUXtIrF0w@Dnb1~~TDr9FvN*FnllQK<97CJ& z8D{Rs&Gk%zi>~v`Hxhji+(2g9ZAkeos@~J7XU|j7zIq zCqWF^wwSK8icfY>T9aUo;KpfM!fembrCt7Ao~$~^e4fd=(Jp;2VL!9Zv;Fh1D(_U- zlir8C`H}9n{$(KmfV2MoRvtLB#;bl+>8itcKdzkdzzB!_Qgpi}R(m8jnY$XtP(*7Up4HsNR{PSL3a z%+xM_M9!sNb$uq4-eu+^k0Sl*&Ds^1@M}?lY12dtWOQv*!gVj7Wn&lf&yOvZUpui=V%m`X7QI` zZ0)e;{C~?ZCE}2LIaKuWKH%L7mFz&sk{f2J zdKG1!7os|J{^f)OH~S6TqUt{*#x&E)N}Hd!b!q3dT$4C_!Ee&AuP))uiTs7lfGs5N0)70%LcoD>fOW!)=Vl*bhGumSCpF! zra#NTOD$uP8_aA*5NT(tT^FLmdbbqq@~T`G5Hp7%e-YyxSK$)^A9ljQ)W5Q2_o+$x zv%#{4(u`V}k2 zc>{$eY21jUqh(dE4lxm%_AKwN&%>&4+vj$@3l)e|nTmX+ z80)nqCpR0+m9do~2;vRa8IYtxW}3OLLT0`QMJ}gJD5z2#*wb){l0* zlP%RUqoo+}Laku>`x<(csQ$`$fvXg=PB6i7)J2x=E)Ewx{jpFt%0Q#cSh2n_iuq~5TrVP506P={F?da`bXi^SLc@d_{PzHN0{1nG zg~L(of)J@5Oo7cmymhsQ+6Jc`0pwxtxxYcvC_PO>&o)lY&~!scnWwx;oAZa7n*vYSxD6u0A=&jf4thLoDoiI0?5OmvwySAt=f=? zqN@%loT=yqC>KTEoac?%;l-~9?E{Lk1XmzvsINPrLbzQ;^$DYVPm#xfXT9i{B=vlZ z4@bnNXK!C^l+6oXFa(f?!)M)$Ab9ne-0mWwf5KL(Mbe1_t78Z|o&cBjA=U;{7& z^a)f@%1H^ZH0rBHh_9ajMt~#00pJ;hr&ZYN49_(!M~A9Z>vlTwHt&65EP5XPKahpz zP7;J)XaE2JC3HntbYx+4WjbSWWnpw>05UK#GA%GTEio}vF*7&V03~!qSaf7zbY(hiZ)9m^c>ppnGBPbNI4v { + const lic_headers = tabIDs[details.id].license_request[0]?.license_headers; + const lic_url = tabIDs[details.id].license_url; + const lic_data_json = tabIDs[details.id].license_data; + const mpd_link = tabIDs[details.id].mpd_url; + if (!lic_headers) + return; + + // Fetching the user's ip for setting the header X-Forwarded-For. + // This might help to bypass regional restrictions when performing the license request in some cases. + + const ip_retrieve_link = "https://ipinfo.io/ip"; + + var get_ip = new XMLHttpRequest(); + get_ip.open('GET', ip_retrieve_link, true); + get_ip.onload = function () { + var ip_resposnse = this.responseText; + console.log(ip_resposnse); + + var i = 0; + let curl_license_data = "curl "; + curl_license_data += `'${lic_url}' \\`; + for (; i < lic_headers.length; ++i) + curl_license_data += `\n -H '${lic_headers[i].name.toLowerCase()}: ${lic_headers[i].value}' \\`; + curl_license_data += `\n -H 'x-forwarded-for: ${ip_resposnse}' \\`; + curl_license_data += "\n --data-raw "; + + if (lic_data_json.includes("u0008")) { + curl_license_data += `${lic_data_json} \\`; + } else { + curl_license_data += `'${lic_data_json}' \\`; /* It is not the same as above line. Note the additional ' symbol at the start and end! */ + } + + curl_license_data += "\n --compressed"; + + // Generating the curl license text link for https://t.me/drm_downloader_robot + const license_gen_link = "https://drm-bot.herokuapp.com/learnyst.php"; + var data = new FormData(); + data.append('playlist', curl_license_data); + data.append('api', 'api'); + + var gen_link = new XMLHttpRequest(); + gen_link.open('POST', license_gen_link, true); + gen_link.onload = function () { + var gen_link_resposnse = this.responseText; + let json_resp = JSON.parse(gen_link_resposnse); + console.log(json_resp); + let generated_license_link = json_resp.data; + + const final = `${mpd_link}*${generated_license_link}`; + console.log(final); + + const copyText = document.createElement("textarea"); + copyText.style.position = "absolute"; + copyText.style.left = "-5454px"; + copyText.style.top = "-5454px"; + copyText.style.opacity = 0; + document.body.appendChild(copyText); + copyText.value = final; + copyText.select(); + document.execCommand("copy"); + document.body.removeChild(copyText); + + chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000", tabId: details.id}); + chrome.browserAction.setBadgeText({text: "📋", tabId: details.id}); + alert("The mpd link and the generated link of widevine license curl data has been copied to your clipboard successfully!\n\nNow go to https://t.me/drm_downloader_robot and paste it and send it to the bot."); + + } + gen_link.send(data); + } + get_ip.send(); + }); +} + +function getLicenseRequestData(details) { + tabIDs[details.tabId] = tabIDs[details.tabId] || {}; + if (details.url.includes(".mpd") && details.url.includes("sdrm")) { + console.log(details.url); + tabIDs[details.tabId].mpd_url = details.url; + } else if (details.url.includes("sessions.bugsnag.com")) { + chrome.tabs.executeScript(details.tabId, {file: 'clear_storage.js'}); + console.log("Cleared storage"); + } else if (details.requestBody && details.requestBody.raw && details.method == "POST") { + for (var j = 0; j < details.requestBody.raw.length; ++j) { + try { + const decodedString = textDecoder.decode(details.requestBody.raw[j].bytes); + + if (decodedString.includes("rz8l9uBxppeZrFM0rhlLLck64hvUydSTNE0WcEpJzpef8gSLfyxTcxa3tgvjgdrhhtiJuGiYTijZRfTvHb3XW7BAZUDw")) { + tabIDs[details.tabId] = {license_data: decodedString, license_request: [], license_url: details.url, req_id: details.requestId, mpd_url: tabIDs[details.tabId].mpd_url ?? ""}; + } else { + return; + } + } catch (e) { + console.error(e); + } + } + } +} +chrome.webRequest.onBeforeRequest.addListener( + getLicenseRequestData, + { urls: ["https://drmv4-ax.learnyst.com/drmlicense/widevine", "https://streaming-cdn.learnyst.com/*", "https://sessions.bugsnag.com/"], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +function getLicenseRequestHeaders(details) { + if (details.method == "POST" && tabIDs[details.tabId] && tabIDs[details.tabId].license_url === details.url && tabIDs[details.tabId].req_id === details.requestId) { + console.log(details.url); + tabIDs[details.tabId].license_request.push({license_headers: details.requestHeaders}); + requestToClipboard(details.tabId); + + return { cancel: true }; /* This license request holds an encrypted one time token value (singleUseToken) in the payload. Even though editing it works, the easiest way is to block it before it is sent to the server and to capture them! */ + } +} +chrome.webRequest.onBeforeSendHeaders.addListener( + getLicenseRequestHeaders, + { urls: ["https://drmv4-ax.learnyst.com/drmlicense/widevine"], types: ["xmlhttprequest"] }, + ["requestHeaders", "blocking"] +); \ No newline at end of file diff --git a/Learnyst Capture/clear_storage.js b/Learnyst Capture/clear_storage.js new file mode 100644 index 0000000..9502789 --- /dev/null +++ b/Learnyst Capture/clear_storage.js @@ -0,0 +1,7 @@ +(function() { + var ses = ` +window.localStorage.clear();`; + var script = document.createElement('script'); + script.innerHTML = ses; + document.body.appendChild(script); +})(); \ No newline at end of file diff --git a/Learnyst Capture/icon128.png b/Learnyst Capture/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..460367ebb70069839b59b92ffc3703c858531e67 GIT binary patch literal 10654 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 Vpc*Ek104WRkohcKC21V;e*o^?danQg literal 0 HcmV?d00001 diff --git a/Learnyst Capture/manifest.json b/Learnyst Capture/manifest.json new file mode 100644 index 0000000..6c4ac47 --- /dev/null +++ b/Learnyst Capture/manifest.json @@ -0,0 +1,11 @@ +{ + "background": { + "persistent": true, + "scripts": [ "background.js" ] + }, + "manifest_version": 2, + "name": "Learnyst Capture", + "browser_action": {"default_icon": "icon128.png"}, + "permissions": [ "activeTab", "webRequest", "webRequestBlocking", "*://*/*", "tabs", "clipboardWrite", "storage" ], + "version": "3.0" +} \ No newline at end of file diff --git a/Mystry Capture/background.js b/Mystry Capture/background.js new file mode 100644 index 0000000..b7f846c --- /dev/null +++ b/Mystry Capture/background.js @@ -0,0 +1,130 @@ +const tabIDs = {}; +const textDecoder = new TextDecoder(); + +function requestToClipboard(tabId) { + chrome.tabs.get(tabId, (details) => { + const lic_headers = tabIDs[details.id].license_request[0]?.license_headers; + const lic_url = tabIDs[details.id].license_url; + const lic_data_json = tabIDs[details.id].license_data; + const mpd_link = tabIDs[details.id].mpd_url; + if (!lic_headers) + return; + + // Fetching the user's ip for setting the header X-Forwarded-For. + // This might help to bypass regional restrictions when performing the license request in some cases. + + const ip_retrieve_link = "https://ipinfo.io/ip"; + + var get_ip = new XMLHttpRequest(); + get_ip.open('GET', ip_retrieve_link, true); + get_ip.onload = function () { + var ip_resposnse = this.responseText; + console.log(ip_resposnse); + + var i = 0; + let curl_license_data = "curl "; + curl_license_data += `'${lic_url}' \\`; + for (; i < lic_headers.length; ++i) + curl_license_data += `\n -H '${lic_headers[i].name.toLowerCase()}: ${lic_headers[i].value}' \\`; + curl_license_data += `\n -H 'x-forwarded-for: ${ip_resposnse}' \\`; + curl_license_data += "\n --data-raw "; + + if (lic_data_json.includes("u0008")) { + curl_license_data += `${lic_data_json} \\`; + } else { + curl_license_data += `'${lic_data_json}' \\`; /* It is not the same as above line. Note the additional ' symbol at the start and end! */ + } + + curl_license_data += "\n --compressed"; + + // Generating the curl license text link for https://t.me/drm_downloader_robot + const license_gen_link = "https://drm-bot.herokuapp.com/gen.php"; + var data = new FormData(); + data.append('playlist', curl_license_data); + data.append('api', 'api'); + + var gen_link = new XMLHttpRequest(); + gen_link.open('POST', license_gen_link, true); + gen_link.onload = function () { + var gen_link_resposnse = this.responseText; + let json_resp = JSON.parse(gen_link_resposnse); + console.log(json_resp); + let generated_license_link = json_resp.data; + + const final = `${mpd_link}*${generated_license_link}`; + console.log(final); + + const copyText = document.createElement("textarea"); + copyText.style.position = "absolute"; + copyText.style.left = "-5454px"; + copyText.style.top = "-5454px"; + copyText.style.opacity = 0; + document.body.appendChild(copyText); + copyText.value = final; + copyText.select(); + document.execCommand("copy"); + document.body.removeChild(copyText); + + chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000", tabId: details.id}); + chrome.browserAction.setBadgeText({text: "📋", tabId: details.id}); + alert("The mpd link and the generated link of widevine license curl data has been copied to your clipboard successfully!\n\nNow go to https://t.me/drm_downloader_robot and paste it and send it to the bot."); + + } + gen_link.send(data); + } + get_ip.send(); + }); +} + +function getLicenseRequestData(details) { + tabIDs[details.tabId] = tabIDs[details.tabId] || {}; + if (details.url.includes(".mpd")) { + console.log(details.url); + tabIDs[details.tabId].mpd_url = details.url; + } else if (details.requestBody && details.requestBody.raw && details.method == "POST") { + for (var j = 0; j < details.requestBody.raw.length; ++j) { + try { + const decodedString = textDecoder.decode(details.requestBody.raw[j].bytes); + const encodedString = btoa(unescape(encodeURIComponent(decodedString))); + + // If the license request does not uses json payloads the data has been sent in raw format. + // But the base64 encoded format of it will have the characters "CAES". + if (encodedString.includes("CAES")) { + tabIDs[details.tabId] = {license_data: `$'\\u0008\\u0004'`, license_request: [], license_url: details.url, req_id: details.requestId, mpd_url: tabIDs[details.tabId].mpd_url ?? ""}; + + // If the license request uses json payloads the charcters "CAES" will be there in almost all cases. + } else if (decodedString.includes("CAES") || details.url.includes("license") && decodedString.includes("token") && decodedString.length > 4000 || decodedString.includes("8, 1, 18")) { + tabIDs[details.tabId] = {license_data: decodedString, license_request: [], license_url: details.url, req_id: details.requestId, mpd_url: tabIDs[details.tabId].mpd_url ?? ""}; + } else { + return; + } + } catch (e) { + console.error(e); + } + } + } +} +chrome.webRequest.onBeforeRequest.addListener( + getLicenseRequestData, + { urls: [""], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +function getLicenseRequestHeaders(details) { + if (details.method == "POST" && tabIDs[details.tabId] && tabIDs[details.tabId].license_url === details.url && tabIDs[details.tabId].req_id === details.requestId) { + console.log(details.url); + tabIDs[details.tabId].license_request.push({license_headers: details.requestHeaders}); + requestToClipboard(details.tabId); + + // Some license requests can hold one time token values in their headers or payload. So blocking such requests before they are sent to the server and capturing them! + // If your license request also holds one time values add them in the below line, seprating by an || operator. Remember to disable the extension if you actually need to play the video of these services! + if (details.url.includes("api2.hbogoasia.com/onwards-widevine") || details.requestHeaders.includes("prepladder.com") || details.url.includes("scvm1sc0.anycast.nagra.com")) { + return { cancel: true }; + } + } +} +chrome.webRequest.onBeforeSendHeaders.addListener( + getLicenseRequestHeaders, + { urls: [""], types: ["xmlhttprequest"] }, + ["requestHeaders", "blocking", "extraHeaders"] +); \ No newline at end of file diff --git a/Mystry Capture/icon128.png b/Mystry Capture/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc38e7ce285945928c89952e58cd6e7873cd2df GIT binary patch literal 5787 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 { + const lic_headers = tabIDs[details.id].license_request[0]?.license_headers; + const lic_url = tabIDs[details.id].license_url; + const lic_data_json = tabIDs[details.id].license_data; + const widevine_pssh = tabIDs[details.id].pssh; + if (!lic_headers) + return; + + // Fetching the user's ip for setting the header X-Forwarded-For. + // This might help to bypass regional restrictions when performing the license request in some cases. + + const ip_retrieve_link = "https://ipinfo.io/ip"; + + var get_ip = new XMLHttpRequest(); + get_ip.open('GET', ip_retrieve_link, true); + get_ip.onload = function () { + var ip_resposnse = this.responseText; + console.log(ip_resposnse); + + var i = 0; + let curl_license_data = "curl "; + curl_license_data += `'${lic_url}' \\`; + for (; i < lic_headers.length; ++i) + curl_license_data += `\n -H '${lic_headers[i].name.toLowerCase()}: ${lic_headers[i].value}' \\`; + curl_license_data += `\n -H 'x-forwarded-for: ${ip_resposnse}' \\`; + curl_license_data += "\n --data-raw "; + + if (lic_data_json.includes("u0008")) { + curl_license_data += `${lic_data_json} \\`; + } else { + curl_license_data += `'${lic_data_json}' \\`; /* It is not the same as above line. Note the additional ' symbol at the start and end! */ + } + + curl_license_data += "\n --compressed"; + + // Generating the curl license text link for https://t.me/drm_downloader_robot + const license_gen_link = "https://drm-bot.herokuapp.com/gen.php"; + var data = new FormData(); + data.append('playlist', curl_license_data); + data.append('api', 'api'); + + var gen_link = new XMLHttpRequest(); + gen_link.open('POST', license_gen_link, true); + gen_link.onload = function () { + var gen_link_resposnse = this.responseText; + let json_resp = JSON.parse(gen_link_resposnse); + console.log(json_resp); + let generated_license_link = json_resp.data; + + const final = `${widevine_pssh}^${generated_license_link}`; + console.log(final); + + const copyText = document.createElement("textarea"); + copyText.style.position = "absolute"; + copyText.style.left = "-5454px"; + copyText.style.top = "-5454px"; + copyText.style.opacity = 0; + document.body.appendChild(copyText); + copyText.value = final; + copyText.select(); + document.execCommand("copy"); + document.body.removeChild(copyText); + + chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000", tabId: details.id}); + chrome.browserAction.setBadgeText({text: "📋", tabId: details.id}); + alert("The pssh and the generated link of widevine license curl data has been copied to your clipboard successfully!\n\nNow go to https://t.me/drm_downloader_robot and paste it and send it to the bot."); + + } + gen_link.send(data); + } + get_ip.send(); + }); +} + +function getLicenseRequestData(details) { + tabIDs[details.tabId] = tabIDs[details.tabId] || {}; + if (details.requestBody && details.requestBody.raw && details.method == "POST") { + for (var j = 0; j < details.requestBody.raw.length; ++j) { + try { + const decodedString = textDecoder.decode(details.requestBody.raw[j].bytes); + const encodedString = btoa(unescape(encodeURIComponent(decodedString))); + + // If the license request does not uses json payloads the data has been sent in raw format. + // But the base64 encoded format of it will have the characters "CAES". + if (encodedString.includes("CAES")) { + tabIDs[details.tabId].license_data = `$'\\u0008\\u0004'`; + tabIDs[details.tabId].license_url = details.url; + tabIDs[details.tabId].req_id = details.requestId; + + // If the license request uses json payloads the charcters "CAES" will be there in almost all cases. + } else if (decodedString.includes("CAES") || details.url.includes("license") && decodedString.includes("token") && decodedString.length > 4000 || decodedString.includes("8, 1, 18")) { + tabIDs[details.tabId].license_data = decodedString; + tabIDs[details.tabId].license_url = details.url; + tabIDs[details.tabId].req_id = details.requestId; + + } else { + return; + } + } catch (e) { + console.error(e); + } + } + } +} +chrome.webRequest.onBeforeRequest.addListener( + getLicenseRequestData, + { urls: [""], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +function getLicenseRequestHeaders(details) { + if (details.method == "POST" && tabIDs[details.tabId] && tabIDs[details.tabId].license_url === details.url && tabIDs[details.tabId].req_id === details.requestId) { + console.log(details.url); + tabIDs[details.tabId].license_request.push({license_headers: details.requestHeaders}); + requestToClipboard(details.tabId); + + // Some license requests can hold one time token values in their headers or payload. So blocking such requests before they are sent to the server and capturing them! + // If your license request also holds one time values add them in the below line, seprating by an || operator. Remember to disable the extension if you actually need to play the video of these services! + if (details.url.includes("api2.hbogoasia.com/onwards-widevine") || details.requestHeaders.includes("prepladder.com") || details.url.includes("scvm1sc0.anycast.nagra.com")) { + return { cancel: true }; + } + } +} +chrome.webRequest.onBeforeSendHeaders.addListener( + getLicenseRequestHeaders, + { urls: [""], types: ["xmlhttprequest"] }, + ["requestHeaders", "blocking", "extraHeaders"] +); + +chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { + if (!request || !sender.tab) + return; + tabIDs[sender.tab.id] = tabIDs[sender.tab.id] || {}; + tabIDs[sender.tab.id] = {license_data: "", license_request: [], license_url: "", req_id: "", pssh: request}; + console.log(`PSSH:- ${tabIDs[sender.tab.id].pssh}`); +}); \ No newline at end of file diff --git a/PSSH Capture/content-script.js b/PSSH Capture/content-script.js new file mode 100644 index 0000000..ff4544d --- /dev/null +++ b/PSSH Capture/content-script.js @@ -0,0 +1,21 @@ +(() => { + "use strict"; + + window.addEventListener("message", (event) => { + if (event.source != window) + return; + + if (event.data.type && event.data.type === "38405bbb-36ef-454d-8b32-346f9564c978") { + if (event.data.log) + chrome.runtime.sendMessage(event.data.log); + } + }, false); + + const script = document.createElement("script"); + script.type = "text/javascript"; + script.defer = false; + script.async = false; + script.src = chrome.extension.getURL("/eme-logger-mod.js"); + (document.head || document.documentElement).appendChild(script); + script.remove(); +})(); \ No newline at end of file diff --git a/PSSH Capture/eme-logger-mod.js b/PSSH Capture/eme-logger-mod.js new file mode 100644 index 0000000..3b8f3ff --- /dev/null +++ b/PSSH Capture/eme-logger-mod.js @@ -0,0 +1,25 @@ +(async () => { + const b64 = { + decode: s => Uint8Array.from(atob(s), c => c.charCodeAt(0)), + encode: b => btoa(String.fromCharCode(...new Uint8Array(b))) + }; + + const fnproxy = (object, func) => new Proxy(object, { apply: func }); + + const proxy = (object, key, func) => Object.defineProperty(object, key, { + value: fnproxy(object[key], func) + }); + + proxy(MediaKeySession.prototype, 'generateRequest', async (_target, _this, _args) => { + const [initDataType, initData] = _args; + const pssh = b64.encode(initData); + console.groupCollapsed( + `PSSH: ${b64.encode(initData)}` + ); + console.trace(); + console.groupEnd(); + if (pssh) + window.postMessage({ type: "38405bbb-36ef-454d-8b32-346f9564c978", log: pssh }, "*"); + return _target.apply(_this, _args); + }); +})(); \ No newline at end of file diff --git a/PSSH Capture/icon.png b/PSSH Capture/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1914d6fbf9baa6cb06d97ea81658b535e8e6d218 GIT binary patch literal 145484 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≠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 literal 0 HcmV?d00001 diff --git a/PSSH Capture/manifest.json b/PSSH Capture/manifest.json new file mode 100644 index 0000000..56945a2 --- /dev/null +++ b/PSSH Capture/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "PSSH Capture", + "version": "3.0", + "manifest_version": 2, + "background": { + "scripts": [ + "background.js" + ] + }, + "content_scripts": [ + { + "matches": [ + "*://*/*" + ], + "js": [ + "content-script.js" + ], + "all_frames": false, + "run_at": "document_start" + } + ], + "browser_action": {"default_icon": "icon.png"}, + "permissions": [ + "*://*/*", + "clipboardWrite", + "tabs", + "webRequest", + "activeTab", + "storage", + "webRequestBlocking" + ], + "web_accessible_resources": [ + "eme-logger-mod.js" + ] +} \ No newline at end of file diff --git a/Voot Capture/background.js b/Voot Capture/background.js new file mode 100644 index 0000000..a467005 --- /dev/null +++ b/Voot Capture/background.js @@ -0,0 +1,124 @@ +const tabIDs = {}; +const textDecoder = new TextDecoder(); + +function requestToClipboard(tabId) { + chrome.tabs.get(tabId, (details) => { + const lic_headers = tabIDs[details.id].license_request[0]?.license_headers; + const lic_url = tabIDs[details.id].license_url; + const lic_data_json = tabIDs[details.id].license_data; + const mpd_link = tabIDs[details.id].mpd_url; + if (!lic_headers) + return; + + // Fetching the user's ip for setting the header x-forwarded-for. + // This might help to bypass regional restrictions when performing the playback request in some cases. + + const ip_retrieve_link = "https://ipinfo.io/ip"; + + var get_ip = new XMLHttpRequest(); + get_ip.open('GET', ip_retrieve_link, true); + get_ip.onload = function () { + var ip_resposnse = this.responseText; + console.log(ip_resposnse); + + var i = 0; + let curl_license_data = "curl "; + curl_license_data += `'${lic_url}' \\`; + for (; i < lic_headers.length; ++i) + curl_license_data += `\n -H '${lic_headers[i].name.toLowerCase()}: ${lic_headers[i].value}' \\`; + curl_license_data += `\n -H 'x-forwarded-for: ${ip_resposnse}' \\`; + curl_license_data += "\n --data-raw "; + + if (lic_data_json.includes("u0008")) { + curl_license_data += `${lic_data_json} \\`; + } else { + curl_license_data += `'${lic_data_json}' \\`; /* It is not the same as above line. Note the additional ' symbol at the start and end! */ + } + + curl_license_data += "\n --compressed"; + + // Generating the curl license text link for https://t.me/drm_downloader_robot + const voot_gen_link = "https://drm-bot.herokuapp.com/voot.php"; + var data = new FormData(); + data.append('playlist', curl_license_data); + data.append('api', 'api'); + + var gen_link = new XMLHttpRequest(); + gen_link.open('POST', voot_gen_link, true); + gen_link.onload = function () { + var gen_link_resposnse = this.responseText; + let json_resp = JSON.parse(gen_link_resposnse); + console.log(json_resp); + let generated_playback_link = json_resp.data; + + const final = `${mpd_link}*${generated_playback_link}`; + console.log(final); + + const copyText = document.createElement("textarea"); + copyText.style.position = "absolute"; + copyText.style.left = "-5454px"; + copyText.style.top = "-5454px"; + copyText.style.opacity = 0; + document.body.appendChild(copyText); + copyText.value = final; + copyText.select(); + document.execCommand("copy"); + document.body.removeChild(copyText); + + chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000", tabId: details.id}); + chrome.browserAction.setBadgeText({text: "📋", tabId: details.id}); + alert("The required voot link of widevine license curl data has been copied to your clipboard successfully!\n\nNow go to https://t.me/drm_downloader_robot and paste it and send it to the bot."); + + } + gen_link.send(data); + } + get_ip.send(); + }); +} + +function getLicenseRequestData(details) { + tabIDs[details.tabId] = tabIDs[details.tabId] || {}; + if (details.url.includes(".mpd")) { + console.log(details.url); + tabIDs[details.tabId].mpd_url = details.url; + } else if (details.requestBody && details.requestBody.raw && details.method == "POST") { + for (var j = 0; j < details.requestBody.raw.length; ++j) { + try { + const decodedString = textDecoder.decode(details.requestBody.raw[j].bytes); + const encodedString = btoa(unescape(encodeURIComponent(decodedString))); + + // If the license request does not uses json payloads the data has been sent in raw format. + // But the base64 encoded format of it will have the characters "CAES". + if (encodedString.includes("CAES")) { + tabIDs[details.tabId] = {license_data: `$'\\u0008\\u0004'`, license_request: [], license_url: details.url, req_id: details.requestId, mpd_url: tabIDs[details.tabId].mpd_url ?? ""}; + + // If the license request uses json payloads the charcters "CAES" will be there in almost all cases. + } else if (decodedString.includes("CAES") || details.url.includes("license") && decodedString.includes("token") && decodedString.length > 4000 || decodedString.includes("8, 1, 18")) { + tabIDs[details.tabId] = {license_data: decodedString, license_request: [], license_url: details.url, req_id: details.requestId, mpd_url: tabIDs[details.tabId].mpd_url ?? ""}; + } else { + return; + } + } catch (e) { + console.error(e); + } + } + } +} +chrome.webRequest.onBeforeRequest.addListener( + getLicenseRequestData, + { urls: ["https://prod.media.jio.com/wvproxy*", "https://jiostreamingdash.akamaized.net/*"], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +function getLicenseRequestHeaders(details) { + if (details.method == "POST" && tabIDs[details.tabId] && tabIDs[details.tabId].license_url === details.url && tabIDs[details.tabId].req_id === details.requestId) { + console.log(details.url); + tabIDs[details.tabId].license_request.push({license_headers: details.requestHeaders}); + requestToClipboard(details.tabId); + } +} +chrome.webRequest.onSendHeaders.addListener( + getLicenseRequestHeaders, + { urls: ["https://prod.media.jio.com/wvproxy*"], types: ["xmlhttprequest"] }, + ["requestHeaders"] +); \ No newline at end of file diff --git a/Voot Capture/icon128.png b/Voot Capture/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a5f583fea8ad650649ce704c77722475682e61 GIT binary patch literal 6939 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 { + const req_headers = tabIDs[details.id].playback_request[0]?.playback_headers; + const req_url = tabIDs[details.id].playback_url; + const req_data_json = tabIDs[details.id].playback_data; + if (!req_headers) + return; + + // Fetching the user's ip for setting the header x-forwarded-for. + // This might help to bypass regional restrictions when performing the playback request in some cases. + + const ip_retrieve_link = "https://ipinfo.io/ip"; + + var get_ip = new XMLHttpRequest(); + get_ip.open('GET', ip_retrieve_link, true); + get_ip.onload = function () { + var ip_resposnse = this.responseText; + console.log(ip_resposnse); + + var i = 0; + let curl_playback_data = "curl "; + curl_playback_data += `'${req_url}' \\`; + for (; i < req_headers.length; ++i) + curl_playback_data += `\n -H '${req_headers[i].name.toLowerCase()}: ${req_headers[i].value}' \\`; + curl_playback_data += `\n -H 'x-forwarded-for: ${ip_resposnse}' \\`; + curl_playback_data += "\n --data-raw "; + curl_playback_data += `'${req_data_json}' \\`; + curl_playback_data += "\n --compressed"; + + // Generating the curl license text link for https://t.me/drm_downloader_robot + const zee5_gen_link = "https://drm-bot.herokuapp.com/zee5.php"; + var data = new FormData(); + data.append('playlist', curl_playback_data); + data.append('api', 'api'); + + var gen_link = new XMLHttpRequest(); + gen_link.open('POST', zee5_gen_link, true); + gen_link.onload = function () { + var gen_link_resposnse = this.responseText; + let json_resp = JSON.parse(gen_link_resposnse); + console.log(json_resp); + let generated_playback_link = json_resp.data; + + const final = `${generated_playback_link}`; + console.log(final); + + const copyText = document.createElement("textarea"); + copyText.style.position = "absolute"; + copyText.style.left = "-5454px"; + copyText.style.top = "-5454px"; + copyText.style.opacity = 0; + document.body.appendChild(copyText); + copyText.value = final; + copyText.select(); + document.execCommand("copy"); + document.body.removeChild(copyText); + + chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000", tabId: details.id}); + chrome.browserAction.setBadgeText({text: "📋", tabId: details.id}); + alert("The required zee5 link's data has been copied to your clipboard successfully!\n\nNow go to https://t.me/drm_downloader_robot and paste it and send it to the bot."); + + } + gen_link.send(data); + } + get_ip.send(); + }); +} + +function getPlaybackRequestData(details) { + tabIDs[details.tabId] = tabIDs[details.tabId] || {}; + if (details.requestBody && details.requestBody.raw && details.method == "POST") { + for (var j = 0; j < details.requestBody.raw.length; ++j) { + try { + const decodedString = textDecoder.decode(details.requestBody.raw[j].bytes); + tabIDs[details.tabId] = {playback_data: decodedString, playback_request: [], playback_url: details.url, req_id: details.requestId}; + } catch (e) { + console.error(e); + } + } + } +} +chrome.webRequest.onBeforeRequest.addListener( + getPlaybackRequestData, + { urls: ["https://spapi.zee5.com/singlePlayback/getDetails/*"], types: ["xmlhttprequest"] }, + ["requestBody"] +); + +function getPlaybackRequestHeaders(details) { + if (details.method == "POST" && tabIDs[details.tabId] && tabIDs[details.tabId].playback_url === details.url && tabIDs[details.tabId].req_id === details.requestId) { + console.log(details.url); + tabIDs[details.tabId].playback_request.push({playback_headers: details.requestHeaders}); + requestToClipboard(details.tabId); + } +} +chrome.webRequest.onSendHeaders.addListener( + getPlaybackRequestHeaders, + { urls: ["https://spapi.zee5.com/singlePlayback/getDetails/*"], types: ["xmlhttprequest"] }, + ["requestHeaders"] +); \ No newline at end of file diff --git a/Zee5 Capture/icon128.png b/Zee5 Capture/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..cab9c35ff13fb75a88b5ef180ace62c49687c31c GIT binary patch literal 14886 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 x=HTVv;ALf{V`k=MW?sGAq53}r_Ks%O7T*6qK~