
Dieses Tool generiert BIP-39-Mnemonic-Phrasen, die aus Unix-Zeitstempeln abgeleitet werden, und untersucht die Auswirkungen der 'Milk Sad'-Sicherheitslücke (CVE-2023-39910)
Dieses Tool wurde entwickelt, um BIP-39-Mnemonik-Phrasen (24-Wort-Seed-Phrasen) basierend auf Unix-Zeitstempeln zu generieren, wobei speziell Phrasen untersucht werden, die durch die "Milk Sad"-Sicherheitslücke (CVE_2023-39910) erzeugt werden könnten.
Der Milk Sad Mnemonik-Generator erstellt 24-Wort-BIP-39-Mnemonik-Phrasen, indem er Unix-Zeitstempel als Entropiequelle nutzt. Ziel ist es, alle möglichen Seed-Phrasen zu generieren, die aufgrund des spezifischen, auf Zeitstempeln basierenden Entropiesammlungsfehlers im Zusammenhang mit der "Milk Sad"-Sicherheitslücke entstanden sein könnten.
Sie haben zwei Möglichkeiten, das Tool auf Ihrem System zu installieren und auszuführen:
install.sh-Skript verwendenDieses Skript automatisiert den Kompilierungsprozess und kümmert sich um übliche Abhängigkeiten für Debian/Ubuntu-basierte Linux-Systeme.
cd MilkSad-Mnemonic-Generator
chmod +x install.sh
./install.sh
g++, make, qmake, libssl-dev, libqt5widgets5-dev). Falls welche fehlen, wird versucht, sie zu installieren (dabei wird nach Ihrem sudo-Passwort gefragt). Nach erfolgreicher Einrichtung der Abhängigkeiten werden sowohl die CLI- als auch die GUI-Anwendung kompiliert und direkt im Stammverzeichnis des Projekts platziert.Wenn Sie die Anwendungen lieber selbst kompilieren möchten, folgen Sie diesen manuellen Schritten:
Stellen Sie sicher, dass die folgenden Entwicklungspakete auf Ihrem Debian/Ubuntu-System installiert sind:
g++ (normalerweise Teil des build-essential-Pakets)make (ebenfalls Teil von build-essential)qmake (bereitgestellt durch qt5-qmake oder qtbase5-dev)libssl-dev (essentiell für die vom Tool verwendeten kryptografischen Funktionen)libqt5widgets5-dev (erforderlich für die Qt-GUI-Entwicklung; dieses Paket enthält oft qtbase5-dev)Sie können diese Voraussetzungen mit folgendem Befehl installieren:
sudo apt update
sudo apt install build-essential qt5-qmake libssl-dev qtbase5-dev
cd src/cli
g++:
g++ -std=gnu++11 -Wall -Wextra -O2 milk_sad_generator.cpp -o milk_sad_generator -lcrypto -lssl
mv milk_sad_generator ../../
cd ../..
cd src/gui
qmake aus, um die Makefile für das Qt-Projekt zu erstellen:
qmake mnemonic_generator.pro
make:
make
mv milk_sad_generator_gui ../../
cd ../..
Pic/-Ordner: Damit die GUI ihr Hintergrundbild korrekt findet, müssen Sie den Pic/-Ordner von src/gui/ in das Projekt-Stammverzeichnis verschieben:
mv src/gui/Pic .
Nach der Installation finden Sie zwei ausführbare Dateien direkt im Stammverzeichnis Ihres Projekts: ./milk_sad_generator (die Kommandozeilenversion) und ./milk_sad_generator_gui (die grafische Benutzeroberflächenversion).
./milk_sad_generator_gui # Zum Starten der GUI-Anwendung
# ODER
./milk_sad_generator # Zum Starten der CLI-Anwendung
Dieser Modus generiert eine einzelne 24-Wort-Mnemonik-Phrase für ein präzises Datum und eine Uhrzeit Ihrer Wahl.
1970-01-01 00:00:00 für den ersten Zeitstempel. Wenn Englisch gewählt wurde, wird die Mnemonik "milk sad ..." generiert.mnemonic_[language].txt gespeichert.Dieser Modus generiert Mnemoniken für jeden Zeitstempel innerhalb eines angegebenen Start- und Enddatumsbereichs.
2017-01-01:2018-12-31 (Dies generiert Mnemoniken für alle Zeitstempel zwischen dem 1. Januar 2017 und dem 31. Dezember 2018, inklusive.)mnemonics_range_[language].txt gespeichert.Strg+C) und später ohne Datenverlust fortzusetzen.Dieser Modus generiert alle möglichen Mnemoniken über den gesamten 32-Bit-Unix-Zeitstempelbereich (vom 1. Januar 1970 bis zum 19. Januar 2038).
all_mnemonics_[language].txt gespeichert.mnemonic_[language].txtmnemonics_range_[language].txtall_mnemonics_[language].txtgeneration_progress_range.bin (für Option 2) / generation_progress_full.bin (für Option 3)Strg+C sicher stoppen. Das Tool speichert automatisch den aktuellen Fortschritt..bin-Fortschrittsdatei automatisch gelöscht.Falls Sie die Generierung unterbrechen mussten (z. B. mit Strg+C), können Sie nahtlos an der Stelle weitermachen, an der Sie aufgehört haben:
Für Datumsbereichs-Generierung (Option 2):
generation_progress_range.bin und setzt die Generierung ab dem letzten gespeicherten Zeitstempel fort.Für Gesamtbereichs-Generierung (Option 3):
generation_progress_full.bin und setzt die Generierung an der Stelle fort, an der sie unterbrochen wurde..bin-Fortschrittsdateien (generation_progress_range.bin oder generation_progress_full.bin), wenn Sie eine Generierung fortsetzen möchten..bin-Fortschrittsdatei manuell löschen und eine vorhandene Ausgabedatei (mnemonics_range_[language].txt oder all_mnemonics_[language].txt) aus vorherigen Läufen umbenennen/löschen/verschieben, bevor Sie das Programm erneut starten..bin-Fortschrittsdatei überschrieben wird, wenn Sie eine "Datumsbereichs"-Generierung (Option 2) mit einem anderen Datumsbereich starten, oder eine "Gesamtbereichs"-Generierung (Option 3) mit derselben Sprache, bei der bereits eine all_mnemonics_[language].txt existiert. Neue Mnemoniken werden dann an die bestehende Ausgabedatei angehängt.Hier ist ein Beispiel einer 24-Wort-BIP-39-Mnemonik-Phrase, die von diesem Tool generiert wurde:
vault alarm sad mass witness property virus style good flower rice alpha viable evidence run glare pretty scout evil judge offer refuse another breeze
Zu Überprüfungszwecken oder als schnelle Referenz enthält das tests/-Verzeichnis in diesem Repository Beispiele generierter Mnemonik-Phrasen für verschiedene Sprachen für den Zeitstempel 1970-01-01 00:00:00 UTC.
Um die generierten Mnemonik-Phrasen in Bitcoin-Adressen umzuwandeln (unterstützt P2PKH-, P2SH-P2WPKH- und P2WPKH-Formate), können Sie dieses Tool verwenden:
Wenn Sie dieses Projekt nützlich fanden und mich ermutigen möchten, weitere Tools wie dieses zu erstellen, erwägen Sie eine Spende:
bc1qg7xmlsdxfgu3muxherh4eee2ywj3gz8qfgct3s0x1B449E1D545bD0dc50f361d96706F6C904553929F776tt1it7vifCzD9icrsby3ujkZdJ8EY9917GUM3skrTJj96B4SukPJSC4M2FyssoxduVyviv9aGr0x1B449E1D545bD0dc50f361d96706F6C90455392948aaDb1g4Ms7PB3WMj6ttbMWuEwe171d6Yjao59uFJR38tHa75nKwPqYoPAYmWZPUhXmDbDvqtE6d2FX3YaF1dVE7zhD9Dt