-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathstart.html
More file actions
101 lines (92 loc) · 7.51 KB
/
Copy pathstart.html
File metadata and controls
101 lines (92 loc) · 7.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hell YES!</title>
</head>
<body>
<h1>A widevine Downloader with multi-browser support for Linux and Windows</h1>
<h3>Overview</h3>
<p>A generic L3 downloader for DRM content which comes in two versions</p>
<list><li>allhell3.py</li><li>allhell3gui.py</li></list>
<p>Allhell3.py is coded for the all browsers (tested on Chrome, Firefox and Edge) and is supplied ready to download all media protected by widevine.</p>
<p>allhell3gui.py is a Graphical User Interface version of allhell3.py.</p>
<br/>In use, the style of entering data is a little different. allhell3.py uses a paste <em>without echo to the screen</em>, and uses Ctrl+D (Linux) or Ctrl+Z (Windows) to signal the end of the cURL input.
<br/>allhell3gui.py uses a paste <em>with echo to the screen</em>, and uses button clicks to process data.
<br/>Use whichever you like best on your system....
<br/>In both versions a downloader (N_m3u8DL-RE) may be used to download the media.
</p>
<p>But either will need you to download some helper software.</p>
<h3>Pre Use Instructions</h3>
Install the following:
<ul>
<li>See the code at <a href="https://github.com/nilaoda/N_m3u8DL-RE">https://github.com/nilaoda/N_m3u8DL-RE</a>, download the latest release. Unzip and save to a folder named 'binaries'. It can be anywhere on your system. So long as 'binaries' is in your Path.</li>
<li>Do the same with <a href="https://www.videohelp.com/software/ffmpeg">ffmpeg</a> and <a href="https://www.videohelp.com/software/MKVToolNix">MKVToolNix</a> etc.</li>
<li>See <a href="https://www.videohelp.com/software/ffmpeg">https://www.videohelp.com/software/ffmpeg</a> for more information about ffmpeg.</li>
<li>See <a href="https://www.videohelp.com/software/MKVToolNix">https://www.videohelp.com/software/MKVToolNix</a> for more information about MKVToolNix.</li>
<li>See <a href="https://www.bento4.com/downloads/">https://www.bento4.com/downloads/</a> for more information about Bento4.</li>
<li>Since allhell3.py is a python script you also need <a href="https://www.python.org/downloads/">python or get it from Microsoft Store if on Windows</a></li>
</ul>
<h3>How to Use</h3>
<p>You provide three bits of information taken from a web page and allhell3.py does the rest.</p>
<p>You start a python script with 'python allhell3.py' written in a terminal or 'python3 allhell3gui.py' </p>
<P>But python scripts typically use modules that are imported to the script</P>
<p>Usuallly we use 'python install module-name' But if the script author has provided a requirements.txt file, then we can use 'pip install -r requirements.txt',
so use that here.
</p>
<p>If the bare pip install does not work, try 'python3 pip install -r requirements.txt', or
failing that 'python -m pip install -r requirements.txt'. Google for 'using pip' if stuck.
</p>
<p>On Windows, Microsoft Store has a Terminal App, find an install that to use for running python scripts.<br/>On Linux You'll already know how to use xterm or whatever</p>
<h4>You Provide</h4>
<li>MPD URL</li>
<li>cURL of license server request</li>
<li>Video name</li>
<p>After you provide the data, it will download the video using N_m3u8DL-RE, should you wish, finding keys in the process.</p>
<h4>You Find</h4>
<li>MPD URL</li>
<p>Copy and paste the MPD URL from the web page.</p>
<img src="images/selected_mpd_license.png" alt="Example of mpd and license URL" width="900" height="600" class="rounded" id="main-image">
<p>For example, open this image in a new tab to see it full size.</p>
<p>The image shows the MPD URL as the first entry. How would we know it was the right one? it has mpd written in it.</p>
<p>How did we open that tool in the browser? Press ctrl+shift+C</p>
<p>How did we hide all the other stuff a web page loads? We used a filter</p>
<img src="images/filter.png" alt="Example with filter" width= "900" height="400" class="rounded" id="main-image">
<p>The filter is a regex or regular expression - it's a way of saying "find all the lines that contain mpd and license" </p>
<p> the regex is "regexp:widevine|acquire|license|mpd" and it means "find all the lines that contain widevine or acquire or license or mpd".
However, Chrome does not allow regexp: so use a single word like license or mpd etc. </p>
<p>With expereince you will learn that sites use different words to identify their license url.<br/>
And it the filter does not find it search with method:POST filter. POST messages are sent securely, most http traffic isn't. But licenses are.</p>
<li>cURL of license server request</li>
<p>Copy and paste the cURL of the license server request.
<p>For example, open this image in a new tab to see it full size.</p>
<img src="images/selected_cURL.png" alt="Example of curl" width= "900" height="600" class="rounded" id="main-image">
<p>Which 'copy as cURL' to use? Windows - choose 'Copy as cURL (Posix)' if available or 'Copy as cURL (bash)' </p>
<p>If using allhell3.py.py terminate your paste command and tell the script to process the cURL by using Ctrl+Z (Windows) or Ctrl+D (Linux).
<br/>Be prepared for the screen to write several blank lines, shifting existing text upwards rapidly.
</p>
<li>Video name</li></p><list>
<p>Video name is requested once keys are found and the script is ready to download. The name does not need a file type extension added.</p>
<h4>Allhell3 In action</h4>
<p>Running the script.
<img src="images/enter_mpd.png" alt="Example pasting mpd" width= "900" height="600" class="rounded" id="main-image">
<img src="images/keys.png" alt="curl pastes to screen with echo and finds keys" width= "1200" height="360" class="rounded" id="main-image">
<p>Note carefully: allhell3.py.py uses Ctrl + D to enter the cURL on Linux and Ctrl + Z on Windows. Nothing prints to the screen until Ctrl+D or Z is pressed.</p>
<h4>Allhell3gui In action</h4>
<img src="images/gui2.png" alt="Starting GUI" width= "900" height="600" class="rounded" id="main-image">
<img src="images/gui3.png" alt="Populating Data" width= "900" height="600" class="rounded" id="main-image">
<img src="images/gui4.png" alt="N_m3u8DL-RE running in terminal" width= "900" height="600" class="rounded" id="main-image">
<h4>Coping with 'key too small' errors.</h4>
<p>Part of the process of fetching decryption-keys involves the swapping of keys in a Diffie-Helman type process, to validate the authority of a user.
Some servers with old hardware use keys that are small enough to crack by brute force. So most systems force the use of larger, more secure, keys. <br/>
The system will then reject the connection and complain 'keys are too small'. If that happens use the included script allhell3gui_lowerDH.py which attempts to force the system to accept smaller keys.
<h4>Conclusion</h4>
Everyone at VH is happy to help with problems of decryption, but far less happy with problems you may have finding your way around your computer's operating system.
Use google to search for help before you post to the forum; people are busy and have no time to help with trivia.
<p>Happy allhell3.py!<br/>And happy allhell3gui.py too!<br/>
A_n_g_e_l_a
</p>
</body>
</html>