Vor einiger Zeit habe ich die Bitcoin-Android-App installiert und 5 BTC darauf bewegt. Schneller Vorlauf bis jetzt, neues Telefon, neues ROM, und die App scheint überhaupt nicht bereit zu sein, ihre Blockchain zu aktualisieren, was bedeutet, dass ich keine Möglichkeit habe, meine BTCs woanders hin zu verschieben.
Wenn man sich die Quelle ansieht, basiert sie auf einer frühen Version von BitcoinJ, bei der die Wallet-Datei im Wesentlichen eine serialisierte Wallet-Klasse ist.
Ein Blick in die Wallet-Datei selbst ist nicht allzu freundlich, obwohl ich sicher bin, dass der private Schlüssel irgendwo in einer relativ einfachen Form darin ist.
Damit bleiben mir folgende Möglichkeiten:
Schreiben Sie eine kleine Java-App, die mit derselben Version von BitcoinJ verknüpft ist, laden Sie die Wallet-Datei, holen Sie sich den privaten Schlüssel und drucken Sie ihn aus.
Schreiben Sie ein wirklich dummes Skript, das jede 32-Byte-Sequenz aus der Wallet-Datei extrahiert, behandeln Sie es als privaten Schlüssel, ordnen Sie es einem öffentlichen Schlüssel zu, überprüfen Sie blockexplorer.com auf alle damit verbundenen Aktivitäten. Oder importieren Sie einfach jede dieser Sequenzen in einen Bitcoin-Client und lassen Sie es leiden.
Bevor ich mich auf die Suche nach fünf Bitcoins mache, gibt es da draußen bereits etwas, das BitcoinJ-Wallet-Dateien parsen und Schlüssel daraus exportieren kann?
Ich habe vor einiger Zeit eine ausführliche Antwort darauf geschrieben. Im Wesentlichen müssen Sie Ihr Telefon rooten und die Wallet-Datei mit apd extrahieren.
Nachdem Sie das erhalten haben, können Sie es entschlüsseln, indem Sie in der serialisierten Brieftasche mit einem angehängten Java-Debugger nach einer ECKey-Referenz suchen. Sobald Sie den privaten Schlüssel haben, können Sie ihn einfach an MtGox übergeben, das die Entschlüsselung für Sie durchführt, und dann können Sie die Bitcoins übertragen, wo immer Sie möchten.
Außerdem enthält das BitCoinJ-Projekt mehrere nützliche Beispielwerkzeuge im Quellbaum. Vielleicht hilft Ihnen die Verwendung eines davon bei der Deserialisierung.
Ich würde zuerst Option 1 ausprobieren, wenn Sie die richtige Version der Bibliothek finden können. Ich wäre bereit, ein Allzweck-Tool dafür zu entwickeln, habe aber kein Android-Telefon. Gibt es eine Möglichkeit, eine neue, leere Brieftasche zu erstellen und eine Kopie zusammen mit einer oder zwei entsprechenden Bitcoin-Adressen irgendwo online zu stellen?
Wenn Sie Option 2 versuchen, kennen Sie wahrscheinlich mindestens eine der Adressen in der Brieftasche und müssten daher nicht für jede Vermutung den Blockexplorer drücken. Sie würden erwarten, dass die privaten Schlüssel gleichmäßig über die Brieftasche verteilt sind. Wenn Sie also einige gefunden haben, können Sie klügere Vermutungen darüber anstellen, wo sich der Rest befindet.
[Veraltete Antwort, siehe unten]
Als Update: aktuelle Versionen der Bitcoin-App haben eine „Back up Keys“-Funktion. Dadurch wird eine Sicherungskopie aller Schlüssel in der Brieftasche in eine Datei mit dem Namen bitcoin-wallet-keys-YYYY-MM-DD
(mit dem aktuellen Datum) im Speicher des Telefons geschrieben, die Sie dann kopieren oder übertragen können, wohin Sie möchten. Die Datei wird mit einem von Ihnen angegebenen Passwort verschlüsselt; Es kann manuell mit OpenSSL entschlüsselt werden, indem es ausgeführt wird
openssl enc -d -aes-256-cbc -a -in bitcoin-wallet-keys-YYYY-MM-DD
Nach der Entschlüsselung ist die Datei nur eine Liste privater Schlüssel, einer pro Zeile, im komprimierten Standardformat Base 58 (beginnend mit K). Sie können diese Schlüssel in eine andere Brieftasche importieren. In bitcoin-qt würden Sie den importprivkey
Konsolenbefehl verwenden.
Weiteres Update : Ab Bitcoin Wallet 3.53 existiert das oben beschriebene Feature „Back Up Keys“ offenbar nicht mehr.
org.bitcoin.production
), aber der Rest ist binär.Safety
einen Menüeintrag.Dieses Skript scheint die Arbeit zu erledigen
https://github.com/jleni/wallet-decrypt
Sie müssen nur ein Backup erstellen und es gibt Ihnen eine Eselsbrücke zurück, die Sie in Elektrum oder Elektrum-Cash verwenden können.
o0'.
BinaryMage
Metall
Sehr unregelmäßig