Wallet

如何從 protobuf 錢包中提取我的私鑰?

  • July 25, 2019

最近對 Andreas Schildbach 的 Android 比特幣客戶端的更改刪除了導出私鑰的選項。這已被備份整個錢包的選項所取代。不幸的是,Schildbach 客戶端的錢包數據以一種稱為 protobuf 的神秘格式儲存(大概是 Protocol Buffers 的縮寫)。Schildbach 客戶端可以從其 AES 編碼的備份文件中恢復 protobuf 錢包。但是 protobuf 錢包不能導入到不同的比特幣客戶端,例如比特幣核心 (QT) 客戶端。

為了強調,我知道解碼 Schildbach 的客戶端創建的備份的命令行方法,過去允許私鑰以 AES 加密格式保存到 /sdcard/Download。以下命令過去可以生成我的比特幣私鑰的人類可讀副本:

openssl enc -d -aes-256-cbc -a -in encrypted-wallet-keys -out decrypted-wallet-keys

這不再有效。以下命令改為生成非 AES 加密的 protobuf 錢包。

openssl enc -d -aes-256-cbc -a -in bitcoin-wallet-backup-2014-07-19 -out bitcoin-wallet-backup-2014-07-19-decrypted

-out 文件不是我的私鑰的 ASCII 副本,而是 Schildbach 比特幣客戶端內部使用的 protobuf 錢包的副本(位於 /data/data/de.schildbach.wallet/files/wallet-protobuf)。

由於“當您是開發人員時,這很容易”對大多數人來說可能還不夠,這裡是從 Android 比特幣錢包到在 Electrum 中導入私鑰的完整步驟,這對我有用(終於……) . 此解決方案使用 bitcoinj。使用 .proto 定義文件並在 Python 中打開錢包的方法也經過了測試,但似乎更容易出錯。

要求:

  • 新版本的 Android 比特幣錢包(據我所知,一些舊版本不允許備份)。
  • Bash shell:使用 Windows Bash 進行測試,但應該可以在原生 Linux 或 OS X 上執行。基礎知識(cd等)會有所幫助。
  • 在我的系統上,需要 maven 和 openjfx。安裝它們sudo apt-get install mavensudo apt-get install openjfx
  • 電子(目前:2.9.2)

一步步:

  1. 備份:保存加密錢包(安全 -> 備份錢包)並將備份文件移動到您的電腦(例如通過文件傳輸、Dropbox、電子郵件…)。
  2. 解密:打開 bash,移動到您的數據目錄並按openssl enc -d -aes-256-cbc -a -in bitcoin-wallet-backup > bitcoin_decrypted上述方式使用,這將要求輸入加密密碼。
  3. 安裝bitcoinj:
  • git clone https://github.com/bitcoinj/bitcoinj.git
  • cd bitcoinj
  • git fetch --all
  • git checkout v0.14.4
  • mvn install(在 Windows bash 中的 GroupTest 失敗,但仍然有效)
  • cd tools
  • ./wallet-tool
  1. 載入解密的錢包並轉儲私鑰:

./wallet-tool dump --wallet=/mnt/d/path/to/wallet/bitcoin_decrypted --dump-privkeys > /mnt/d/path/to/wallet/bitcoin_decrypted_dump.

請注意,這會將未加密的私鑰保存在文件“bitcoin_decrypted_dump”中。將此文件移動到保存位置(例如 TrueCrypt/VeraCrypt 容器)或在使用後將其刪除。

  1. 使用 Electrum 中的私鑰創建一個新錢包:文件 - 新建/恢復 - 文件名 - ‘標準錢包’ - ‘使用公鑰或私鑰’,然後列出轉儲文件中的 ‘priv WIF’ 密鑰。

關於使用 Electrum 和 Electron Cash 處理 BTC/BCH 問題,請閱讀 Electrum 網頁上的說明。

如果有任何問題,請隨時提問。祝你好運!

資料來源:

  • 這一頁
  • <https://github.com/bitcoin-wallet/bitcoin-wallet/blob/master/wallet/README.recover.md>

我試圖轉儲私鑰,但我做不到。使用錢包工具,我獲得了一個包含公鑰、地址、一些其他資訊以及以下文字的文本文件:“種子被加密”。

所以我使用這個 phyton 腳本來獲取種子,並且它顯然有效。

然後我使用這個獨立頁面:https ://raw.githubusercontent.com/iancoleman/bip39/master/bip39-standalone.html獲取私鑰以導入 BCH 錢包。

我只“發現”了我預期的 BCH 的 85%(BTC 預分叉)。怎麼可能?除了與上次使用的地址關聯的密鑰之外,我嘗試導入許多密鑰……


更新:我想通了。我必須在上面連結的獨立頁面上用作派生路徑m/0'/1(使用派生路徑 BIP32)。一些 BTC 在這種地址上。

引用自:https://bitcoin.stackexchange.com/questions/29586