Getwvkeys and the Cdrm Project both have large data tables of pssh and keys they have found for members.
If you have no CDM and no way to find keys it may be worthwhile seeing if a database search reveals anything.
A recent snapshot of a key database is here:-https://mega.nz/file/80Bl1YgK#WF_ATJcqMPCUg7JIttFbMrjJlhrMl328jJvBIstGyg0 It contains over one quarter of a million sets of keys.
Searching the database can be done from a command window once sqlite3 is installed. See https://www.sqlite.org/download.html for your system's binaries.
With sqlite3 installed, in a command window opened in the same directory as the saved database, typeIf the installation was successful the response will be:-Code:sqlite3
Open the database for use, note the full stop at the start:-HTML Code:sqlite3 SQLite version 3.40.1 2022-12-28 14:03:47 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite>
Examine the first 200 rows of data:-Code:.open keyVault_WN21.db
Examine the last 100 rows of dataCode:sqlite> select _rowid_, pssh, keys from DATABASE ORDER BY _rowid_ LIMIT 0,200;
TypingCode:sqlite> select _rowid_, pssh, keys from DATABASE ORDER BY _rowid_ DESC LIMIT 0,100;will show a full list of commands to manage sqlite3 withCode:.helpbeing the command to close the program. But make a distinction between sqlite command and the Database language of SQL that is used to create and interrogate Tables in the Database.HTML Code:.exit
The following is SQL run within sqlite3
Use SQL to find a specific set of keys for a given pssh. All SQL commands finish with a semi-colon:-
results in;Code:select keys from DATABASE where pssh = "AAAAiXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGkIARIQHqtFX89nNCqZISgDwbSolhoIY2FzdGxhYnMiQGV5SmhjM05sZEVsa0lqb2lOakpoWXpFNVlUTmhaV05sTkdVMU56aGhNV1kzWmpCa01UbGtZbVJtWVRJaWZRPT0yB2RlZmF1bHQ=" ;
Note that command select from DATABASE is used. The creators of the keyVault_WN21.db have confused a Database (keyVault_WN21.db) with a TABLE and have rather confusingly called it DATABASE. A Database may contain many TABLES.HTML Code:1eab455fcf67342a99212803c1b4a896:0d475e2b8e6d41bf4a47b2aab9abc3d0
But a simpler way to find a key in the Table would be to use a python routine. For example sql.py
Using the above and pssh as AAAAWXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADkIARIQJX msqlSxQFWqEqz+J7flnBoLc3RyZWFtZ3JvdXAiEKqseSWxVFVA qhKs/ie35ZwqAlNEMgA= givesCode:''' A routine to search a database table for keys by providing a value for PSSH Database at https://anonfiles.com/D0n8Ffsdzf/keyVault_WN21_db ''' import sqlite3 con = sqlite3.connect("keyVault_WN21.db") cur = con.cursor() pssh = input("PSSH? ") res = cur.execute(f"select keys from DATABASE where pssh = '{pssh}'") keys = res.fetchone() if keys: key = keys[0] print(f"\n{key}") else: res = cur.execute("SELECT COUNT(*) FROM DATABASE") num = res.fetchone() number = num[0] print(f"\nNothing found!\nYet there are {number} entries in the database.")
[Attachment 71184 - Click to enlarge]
It some circumstances it might be useful to do a pre-lookup for keys in the database even if you have your own CDM.
Happy days!
Support our site by donate $5 directly to us Thanks!!!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
+ Reply to Thread
Results 1 to 30 of 90
-
Last edited by A_n_g_e_l_a; 17th Jan 2024 at 04:51.
-
Great job, thanks!
There's also a GUI @ https://sqlitebrowser.org/dl/ which I find very useful. -
What's the total size of that database file?
-
I have reconciled two databases, one from getwvkeys.cc and the other from cdrm-project (CDM Seller). The database file is now 1Gb and has 672268 unique PSSH values.
It is located here [edit]Removed see below for updated link[/edit]
If using the old sql the database has been renamed to reflect the week number of this release. Edited code for the new database name is below.
Code:''' A routine to search a database table for keys by providing a value for PSSH Database at https://anonfiles.com/v1R7wdwez9/keyVault_WN24_db ''' import sqlite3 con = sqlite3.connect("keyVault_WN24.db") cur = con.cursor() pssh = input("PSSH? ") res = cur.execute(f"select keys from DATABASE where pssh = '{pssh}'") keys = res.fetchone() if keys: key = keys[0] print(f"\n{key}") else: res = cur.execute("SELECT COUNT(*) FROM DATABASE") num = res.fetchone() number = num[0] print(f"\nNothing found!\nYet there are {number} entries in the database.")
Last edited by A_n_g_e_l_a; 14th Jun 2023 at 06:00.
-
Anonymous9875434Guest
AAAAgHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGASED7w53 9t5FOxr6Ft26lYNt0SED7w539t5FOxr6Ft26lYNt0SED7w539t 5FOxr6Ft26lYNt0SED7w539t5FOxr6Ft26lYNt0SED7w539t5F Oxr6Ft26lYNt1I49yVmwY=
-
Thank you very much. Magnificent work. I also wanted to ask a question, does the database also contain the license URL?
-
I was able to execute the command correctly with only single quotes for 'pssh'
Code:sqlite> .open keyVault_WN21.db sqlite> select keys from DATABASE where pssh = "AAAAiXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGkIARIQHqtFX89nNCqZISgDwbSolhoIY2FzdGxhYnMiQGV5SmhjM05sZEVsa0lqb2lOakpoWXpFNVlUTmhaV05sTkdVMU56aGhNV1kzWmpCa01UbGtZbVJtWVRJaWZRPT0yB2RlZmF1bHQ=" ; Parse error: no such column: AAAAiXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGkIARIQHqtFX89nNCqZISgDwbSolhoIY2FzdGxhYnMiQGV5SmhjM05sZEVsa0lqb2lOakpoWXpFNVlUTmhaV05sTkdVMU56aGhNV1kzWmpCa01UbGtZbVJtWVRJaWZRPT0yB2RlZmF1bHQ= select keys from DATABASE where pssh = "AAAAiXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7Q error here ---^ sqlite> select keys from DATABASE where pssh = 'AAAAiXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGkIARIQHqtFX89nNCqZISgDwbSolhoIY2FzdGxhYnMiQGV5SmhjM05sZEVsa0lqb2lOakpoWXpFNVlUTmhaV05sTkdVMU56aGhNV1kzWmpCa01UbGtZbVJtWVRJaWZRPT0yB2RlZmF1bHQ=' ; 1eab455fcf67342a99212803c1b4a896:0d475e2b8e6d41bf4a47b2aab9abc3d0 sqlite> 1eab455fcf67342a99212803c1b4a896:0d475e2b8e6d41bf4a47b2aab9abc3d0
-
Thanks!
[Attachment 71686 - Click to enlarge]
I don't understand what went wrong.
Using Python is not a problem.Last edited by piaohua; 13th Jun 2023 at 11:11.
-
-
-
The database so far provided works well enough; but I simply had added the cdrm 'pssh' and 'keys' values to the getwvkeys database which made its file size over 1Gb! I have now redone the job and exported from both cdrm and getwvkeys into a totally new database. This allows for having rows containing the same pssh as 'pssh' is no longer the Primary Key. The new table is smaller at 254Mb with 672284 entries.
Note cdrm stores keys as #################:################## and getwvkeys as [{"key": "###############;##################"}] which is python for a list of dictionaries but defined as text in the database so you will see this difference in output from searches from time to time.
The new consolidated table is here https://anonfiles.com/w7k5F3wbz7/export_db
and has this schema:
CREATE TABLE exported(
rowid INTEGER PRIMARY KEY,
pssh TEXT,
keys TEXT
);
Calling the table 'exported' helped me keep my sanity when dealing with tables called 'database' in the databases of both cdrm and getwvkeys. it does mean a slight change in the code of sql.py is needed.
sql.py
Code:''' A routine to search a database table for keys by providing a value for PSSH Database at https://anonfiles.com/w7k5F3wbz7/export_db ''' import sqlite3 con = sqlite3.connect("export.db") cur = con.cursor() pssh = input("PSSH? ") res = cur.execute(f"select keys from exported where pssh = '{pssh}'") keys = res.fetchone() if keys: key = keys[0] print(f"\n{key}") else: res = cur.execute("SELECT COUNT(*) FROM exported") num = res.fetchone() number = num[0] print(f"\nNothing found!\nYet there are {number} entries in the database.")
edit:
Further playing around reveals some mess in the getwvkeys database with duplicate entries. There more oderly section is from cdrm-project database.
running sqlite3 in a terminal:
Code:select keys from exported where pssh = "AAAAUHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADAiKDRlZjkxZTk0OWRmODQzNmNhNmJiNzQyZDQzYWMyNmM2YzI1MDg5NWJI49yVmwY=";
[Attachment 71695 - Click to enlarge]
SELECT DISTINCT
Code:select distinct keys from exported where pssh = "AAAAUHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADAiKDRlZjkxZTk0OWRmODQzNmNhNmJiNzQyZDQzYWMyNmM2YzI1MDg5NWJI49yVmwY=";
The python routine above doesn't see the duplictes as it only fetches one result presently. This is work in progress for my python but direct SQL commands will work fine.Last edited by A_n_g_e_l_a; 14th Jun 2023 at 08:08.
-
I've had a donation of 10,000 vdocipher keys which I have added to the database. After enforcing a UNIQUE constraint on the getWVkeys data the quantity of unique pssh/key pairs has dropped by half so presently there are 491111 entries including vdocipher.
Now vdocipher instead of pssh uses a unique id formed from the mpd so this little bit of python code gets the value to search for if you are looking for vdocipher key.
Code:mpd_link = input("Enter your vdocipher mpd link: ") unique_id = mpd_link.split("/")[4] + "/" + mpd_link.split("/")[5] print(f"Use this value as pseudo-PSSH in sql.py = {unique_id}")
Code:''' A routine to search a database table for keys by providing a value for PSSH Database at https://anonfiles.com/Z9I6P6w5z8/export_db ''' import sqlite3 con = sqlite3.connect("export.db") cur = con.cursor() pssh = input("PSSH? ") res = cur.execute(f"select keys from exported where pssh = '{pssh}'") keys = res.fetchall() if keys: for key in keys: mykey = key[0] print(f"\n{mykey}") else: res = cur.execute("SELECT COUNT(*) FROM exported") num = res.fetchone() number = num[0] print(f"\nNothing found!\nYet there are {number} entries in the database.")
CREATE TABLE exported(
rowid INTEGER PRIMARY KEY,
pssh TEXT,
keys TEXT,
UNIQUE (keys)
);
I did ask the owner of GetWVKey.cc to let me have an official copy of the getWvKeys database. No luck so far. I live in hope. Democratization of all this data is the way forward!Last edited by A_n_g_e_l_a; 15th Jun 2023 at 08:27.
-
I still think it would be positive to include MPD links as well.
If it works 10%, or even 5%, it would still be good. -
Mpd links do not feature in any of the sources for this database. How would you go about getting them? Thinking does need to be grounded sometimes by reality.
You could construct a vdocipher mpd maybe if you knew the pattern?
Code:select pssh from exported where length(pssh) =22 limit 0,100;
MZH5djnvvZB9a/1235dcf1
9F0tfcM20KeGg/89eaad2f
vZd9l2Vovba4p/af7a3d8b
dqpIjp8riU5Hd/cdde4ceb
wZJ4Y7HO9cE7f/31d1404d
48omx316L3SaT/09deedb5
dkRCFmQcTp6Re/b649b0dd
lJWt9pkd6QG56/d1bba802
nMbodDKk5o65n/640b325d
jU9eFz9vnKUFQ/7eaadd8d
l5FEt8g8SWtcu/0624c9e1
olNVhNd18SVCD/97fd7440
ZpvWwTqmRZ0JZ/1f8652fc
PrDzyagRDTiWn/82cc5eea
g7hrPd2aGMETb/ac193f55
GdyAtoa3LN7iJ/020ede2e
D2ClGDyQQu8vH/0be0ddf7
KJqOqjfdRXp6Y/8f50779e
ozlQzyzZ4KxEr/e3a565b0
USnlTs1kDT2Am/9b733f54
cj4H7sb3qsbrX/1bbe6393
LZ7gO3y8waoyA/9cf66c57
rPO3alpiKU1CO/400eab89
WNZE4Xrd6Q2tf/270c4aa7
IZbCWuXXIaT7f/ef5bce2e
vYBBKhv2CaWAd/d89c0547
er9DpBkTYLPqv/8b3c6e75
ToMSj2ST4aM5w/67f39613
2nFFvNpD9qzkJ/d8c0f0db
nrQtq5i2SU2Ju/1bfa26a3
Last edited by A_n_g_e_l_a; 15th Jun 2023 at 09:31.
-
It needs to be democratized.
Error in the certification....
There are more groups that need to be democratized, but these are more hidden.Last edited by Neurobcn; 10th Apr 2024 at 04:54.
-
GetWVKey had too many wrong keys, which forced me to reacquire new ones at the CDRM website.
Sorry to ask a stupid question, do keys expire? -
Not as far as I know . But I have heard of one network making changes. I think when Content Delivery Networks put something up they use Widevine tools to create the encrypted media. There is a time and cost penalty to this - so why would they choose to do it again unless something abnormal happens?
-
Then I don't understand, I tried a 45 episode series last night and got the key in the database, only to find out when I decrypted it that all the secret keys were wrong and I had to go back to the CDRM website to get a new key.
-
Which sort of response did you get for the database search. Getwvkeys gives { --key: xxxxxxxxxx
xxxxxx } and cdrm is just xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx .
I fear that the integrity of the getwvkeys database is poor. I found, before getting kicked out of getwvkeys Discord, that sometimes cached results failed and needed a fresh non-cached fetch.
I had hoped faulty data would not be too much of a problem. Perhaps this is why getwvkeys refuse to give me an official copy? - Maybe they know a lot of cached data is suspect? -
It is not a question of "--key", kid:key, the kid of new and old secret keys is the same, the difference is the key.
Similar Threads
-
sqlite3 database
By Newbiect in forum Video Streaming DownloadingReplies: 4Last Post: 14th Jul 2023, 06:56 -
How can I found the keys of a specific website DRM WindVine
By $_$ in forum Video Streaming DownloadingReplies: 1Last Post: 30th May 2021, 02:04 -
EAC Database
By kirkmc in forum AudioReplies: 0Last Post: 25th May 2021, 00:25 -
movie database on HD to watch on tv
By tonedeaf2 in forum Newbie / General discussionsReplies: 7Last Post: 11th Apr 2021, 09:25 -
How can I get a great software tool added to the VH database search?
By crjackson in forum MacReplies: 2Last Post: 14th Sep 2019, 17:19