Erste Hilfe für verlorene Bitcoins

Lost key! Foto von Trevor King via flickr.com. Lizenz: Creative Commons

Wie rettet man Bitcoins, wenn man die Wallet-Datei gelöscht hat? Mit ein wenig Glück und den richtigen Tools kann man auch verloren geglaubte Schlüssel bergen.

Natürlich ist es besser, man kommt nicht in die Verlegenheit. Macht regelmäßig Sicherheitskopien der Wallet-Datei, am besten auf zwei USB-Sticks, druckt die privaten Schlüssel aus, mehrfach, und verstaut den Ausdruck an sicheren Orten. Klar. Aber, mal ehrlich – wenn es doch passiert ist, helfen solche Ratschläge bestenfalls, den Blutdruck noch weiter nach oben zu treiben. Was hingegen hilft wirklich?

Gelöscht sind Schlüssel schnell

Ich musste mich neulich unfreiwillig mit dem Thema beschäftigen. Als ich mit Pruning experimentierte, meine Blockchain kopierte, komprimierte und verschob, geschah es, dass plötzlich, nach einigem Hin und einigem Her, meine Wallet-Datei überschrieben worden war und ich entsetzt feststellte, dass die alte wallet.dat, in der hunderte von privaten Schlüsseln liegen, durch eine neue wallet.dat ersetzt war, in der gerade mal ein einziger Schlüssel steckt.

Natürlich habe ich eine Sicherheitskopie der wallet.dat. Aber die Sicherheitskopie ist mehr als einen Monat alt. Umpf. Wer weiß, wie der Client Transaktionen baut und was er mit dem Wechselgeld macht, versteht, wie ärgerlich das ist. Aufgrund der etwas unpraktischen Vorgehensweise des Client ist eine alte Sicherheitskopie nahezu wertlos. Andere Wallets wie Electrum lösen das viel besser.

Natürlich: Man sollte nach jeder Transaktion eine Sicherheitskopie machen. Am besten auf zwei USB-Sticks. Und erst recht sollte man das machen, wenn man im Begriff ist, mit der Wallet-Software herumzuexperimentieren. Aber, wie gesagt – solche Ratschläge helfen jetzt nicht weiter. Das Kind ist schon in den Brunnen gefallen, und anstatt einer Herde Menschen, die darüber diskutiert, dass man doch besser aufpassen sollte, brauchen wir jemanden, der in den Brunnen klettert und die Göre rausholt.

Die Dateien bergen

Ihr habt vermutlich schon mal gehört, dass man gelöschte Dateien wiederherstellen kann. Warum genau, weiß ich nicht. Aber es geht. Irgendwo auf der Festplatte stecken noch Spuren der gelöschten Dateien, und es gibt Programme, die diese Spuren finden und daraus wieder die Dateien rekonstruieren.

Nach einigen vergeblichen Versuchen mit verschiedenen Programmen bin ich bei PHotoRec gelandet. Dieses Programm durchsucht eine Festplatte und stellt alle gelöschten oder überschriebenen Dateien, die es findet, wieder her. Allerdings nur, wenn die Spuren ausreichend deutlich sind und, womit wir beim ersten Problem wären: wenn photorec das Dateiformat kennt. Wer eine wallet.dat sucht, hat Pech gehabt. PhotoRec kennt lediglich .wallet-Datein von Armory.

Zum Glück bin ich nicht der erste, der sich mit exakt diesem Problem beschäftigt. Nach einiger Recherche habe ich hier Instruktionen gefunden, wie man photorec beibringt, die .dat Dateien des Client zu erkennen. Man muss dazu in dem Verzeichnis, aus dem heraus das Programm startet, die Datei photorec.sig erstellen und in sie das folgende reinschreiben:

dat 0x0 0x00061561
dat 0x0 0x61150600
dat 0x0 0x00053162
dat 0x0 0x62310500
dat 0xc 0x00061561
dat 0xc 0x61150600
dat 0xc 0x00053162
dat 0xc 0x62310500
dat 0xc 0x00042253
dat 0xc 0x53220400
dat 0xc 0x00040988
dat 0xc 0x88090400

Nun kann man das Programm laufen lassen. Es schaufelt sich durch die ausgewählte Festplatte, wühlt und wühlt und wühlt, und nach ein paar Stunden hat es Dutzende oder Hunderte von Verzeichnissen erstellt, die Namen wie recup097 haben, und diese mit hunderten und tausenden von Dateien befüllt: txt-Dateien, die alle E-Mails enthalten, die ihr jemals gelöscht habt, .wav-Dateien, in denen jeder Song steckt, den ihr raubkopiert, .bmp-Dateien mit allen Bildern, die ihr geschossen habt – und auch .dat-Dateien, in denen, wie man jetzt hoffen darf, alle Schlüssel zu den Bitcoins sind.

Programme wie photorec beweisen, dass eine Festplatte viel weniger vergisst, als man denken mag.

Die Schlüssel extrahieren

Photorec birgt zwar die Dateien, lässt euch aber mit zwei Problemen allein: Erstens haben die Dateien ausschließlich Namen wie f1028364.dat, und zweiten erkennt der Client sie nicht als Wallet-Datei. Ich hatte nach der Rekonstruktion etwa 70 Dateien vom Typ .dat. Welche davon Schlüssel beinhalten und wie ich diese benutzen kann, wusste ich zunächst nicht.

Also habe ich weiter recherchiert. Dabei stieß ich auf das Programm pywallet, das private Schlüssel aus kaputten Wallet-Dateien bergen kann. Pywallet ist ein Wallet-Programm in der Programmiersprache python, das man installiert haben muss, um es zu bedienen. In der Kommandozeile kann man es anschließend starten, indem man eingibt „python pywallet.py“. Zumindest funktioniert das bei Linux so.

Die Befehlszeile, um private Schlüssel zu bergen, sah bei mir so aus:

python pywallet.py –recover –recov_size=500Gio –recov_datadir=Lauftwerk-oder-Dateipfad recov_outputdir=Verzeichnis-für-gerettete-Datei

recov_size meint die Größe der Dateien, die durchsucht werden, wobei Gio für Gigabyte steht. Recov_datadir ist der Pfad der zu durchsuchenden Datei. In meinem Fall war es nur möglich, einzelne Dateien oder – als Administrator – ganze Laufwerke zu durchsuchen. Verzeichnisse haben nicht funktioniert. Recov_outputdir meint das Verzeichnis, in dem am Ende der Operation eine neue wallet.dat mit den Schlüsseln gespeichert werden sollte. Dazu gleich mehr.

Nachdem man den korrekten Befehl eingegeben hat, wird man aufgefordert, ein Passwort für die neue Wallet-Datei einzugeben und anschließend alle möglichen Passwörter, mit denen man die alten, zu bergenden privaten Schlüssel gespeichert hat. Danach crawlt das Programm die Datei / das Laufwerk und sucht darin private Schlüssel.

Die Laufwerkssuche hat bei mir mehrere Stunden gedauert. Ich war ehrlich gesagt sehr gespannt und hatte die Hoffnung, dass am Ende alle Wallets, die ich ich jemals gebildet hatte, nun zu einer Super-Wallet-Datei verschmelzen. Nach einigen Stunden der Suche zeigte mir py-wallet an, dass es rund 1.600 Schlüssel gefunden hatte. Danach ging es aber nicht weiter. Tja.

Also versuchte ich es mit den einzelnen Dateien. Eine nach der anderen. Bereits in der zweiten Datei hatte ich eine Treffer: 365 Schlüssel. Pywallet exportierte diese in eine .dat-Datei. Ich nannte sie um (wallet.dat), kopierte sie in mein Bitcoin-Verzeichnis und startete hoffnungsfroh den Client.

Tja. Der Client mochte die Datei nicht. Fehlerhafte Wallet. Was nun? Ich hatte die Wallet-Dateien und pywallet bestätigte mir, dass sie private Schlüssel enthalten. Wie komme ich aber ran?

Meine Rettung war, dass pywallet vor dem Export in die Datei fragt, ob man die eingegebenen Passwörter testen will. Wenn man dies bestätigt, huschen die ganzen Adressen und Schlüssel über das Terminal. Ich wusste mir am Ende nicht anders zu helfen, als den output des Terminals zu loggen (mit „script output.txt“). Nachdem ich diese Prozedur mit den ganzen geborgenen .dat-Dateien durchgeführt hatte, hatte ich also rund 1.600 Adressen und Schlüssel in einer Text-Datei. Aufatmen, einen Freudensprung machen, nochmals Aufatmen. Das wichtigste ist geschafft: Wer die Schlüssel hat, hat auch die Bitcoins.

Mithilfe eines blockexplorers wie blockchain.info kann ich nun also, Adresse für Adresse, herausfinden, welcher private Schlüssel Bitcoins birgt. Eine mühselige Aufgabe, die aber den Charme einer Schatzsuche hat.

About Christoph Bergmann (822 Articles)
Das Bitcoinblog wird von bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Wenn Ihnen das Blog gefällt, freuen wir uns über Spenden an 1CL1QgiFcBXZKtYDUpipREsfaKFJHhNmpV. Jeder Satoshi wird dazu verwendet, um das Blog besser zu machen. Weitere Infos, wie Sie uns unterstützen können, finden Sie HIER. Gastbeiträge sind ebenfalls willkommen. Meinen öffentlichen PGP-Schlüssel sowie den Bitmessage-Schlüssel finden Sie HIER

10 Comments on Erste Hilfe für verlorene Bitcoins

  1. Immer an den Leitspruch denken:

    Daten die nicht gesichert sind, sind als gelöscht zubetrachten.

    Da hast ja noch einfach, wenn die HDD mit Truecrypt verschlüsselt ist, sieht es mau aus für Photorec, wird dann noch komplizierter.

    mfg

  2. Da ich nicht über solch technisches Backgroundwissen verfüge, ist mir Dein Artikel mehr “Warnung & Vorsorge”. Dir weiterhin viel Erfolg bei der Schatzsuche😉

  3. Nattydraddy // 14. March 2016 at 13:25 // Reply

    Wenn man (wie der Author) ein Posix-System verwendet, empfehle ich btrfs (B-Tree File System). Das hat Copy-on-write. Vor dem experimentieren mit neuen Dateien etc erstellt man einen Scheckpunkt. Wenn man dann wie Christoph Bergmann seine wallet.dat Datei mit einer neuen wallet.dat Datei überschriebt, kann man seine alte wallet.dat Datei aus der Dateisystemversion vor dem erstellten Scheckpunkt wieder holen.

  4. Du hast wirklich private Schlüssel in die blockchain.info-Suche eingegeben?

    • Nein, die Adressen. Das war wohl ein wenig widersprüchlich ausgedrückt. Die privaten Schlüssel sollte man tunlichst nirgendwo eingeben udn am besten nichtmal auf dem eigenen Rechner speichern.

      • Ich bin jetzt etwas verwirrt. Um in den Besitz der Bitcoin zu gelangen benötigt man die öffentlichen Adressen doch garnicht. Deswegen ist das andauernde sichern der Wallet doch unnötig. Die öffentlichen Adressen sind doch Wegwerfartikel – mit Kontoauszügen zu vergleichen.

      • Ja, aber anhand der Adressen kann man rausfinden, ob da noch Bitcoins drauf liegen.

        In der wallet.dat stehen die privaten Schlüssel + die Adressen. wenn man die Adressen in einen blockexplorer eingibt, erfährt man, ob die privaten Schlüssel wertvoll sind.

  5. eParanoid // 14. March 2016 at 20:58 // Reply

    Zwei Anmerkungen:

    (1) Wenn man gelöschte Dateien (unter Windows) wieder herstellen möchte – Programme, die das können, gibt es einige – dann sollte man tunlichst vermeiden, etwas auf die Platte zu schreiben, auf der die Dateien vorher lagen. Wenn es die Systemplatte war, wäre es am besten, von einer CD oder ähnlichem zu starten. Denn der Grund, aus dem man gelöschte Daten überhaupt auf der Platte finden kann, ist der, daß das Betriebssystem zunächst nur den Verzeichniseintrag der Datei löscht – oder als gelöscht markiert – und den Speicherbereich der Datei zum Beschreiben freigibt. Je mehr danach auf der Platte geschrieben wird, desto höher ist die Wahrscheinlichkeit, daß der alte Speicherbereich mit etwas Neuem beschrieben wird.

    (2) Tipp für alle, die solche Probleme vermeiden wollen, aber trotzdem zu bequem für häufige Backups sind: Pakt eure Bitcoins in Clients, die einen Backup des “Seeds” erlauben. Das ist die Basis der Zufallszahlen-Erzeugung, aus denen die Schlüssel generiert werden. Mit dem gleichen Seed werden auch immer wieder die gleichen Schlüssel erzeugt. Klingt kompliziert? Ist aber ganz einfach. Man muß nur einmal – z. B. nach der Installation bzw. Erzeugung der Wallet – ein Backup machen und kann damit alle zukünftig erzeugten Schlüssel wiederherstellen. Das geht beispielsweise bei Armory, Electrum oder sogar bei der Hardware-Wallet von Ledger Wallet. (Und wahrscheinlich noch bei einigen weiteren.) Die Schlüssel sind nicht unsicherer, als die des “alten” Bitcoin-Nodes.

  6. Hallo,
    wo wird die Wallet bzw die geheimen Schlüssel bei Electrum gespeichert?
    Da ich bei Neuinstallation und Angabe der “Seed”-Wörter meine Bitcoins wieder erhalte, nehme ich an, dass meine Schlüssel auf einem Server von Electrum gespeichert werden. Ist das so korrekt?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s