Datenwiederherstellung Wallet: Tiefenscan, Suche Wallet-Daten und Signaturen in gelöschten Daten oder nach Formatierung

Teil 1

Szenario: Eine wallet.dat (oder deren Reste) wird auf einer alten Festplatte vermutet, die HDD wurde zwischenzeitlich mal formatiert oder gelöscht. Alles ist schon länger her. Es geht um keine hohen Werte, es besteht nur eine geringe Chance, ein Datenwiederherstellungslabor erscheint deshalb zu teuer. Eine typische forensische Software ist nicht spezialisiert genug, um Wallet-Signaturen als solche zu erkennen und dann entsprechend auszuwerten bzw. aufzubereiten.

Lösungsversuch: Tiefenscan des Laufwerks, Wallet-Suche und Wiederherstellung unter Verwendung von Pywallet-Skript (pywallet.py, jackjack-jj Version). Installation mit python 2.7.2 unter Windows..

Anleitung nach Aufarbeitung vieler Schwierigkeiten durch veraltete fragmentierte Infos, veraltetes Python, Inkompatibilitäten, vielem Haareraufen usw.

Achtung: Nach Aussagen aus der Datenforensik besteht die Gefahr, dass beim Tiefenscan (bei fehlerhaften Sektoren/Blocks) Daten vollständig unbrauchbar werden können. Zur Vermeidung dessen kann manche Forensik-Software zuerst unproblematische Bereiche und danach Daten aus Fehlerbereichen auslesen, um so möglichst viele Daten zu retten und ein Image (1:1 Klon) der gesamten Festplatte (auch gelöschter o. beschädigter Daten) zu erzeugen, das ist also KEIN normales Image einer HDD, wie die meisten das kennen. Nachfolgend kann darin eine gezielte Suche nach gewünschten Dateien und Signaturen durchgeführt werden. Wer sehr wichtige Daten hat oder sicher weiß, dass die Wallet auf dieser Festplatte war, sollte Fachlabore beauftragen, was je nach Schadenslage und Labor ab ca. 200€ und (sehr deutlich) mehr kosten kann.

Hier wird jedoch nur mit pywallet gearbeitet, da für mich bis jetzt ungeklärt ist, wie gut so ein Image eventuell vorhandene Reste abbildet und die HDD keine Mängel hat. Wer das Verlustrisiko in Kauf nehmen will, sollte mindestens als Voraussetzung beachten, dass die Festplatte/Laufwerk keinen Defekt hat. Aber selbst dann könnte ein Datenverlust auftreten. Ich übernehme keinerlei Haftung für Schaden oder Verlust, falls das jemand nachmacht. Alles auf eigene Gefahr und ohne Gewähr.

A. Welche Ressourcen und Pakete werden zwingend benötigt?

B. Installation python 2.7.*, pywallet.py und das zusätzlich(!) benötigte Installations-Tool pip

C. Installation weiterer Pakete, da das Ausführen von pip wegen veralteter oder fehlender Bibliotheken zu Fehlern bspw. SSL-Fehlern führt.

Bitte Reihenfolge der Anleitung unbedingt beachten. Wichtig ist auch die richtige Reihenfolge der Pakete besonders Abschnitt C.

Zu A.

Auflistung mehrerer benötigter python-Pakete und -Bibliotheken. Es ist wichtig, die richtigen Versionen zu laden. Aufgeführte sind die neusten, die noch mit Version 2.7 kompatibel sind. Downloadhinweise und Installation siehe später bei B. und C.

Python 2.7.2 Win 64bit

pywallet.py (jackjack-jj Version)

get_pip_py-0.1.0.tar.gz

pip-20.3.4-py2.py3-none-any.whl

setuptools-44.1.1-py2.py3-none-any.whl

wheel-0.37.1-py2.py3-none-any.whl

asn1crypto-1.5.1-py2.py3-none-any.whl

enum34-1.1.10-py2-none-any.whl

idna-2.10-py2.py3-none-any.whl

six-1.17.0-py2.py3-none-any.whl

ipaddress-1.0.23-py2.py3-none-any.whl

pycparser-2.21-py2.py3-none-any.whl

cffi-1.15.1-cp27-cp27m-win_amd64.whl

cryptography-3.3.2-cp27-cp27m-win_amd64.whl

pyOpenSSL-21.0.0-py2.py3-none-any.whl

pycryptodome-3.21.0-cp27-cp27m-win_amd64.whl

berkleydb

Zu B.

pywallet im aktuellen Zustand scheint nur wirklich mit python 2.7.* funktional daher wird Version 2.7.2 installiert.

  • Downloads immer nur aus sicheren Quellen!

  • Download von python 2.7.2 für Windows 64bit bei python.org und Default-Installation auf deinem PC

  • Download pywallet.py (jackjack-jj Version) von github.com. Entpacke diese auf C:

  • Bei Installation von Python 2.7.* werden Systemvariablen nicht automatisch gesetzt. Überprüfen und setzen Sie diese unter System > erweiterte Systemeinstellungen (bitte im WWW nachforschen falls hier Wissenslücke besteht), diese müssen auf Ihren Python-Installationsordner und Ihren Python-Skriptordner zeigen. Der Eintrag für die Systemvariablen ist „Path“ und seine Werte sind „C:\Python27“ und "C:\Python27\Scripts" Bei falschen Einträgen findet das Betriebssystem die Python-Befehle (Skripte) nicht. Frühere oder andere python-Installation können diese außerdem verändern, dies sollte überprüft bzw. korrigiert werden.

  • Gehen Sie zu pypi.org und laden Sie get-pip, pip, setuptols, wheel in den unten aufgelisten Versionen herunter. Diese sind die Aktuellsten für Python-Version 2.7.* Win64 bit. Gegebenfalls Suche und Versionshistorie nutzen.

get_pip_py-0.1.0.tar.gz

pip-20.3.4-py2.py3-none-any.whl

setuptools-44.1.1-py2.py3-none-any.whl

wheel-0.37.1-py2.py3-none-any.whl

  • Kopieren alle vier in einen Ordner, zum Beispiel c:\Users/Jeremy/mydirectory/

  • extrahiere get-pip.py aus get_pip_py-0.1.0.tar.gz in c:\Users/Jeremy/mydirectory/

  • shift + right click irgendwo im leeren Raum des Ordners mydirectory und starte Power Shell über das Menü oder gehe in diesen Ordner durch Eingabe in der Kommandozeile
    cd c:\Users/Jeremy/mydirectory/
    drücke dann die Eingabetaste. Bitte Eingabe an individuelle Ordnersituation anpassen.

  • In der Kommandzeile eingeben und danach die Eingabetaste:

python get-pip.py „pip-20.3.4-py2.py3-none-any.whl“ „setuptools-44.1.1-py2.py3-none-any.whl“ „wheel-0.37.1-py2.py3-none-any.whl“ --index-url http://pypi.python.org/simple/ --trusted-host pypi.python.org --trusted-host files.pythonhosted.org

  • Überprüfe, ob pip erfolgreich installiert wurde, gib den Befehl pip --version ein, um die Pip-Version anzuzeigen.
    Hinweis: falls die Kommandozeile zwischendurch geschlossen wurde, muß wieder in den richtigen Ordner gewechselt werden.

  • Ein Versuch inkompatible Versionen zu installieren, schlägt in aller Regel mit Fehlermeldungen fehl.

  • Wird pip nun in dieser Phase ausgeführt, werden Fehler zurückgemeldet, z.B. SSL-Fehler. Daher müssen weitere Pakete installiert werden. Siehe C.

Zu C.

Gehe zu pypi.org und lade asn1crypto, enum34, idna, six, ipaddress, pycparser, cffi, cryptography, pyOpenSSL, pycryptodome(NICHT pycryptodomex) auf pypi.org herunter. Die Installation muss zwingend in der Reihenfolge, wie unten aufgelistet, erfolgen.

Kompatible Versionen für Python 2.7.2 Windows 64 Bit:

asn1crypto-1.5.1-py2.py3-none-any.whl

enum34-1.1.10-py2-none-any.whl

idna-2.10-py2.py3-none-any.whl

six-1.17.0-py2.py3-none-any.whl

ipaddress-1.0.23-py2.py3-none-any.whl

pycparser-2.21-py2.py3-none-any.whl

cffi-1.15.1-cp27-cp27m-win_amd64.whl

cryptography-3.3.2-cp27-cp27m-win_amd64.whl

pyOpenSSL-21.0.0-py2.py3-none-any.whl

pycryptodome-3.21.0-cp27-cp27m-win_amd64.whl

Diese Dateien in denselben Ordner kopieren, z.B. c:\Users/Jeremy/mySecondDirectory. Gib in der Kommandozeile für das erste Paket ein pip install --user --no-index „c:\Users/Jeremy/mySecondDirectory/asn1crypto-1.5.1-py2.py3-none-any.whl“. Und drücke die Eingabetaste. Wiederholen dies für jedes Paket, ersetze dabei den Paketnamen im Pfad. Dein korrekter Pfad ist natürlich erforderlich. Beachte bitte forward und backward slash im Pfad, \ oder /

Jetzt sollten pip und pywallet.py ausführbar sein. Hilfe, Funktionen und etwas Erklärungen bekommst du durch Eingabe in der Kommandozeile python pywallet.py -help

Wallets sind im berkleydb-Format angelegt. Installiere daher noch berkleydb durch Ausführen des Befehls in der Kommandozeile pip install berkleydb

Jetzt kannst du python pywallet.py [OPTIONS] vollständig ausführen.

Lege einen Ausgabeordner an, hier z.B N:\MyFolder. Die Eingabe python pywallet.py --recover --recov_device M: --recov_size=512Gio --recov_outputdir N:\MyFolder startet den Tiefenscanprozess, dabei muss eine Passphrase festgelegt werden, um die Ausgabe-Wallet zu verschlüsseln. Die Eingabe der Phrase erfolgt blind, am besten diese auch notieren. Danach können Passphrasen (falls bekannt) für verschlüsselte Keys eingegeben werden. Das kann mit der Eingabetaste auch übersprungen werden.

Am Ende des Scans wird in der Kommandozeile die Anzahl der gefundenen Keys angezeigt und Dateien in z.B. recov_outputdir=N:\MyFolder geschrieben. Dieses Ausgabeverzeichnis muss vorher erstellt worden sein und darf auf keinen Fall die untersuchte Platte sein, sonst könnten potentiell wichtige Daten überschrieben/beschädigt werden. --recov_device gibt den Suchbereich an (z.B. Pfad zum Festplattenimage oder zu durchsuchende Festplatte). Gib die Größe des Suchbereichs (z.B. Dateigröße oder Festplattengröße) unter --recov_size an, wird diese zu klein gewählt, wird nicht alles durchsucht.

Die ausgegebene wallet.dat kann dann in eine Wallet eingelesen werden z.B. Bitcoin Core. Nicht alle Wallets sind dabei gleichgut.

Ich hoffe, ich konnte euch einen Grundstock an Informationen an die Hand geben. Euch viel Glück Euch beim Wiederfinden! War mir leider nicht vergönnt …

Leider wird die Formatierung meine originalen Textes von der Foren-Software nicht übernommen, darunter leidet die Lesbarkeit.

1 „Gefällt mir“

Oh das ist sehr technisch und sehr lang. Da wirst du nicht viele Leute finden die dazu was sagen können.

Hast natürlich recht, doch wenn der Leidensdruck groß genug ist, steigt die Lesebereitschaft. Diese Infos aus dem Internetz sinnvoll zusammenzutragen dürfte locker 20mal mehr Zeit beanspruchen. Die beschriebene Vorgehensweise ist für Normies gedacht, trotz Kommandozeile Schrittchen für Schrittchen ans Ziel.

2 „Gefällt mir“