アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

ChromeのMetamaskを削除したらGoxしかけた

別のPCでMetamaskをChromeから削除したら、Profileの同期でmain walletとして使ってたMetamaskまで削除されてしまった。なんとか頑張ってリカバリーフレーズを復旧したのでその時の手順を忘れずに残しておく。

同様の現象で困った人向けに。ただ注意点として、復旧できるかどうかは五分五分な点に注意

リカバリーフレーズは必ず安全な方法でバックアップを取っておきましょう。

Metamask環境の説明

自分はChromeを複数のProfileで利用している。1つはプライベート用。1つは業務用だ。また、利用するPCも複数あり、自宅のプライベート用のWindowsマシンと会社支給の仕事用Mac Bookだ。

今回問題になったのは以下の2つの環境

  • 自宅用PC + ChromeのプライベートのProfileに追加したMetamask - 便宜上 Sub Walletと呼ぶ
  • 仕事用PC + ChromeのプライベートのProfileに追加したMetamask - 便宜上 Main Walletと呼ぶ。ほとんどの資産はこっちに入れていた。

2つのPCで利用しているChromeのProfileはもちろん同期している。そのため、拡張機能のインストール状況なども同期される状態である。

Goxまでの経緯

ちょっと実験をしたくて自宅用PCのChromeからMetamaskを削除し、その後、他で作成したシークレットリカバリーを使ってWalletを作成した。つまりSub Walletを完全に削除して新規のWalletを作成した。

その結果、Sub Wallet削除時にChromeのProfile同期によって、仕事用PCにあるMain Walletも削除されてしまった。

幸い、Main Walletが削除されたことはすぐに(数分後程度)気づいた。ので、まずはMain Walletのリカバリーフレーズ(つまりはmnemonic)をどこかに保存してないか探してみたけど、一向に見当たらなかった。。。

なお、マスターキーや秘密鍵の情報はもちろんChromeの同期機能では同期されないので、この時点でGoxがほぼ確定。

ChromeのローカルデータからMetamaskのリカバリーフレーズを回復する方法

MetamaskはChrome拡張機能として動いているので、もしかしたらChromeのシステムファイルなどに情報が残ってるのでは?と思い、Chromeのシステムファイルなどから復元させる方法がないか検索してみた。

検索の結果Metamask公式の以下のページがヒットした。
support.metamask.io


どうやらleveldbのデータベースファイルに暗号化されてリカバリーフレーズが記録されているのでMetamaskのロック解除パスワードを覚えていたら復元できそう。

ということでトライしてみた。

上記サイトには注意事項も丁寧に記載しているので、もし同じように試してみようとしている人は必ず熟読してから作業開始すること。

leveldbのファイルを探す

上記サイトにある通り、Chromeのシステムファイルからリカバリーフレーズが保存されたファイルを探す必要がある。

profiles

ChromeをProfileを切り替えながら使ってるので、該当場所を見たところ9このフォルダが作成されていた。仕方ないのでこの中からしらみ潰しに探してみる。

結果として以下のフォルダにリカバリーフレーズが記載しているデータベースファイルが見つかった。

~/Library/Application Support/Google/Chrome/Profile 1/Local Storage/leveldb 

パスが公式とは異なっていたので結構時間がかかった。
Chromeのバージョンは以下。

バージョン: 130.0.6723.70(Official Build) (x86_64)

公式の手順にもある通り、ファイル名だけでは判別不可能なので、見つかったleveldbのファイルを片っ端からVault Decryptorにつっこんで探した。
Vault情報が格納されたファイルだと以下のようにチェックマークがつくのでわかりやすい。

Vault Decripter Correct File

今回は最初に見つけたVault情報のデータベースファイルで復元したかったMain Walletのリカバリーフレーズを取得できた。

まとめ

今回はたまたま以下の条件が全部満たせたので運良く復元できた。

  • Main Walletが削除されたことを削除された後すぐに気づいた(5分後ぐらい)。
  • Main Walletが削除されてからPCやChromeを再起動してなかった。
  • Metamaskのパスワードは覚えていた(Vaultファイルからリカバリーフレーズを復元時に必要)

基本的に、ChromeからMetamaskが削除された時点でこれらのDBファイルは削除されていてもおかしくない。どのタイミングで削除されるかはおそらくまちまちなので、今回残っていたのは本当に運が良かったとしか言いようがない。

最後に、リカバリーフレーズは必ず安全な方法でバックアップを取っておきましょう。