-
Notifications
You must be signed in to change notification settings - Fork 71
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Youtube / Update Amazon, C+, Polsat / Update UI (#59)
- Loading branch information
Showing
17 changed files
with
323 additions
and
184 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,7 @@ | ||
device.wvd | ||
|
||
device_client_id_blob | ||
device_private_key | ||
|
||
client_id.bin | ||
private_key.pem | ||
|
||
remote.json | ||
.idea | ||
remote.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,85 +1,129 @@ | ||
<html> | ||
<!-- HTML --> | ||
<html lang="en"> | ||
|
||
<!-- Heading --> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<title>Widevine L3 Guessor 2024</title> | ||
<title>Widevine L3 Decrypter</title> | ||
<link rel="stylesheet" href="style.css"> | ||
<script src="pyodide/pyodide.js"></script> | ||
</head> | ||
|
||
<!-- Body --> | ||
<body> | ||
<div id="toggleHistory"> | ||
<button id="historyButton">Show History</button><br><br> | ||
</div> | ||
|
||
|
||
|
||
<!-- noEME --> | ||
<div id="noEME"> | ||
Widevine content hasn't detected in this page.<br> | ||
Open widevine-protected website and try again! | ||
Widevine content hasn't detected in this page. | ||
<br> | ||
Open Widevine protected website and try again! | ||
</div> | ||
<div id="home" class="hidden"> | ||
|
||
<!-- Main --> | ||
<div id="wvHome" > | ||
|
||
<!-- Decryption forms --> | ||
<form id="wvForm"> | ||
<label for="pssh">PSSH</label> | ||
<input type="text" id="pssh" disabled/> | ||
<input type="hidden" id="psshIndex" /> | ||
<input type="button" id="psshButton" value="Select" /><br> | ||
|
||
<label for="license">License URL</label> | ||
<input type="text" id="license" disabled/> | ||
<input type="hidden" id="licenseIndex" /> | ||
<input type="button" id="licenseButton" value="Select" /><br> | ||
|
||
<label for="scheme">Challenge scheme</label> | ||
<select id="scheme"> | ||
<option value="CommonWV">CommonWV</option> | ||
<option value="Amazon">Amazon</option> | ||
<option value="CanalPlus">Canal+</option> | ||
<option value="CanalPlus2">Canal+(Alt)</option> | ||
<option value="Comcast">Comcast Xfinity</option> | ||
<option value="DRMToday">DRMToday</option> | ||
<option value="GlobalTV">GlobalTV</option> | ||
<option value="moTV">moTV</option> | ||
<option value="NosTV">NosTV</option> | ||
<option value="oqee">Oqee</option> | ||
<option value="Polsat">Polsat</option> | ||
<option value="RedBee">Red Bee Media</option> | ||
<option value="thePlatform">thePlatform</option> | ||
<option value="VdoCipher">VdoCipher</option> | ||
<option value="VUDRM">VUDRM</option> | ||
<option value="Vodafone">Vodafone</option> | ||
<option value="Youku">Youku</option> | ||
</select> | ||
|
||
<input type="button" id="guess" value="Guess!"><br> | ||
|
||
<label for="result">Result:</label><br> | ||
<textarea id="result" rows="10" cols="50"></textarea> | ||
|
||
<!-- PSSH line --> | ||
<div id="wvHomePSSHLines"> | ||
<label for="pssh">PSSH</label> | ||
<input type="text" id="pssh" disabled/> | ||
<input type="hidden" id="psshIndex" /> | ||
<input type="button" id="psshButton" value="Select" /> | ||
<br> | ||
</div> | ||
|
||
<!-- License URL line --> | ||
<div id="wvHomeLicenseLine"> | ||
<label for="license">License URL</label> | ||
<input type="text" id="license" disabled/> | ||
<input type="hidden" id="licenseIndex" /> | ||
<input type="button" id="licenseButton" value="Select" /> | ||
<br> | ||
</div> | ||
|
||
<!-- Scheme line --> | ||
<div id="wvHomeSchemeLine"> | ||
<label for="scheme">Challenge scheme</label> | ||
<select id="scheme"> | ||
<option value="CommonWV">CommonWV</option> | ||
<option value="Amazon">Amazon</option> | ||
<option value="CanalPlusPL">CanalPlusPL</option> | ||
<option value="Comcast">Comcast Xfinity</option> | ||
<option value="DRMToday">DRMToday</option> | ||
<option value="GlobalTV">GlobalTV</option> | ||
<option value="moTV">moTV</option> | ||
<option value="NosTV">NosTV</option> | ||
<option value="oqee">Oqee</option> | ||
<option value="PolSatBoxGo">PolSatBoxGo</option> | ||
<option value="RedBee">Red Bee Media</option> | ||
<option value="thePlatform">thePlatform</option> | ||
<option value="VdoCipher">VdoCipher</option> | ||
<option value="VUDRM">VUDRM</option> | ||
<option value="Vodafone">Vodafone</option> | ||
<option value="Youku">Youku</option> | ||
<option value="YouTube">YouTube</option> | ||
</select> | ||
<input type="button" id="guess" value="Decrypt"> | ||
<br> | ||
</div> | ||
|
||
<!-- Result line --> | ||
<div id="wvHomeResultLine"> | ||
<label for="result">Result:</label><br> | ||
<textarea id="result" rows="10" cols="50" readonly></textarea> | ||
</div> | ||
|
||
</form> | ||
<button id="historyButton">Show History</button> | ||
</div> | ||
<div id="ckHome" class="hidden"> | ||
|
||
<!-- Clearkey --> | ||
<div id="ckHome"> | ||
<h3>Clearkey detected</h3> | ||
<label for="ckResult">Result:</label><br> | ||
<textarea id="ckResult" rows="10" cols="50"></textarea> | ||
<label for="ckResult">Result:</label> | ||
<textarea id="ckResult" rows="10" cols="50" readonly></textarea> | ||
</div> | ||
<div id="selectPssh" class="hidden"> | ||
<input type="text" id="psshSearch" placeholder="Search"> | ||
|
||
<!-- PSSH Selection --> | ||
<div id="selectPssh"> | ||
<label for="psshSearch"></label> | ||
<input type="text" id="psshSearch" placeholder="Search for PSSH"> | ||
<ul id="psshList"></ul> | ||
</div> | ||
<div id="selectRequest" class="hidden"> | ||
<input type="text" id="requestSearch" placeholder="Search"> | ||
|
||
<!-- License URL Selection --> | ||
<div id="selectRequest"> | ||
<label for="requestSearch"></label> | ||
<input type="text" id="requestSearch" placeholder="Search for License request"> | ||
<ul id="requestList"></ul> | ||
</div> | ||
<div id="history" class="hidden"> | ||
<button id="backHistory">🔙 Back</button> | ||
<button id="saveHistory">💾 Save History</button> | ||
<button id="clearHistory">❌ Clear History</button> | ||
|
||
<!-- History --> | ||
<div id="history"> | ||
<div id="histDisp"></div> | ||
<div id="histButtons"> | ||
<button class="text-red-600" id="backHistory">🔙 Back</button> | ||
<button id="saveHistory">💾 Save History</button> | ||
<button id="clearHistory">❌ Clear History</button> | ||
</div> | ||
</div> | ||
<div id="updateNotice" class="hidden"> | ||
|
||
<!-- Update notice --> | ||
<div id="updateNoticeExtension"> | ||
Version =VER= update available! | ||
<a href="https://github.com/FoxRefire/wvg/archive/=HASH=.zip">Download</a> | ||
<a href="https://github.com/FoxRefire/wvg/archive/=HASH=.zip"> Download</a> | ||
</div> | ||
</body> | ||
|
||
<!-- Scripts --> | ||
<script src="popup.js" type="module"></script> | ||
<script src="popup_drawList.js"></script> | ||
<script src="jsonview.js"></script> | ||
<script src="popup_showHistory.js"></script> | ||
<script src="popup_updateNotice.js"></script> | ||
|
||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
import urllib.parse | ||
payload = f"widevine2Challenge={urllib.parse.quote(base64.b64encode(challenge).decode())}&includeHdcpTestKeyInLicense=true" | ||
|
||
licHeaders['User-Agent'] = "Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0" | ||
|
||
res = await corsFetch(licUrl, "POST", licHeaders, payload, "json") | ||
licence = res['widevine2License']['license'] | ||
|
||
payload = f'widevine2Challenge={urllib.parse.quote(base64.b64encode(cdm.service_certificate_challenge).decode())}&includeHdcpTestKeyInLicense=true' | ||
service_cert = await corsFetch(licUrl, "POST", licHeaders, payload, "json") | ||
service_cert = service_cert['widevine2License']['license'] | ||
getChallenge('b64', service_cert) | ||
payload = f'widevine2Challenge={urllib.parse.quote(getChallenge("b64", service_cert))}&includeHdcpTestKeyInLicense=true' | ||
licence = await corsFetch(licUrl, "POST", licHeaders, payload, "json") | ||
licence = licence['widevine2License']['license'] |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
import xml.etree.ElementTree as ET | ||
challenge_with_cert = getChallenge('b64', Cdm.common_privacy_cert) | ||
licence = await corsFetch(licUrl, "POST", licHeaders, challenge_with_cert, "blob") | ||
licence = ET.fromstring(licence).find('.//{http://www.canal-plus.com/DRM/V1}license').text |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
body = loadBody('json') | ||
body['params']['object'] = getChallenge('b64', Cdm.common_privacy_cert) | ||
licence = await corsFetch(licUrl, "POST", licHeaders, body, "json") | ||
licence = licence['result']['object']['license'] |
Oops, something went wrong.