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.

