如何快速找到中本聰寶藏1.2.3號鑰匙

圖片發自簡書App

作者:John Cantrell

今天(2019年4月16日中午),發現關鍵#1的第一個主要線索將在幾個城市發布。在這些位置找到了帶有'orbital'字樣的QR碼,如下所示:(https://imgur.com/a/6rNmz7T)。如果您使用手機閱讀二維碼,您將被引導至此網址:https://satoshistreasure.xyz/k1,在此URL處,系統會提示您輸入密碼來解密第一個分片。一個明顯的第一個猜測是從QR碼嘗試“軌道”這個詞。這并不令人驚訝!這會顯示一個祝賀頁面,并顯示第一個關鍵分片:ST-0001-a36e904f9431ff6b18079881a20af2b3403b86b4a6bace5f3a6a47e945b95cce937c415bedaad6c86bb86b59f0b1d137442537a8。

現在,我們應該等到4月17日才能從其他城市獲得關鍵#2和#3的線索,但這并不能阻止我利用我們擁有的所有新信息。幾年前所有那段時間“玩”notpron(http://notpron.org/notpron/)都會幫助我。

我注意到的第一件事是k1在URL和快速檢查,看看是否k2,k3以及k4存在的。我很高興地看到,無論是k2與k3已經存在,但k4(和任何更高)似乎沒有尚未存在。

我注意到的下一件事就是它k2和k3兩個完全相同的設置k1,它要求我輸入密碼來“解密頁面”。我認為這是一個奇怪的措辭,因為我期望驗證發生在服務器端。我檢查了頁面源代碼,發現顯示碎片的實際恭喜頁面包含在源代碼中(雖然通過密碼加密)。

提交密碼時運行的源代碼如下所示:

略(……)

讓我為你打破這個:

document.getElementById('staticrypt-form').addEventListener('submit', function(e) {});

此行正在設置提交解密表單時的事件偵聽器。這意味著當提交表單時,將運行函數(e){}內定義的任何代碼。

e.preventDefault();

此行并不重要,但只是阻止瀏覽器在提交表單時執行默認操作。如果未包含此頁面,則頁面可能會刷新,并且不會繼續運行下面的代碼。

var passphrase = document.getElementById('staticrypt-password').value;

此行將您在密碼框中鍵入的值讀入名為passphrase的變量中。在我們的例子中,這將保持字符串“軌道”(假設這是你輸入的)。

encryptedMsg = '13ea059e2490f645da28f5f1529ca...'

我截斷了這個,因為它是一個非常長的字符串,但你可以看到上面的完整字符串。這是存儲完整加密的密碼和congrat頁面的HTML。

encryptedHMAC = encryptedMsg.substring(0, 64);

這告訴我們上面的encryptedMsg的前64個字符代表加密的密碼短語。這將用于檢查我們的密碼是否正確。

encryptedHTML = encryptedMsg.substring(64);

這告訴我們加密消息的其余部分是包含分片的congrats頁面的實際HTML!

decryptedHMAC=CryptoJS.HmacSHA256(encryptedHTML, CryptoJS.SHA256(passphrase).toString()).toString();

在這里,我們看到我所謂的“加密密碼短語”實際上是使用sha256(密碼短語)加密的html的HMACSHA256摘要。基本上,如果我們的密碼是正確的,那么解密的HMAC將等于encryptedHMAC。

if (decryptedHMAC !== encryptedHMAC) {

alert('Bad passphrase!');

return;

}

在這里,我們可以查看您提供的密碼是否能夠生成encryptedHMAC。如果密碼不正確,那么該頁面將顯示錯誤“Bad passphrase!”

var plainHTML = CryptoJS.AES.decrypt(encryptedHTML, passphrase).toString(CryptoJS.enc.Utf8);

document.write(plainHTML);

document.close();

如果密碼是正確的,那么它使用它來解密encryptedHTML,然后用新的HTML覆蓋頁面,這樣你就可以看到恭喜頁面!

在我看到這個源代碼之后,我意識到因為檢查密碼是否正確是在本地完成的,我可以使用字典攻擊來強制執行此操作。我還假設k2和k3的密碼短語是英語單詞。

我快速搜索可下載的字典英文單詞列表并打開一個新的ruby腳本。幾分鐘后,我有了這個腳本:……

當我在幾秒鐘內運行這個scrypt它輸出:

Passphrase for K3 is blackhole

Passphrase for K2 is cosmos

Passphrase for K1 is orbital

我感到震驚!那很簡單 :) 。

我檢查了每個密碼k2和k3解密的網頁,以確保它們是正確的。

希望這有助于您了解我如何在幾分鐘內獲得三個關鍵分片。

請關注作者在twitter @ johncantrell97 。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容