ログイン画面からプロファイルが消えてログイン出来ないけど、LevelDBファイルが残っている場合の秘密鍵サルベージ方法です。
流れは以下の通りです。
- LevelDBファイルから暗号化された秘密鍵を取得
- 復号のための生け贄になるプロファイルとアカウントをall版ウォレットで作成
- 生け贄アカウントデータに復元したいアカウントの暗号化秘密鍵を移植
- all版ウォレットのアカウントから秘密鍵表示
ファイルが残っているか確認
プロファイルやアカウント情報は下記のフォルダのldbファイルまたはlogファイルに入ってます。ファイルがない場合は、残念ながら消えてしまっているので復元は不可能です。
C:\Users\<ユーザー名>\.symbol-desktop-wallet\Local Storage\leveldb
データのバックアップ
間違って削除したり編集したりしても大丈夫なように、.symbol-desktop-wallet
フォルダごとコピーしてバックアップしておきます。zipで圧縮しておくとアイコンも違うし間違って消したり編集したりすることが減ると思います。
秘密鍵のサルベージ
ldbファイルまたはlogファイルをテキストエディタで開きます。バイナリデータ(文字以外のデータ)も含まれるため、メモ帳ではなくサクラエディタなどが良いです。
ファイルを開いたら、復元したいアドレスを検索します。アドレスの少し後ろにencryptedPrivateKey
があるので、その値をコピーします。最後が=
の172文字です。
ここで、encryptedPrivateKey
がない場合も復元は不可能です。
場合によっては、文字と文字の間にスペース(実際はヌル文字)が入っていることがあるので、よく探してください。
ヌル文字は頑張って削除するか、サクラエディタを使用して置換する方法があります。
サクラエディタの方が簡単なのでそちらがお勧めです。
正規表現をオンにして、
置換前: \x{00}
置換後: (何も入力しない)
で置換すると綺麗になります。
秘密鍵の復号
ウォレットに復号する画面を追加しました。
ログイン画面の上部にある「Go to Tools」をクリック
「Encrypted PrivateKey」に172文字の暗号化された秘密鍵を入力。
「Password」に暗号化された秘密鍵のあったプロファイルのパスワードを入力。
「Decrypt!!」ボタンを押すと復号されます。
秘密鍵の復号(公式all版ウォレットを使用する場合)
ブラウザを使ってデータの編集が出来る、all版ウォレットで新しくプロファイルを作って、出来た新しいアカウントにさっきコピーした暗号化秘密鍵を移植して復号します。
all版ウォレットをダウンロードし、復号したいアカウントのプロファイルと同じパスワードでプロファイルを作成します。
プロファイルが出来たら、一旦ログアウトしてF12
を押しデベロッパーツールを起動します。
アプリケーションを選択し、左ペインからローカルストレージ>http://localhost:8080
を選択します。
右ペインにキーと値が表示されるので、キーからaccounts
を探します。
その値の文字列の中にあるencryptedPrivateKey
を先ほどコピーした値に変更します。
(文字数が多いので、テキストエディタに貼り付けて編集したほうがやりやすいと思います)
encryptedPrivateKey
の変更が終わったらログインします。
アカウントメニューを選択し、秘密鍵の表示ボタンを押してパスワードを入力すると、復元したいアドレスの秘密鍵が表示されるはずです。
(パスワードが異なるなどで失敗している場合は何も表示されないと思われます。)