我曾經擁有一個有錢的錢包,但現在無法再訪問它了。 別問我為什麼。這是一個長故事,還有一份保密協議... 有人不小心把錢發到那裡。 我已經超過一年沒有使用那個錢包了。我安全地存放我的種子,但不知怎麼的,我沒有那個特定地址的種子。 奇怪的是,我幾乎確定這只是用“創建帳戶”按鈕創建的普通 metamask 帳戶。 所以我決定全力偵查: 我檢查的第一件事是那個錢包是否曾經存在於我的電腦中。metamask 將其加密的錢包數據本地存儲在瀏覽器中,因此如果瀏覽器配置文件仍然存在,保險庫也可能仍然存在。 我進入了 chrome 的擴展存儲,提取了 metamask 數據庫文件。在這些文件中,有一個名為保險庫的加密對象。該保險庫包含 metamask 使用的種子和密鑰,但所有內容都用你的 metamask 密碼加密。 所以我提取了保險庫數據並解密了它。 metamask 使用的加密基本上是從你的密碼派生的密鑰(PBKDF2),用於解密保險庫有效負載(AES)。如果你仍然知道 metamask 密碼,你可以解密保險庫並恢復存儲的種子短語。 那部分實際上是有效的。 在解密保險庫後,我恢復了三個不同的種子短語,這些短語曾經存儲在那個 metamask 安裝中。 然後進入派生步驟。 metamask 不會單獨存儲每個以太坊地址。它使用一個種子短語並以確定性方式從中生成錢包,使用派生路徑(通常是 m/44'/60'/0'/0/n)。每次你點擊“創建帳戶”,metamask 只是增加索引並從同一種子派生下一個地址。 所以我寫了一個腳本,開始從這些種子派生地址。數以百計。 ...