前往
大廳
主題

簡單的Clearkey DRM解密方式

路人乙 | 2024-06-13 05:05:08 | 巴幣 0 | 人氣 440

哈嚕~進來看這篇文章的你,如果不是想增廣見聞、學習新知,就是想多了解一些好用來壞壞。

喔!對了!如果你一點功課都不願意做,也都不去了解,只是寄信來想著要從我這裡騙取金鑰,那不用費心了,假借討論方法結果一問三不知我會直接黑單謝謝不聯絡。

基於之前一篇「串流媒體 DASH mpd 解鎖測試網站的加密影片 — ( END )」下方的留言沒想到會有人來詢問DMM的破解方式...很抱歉愛莫能助

上次使用去用DMM已經是很久以前了,沒想到現在是用Clearkey來進行保護。畢竟要用還要用VPN,

對我來說實在是過於麻煩。

其實我對這個加密的了解基本上不多,我只知道他是一項免費的服務,以及他的解密金鑰是直接顯示在開發者工具( DevTools)內的。

目前我自己也遇到了使用Clearkey來保護的平台,最讓我煩惱的是...我無法解密音源...我能看畫面卻沒有聲音...如果對這方面有所了解的希望可以來幫幫我...

好的廢話太多~進入正題!

這次我一樣找了一個範例網站,有興趣者可以跟著本文章自己嘗試一下唷!


你可以看到這個網站下方有放出程式碼,這裡面當然也包含著金鑰,但我會當沒看到,那我們開始吧!

開啟開發者工具後,切換到網頁的標籤,就可以看到「Manifest_1080p_ClearKey.mpd」出現在眼前,看到mpd那就可以確認是DASH。


那麼我們切換到主控台來尋找我們所需要的PSSH。


嗯?怎麼不是平常熟悉的格式?你問我為什麼?我怎麼知道,我還希望有人來告訴我呢。

但不要急!不要慌!還記得我之前說過PSSH都是使用Baese64編碼而成的嗎?不記得?現在給我記住!
那麼我們就把這段

eyJrZXlzIjpbeyJrdHkiOiJvY3QiLCJhbGciOiJBMTI4S1ciLCJraWQiOiJuclFGRGVSTFNBS1RMaWZYVUlQaVpnIiwiayI6IkZtWTB4bldDUENOYVNwUkctdFV1VFEifV19

丟去解碼吧!


好的!解碼後出現了這樣的一段明文

{"keys":[{"kty":"oct","alg":"A128KW","kid":"nrQFDeRLSAKTLifXUIPiZg","k":"FmY0xnWCPCNaSpRG-tUuTQ"}]}

你看不懂?沒關係,我也是。

但可以從裡面的一些東西推斷出一些東西,像是"A128KW"、"kid"和"k",那麼我想這三個詞大概分別是"AES-128"、"Key ID(KID)"和"Key"。

看到這邊有沒有發現什麼?對!我們要的金鑰出現了!接下來讓我們整理一下~

KID:nrQFDeRLSAKTLifXUIPiZg
Key:FmY0xnWCPCNaSpRG-tUuTQ

還記得金鑰的格式嗎?不記得?沒關係。我不會在這邊複習的,自己往前面翻。
那麼既然我們已經得到了我們要的東西,但這並不是正確的格式,我們還必須把這些轉換成16進制(Hex)
找一個網頁工具來轉換一下


啊勒?!為什麼?來讓我們查一下

由於二進位資料是依照8位元一組進行傳輸,因此Base64依照6位元一組切分的二進位資料必須是24位元的倍數(6和8的最小公倍數)。 24位元就是3個位元組,若原位元組序列資料長度不是3的倍數時且剩下1個輸入數據,則在編碼結果後加2個=;若剩下2個輸入數據,則在編碼結果後加1個=。

原來呀~長知識了!那麼事不宜遲!算一下總共幾個字...22個字!那麼要加上兩個==


成功拉!再來!繼續!我先算一下...一樣是22個字!那我再補上兩個==


為!什!麼!再來查查...

Base64編碼是使用64個可列印ASCII字元(A-Z、a-z、0-9、+、/)將任意位元組序列資料編碼成ASCII字串,另有「=」符號用作後綴用途。

我懂了!那麼我就把句子內的 " - " 轉換成 " + "


成功拉!那麼接下來就是...

DO~RE~MI~SO~

KID 以及 KEY 進行轉換後得到的就是

KID:9eb4050de44b4802932e27d75083e266
Key:166634c675823c235a4a9446fad52e4d

再稍微整理一下格式

--key 9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d

這就是我們所需要的金鑰拉!費盡千辛萬苦呢!那麼各位是不是學會拉~有學會~很棒~

我當初也以為我有學會...直到我踢到鐵板...嗚嗚嗚嗚...

那麼有機會下次見~

創作回應

相關創作

更多創作