Janchu88
Kapitän zur See , HWLUXX Vize-Superstar
Rangliste Version 0.1-0.11
Archiv Rangliste v0.0
Grüße,
ich hab mich in letzter Zeit wieder etwas mehr mit dem Programmieren beschäftigt und wollte mich unter anderem intensiver mit den Themen Kryptographie und Multithreading beschäftigten. Irgendwie ist auf dem Weg die Idee entstanden ein Tool zu schreiben, welches mit Hilfe von Bruteforce Klartexte zu Hashes findet, das verwendete Verfahren ist in dem Fall erstmal zweitrangig. Hierbei wollte ich Threading nutzen, um alle CPU Kerne sinnvoll zu nutzen. Ja, natürlich gibt es fertige Tools, die das sicherlich besser können, aber der Weg ist hier das Ziel.
Am Wochenende habe ich das ganze dann mal in Erstes Programm gegossen. Noch rustikal gehalten, auf reiner Kommandozeilenebene, rechnet das Programm anhand eines definierten Zeichensatzes (der grundsätzlich beliebig veränderbar ist) alle Kombinationen durch, erzeugt einen passenden String (Zeichenkette) und füttert das Hashverfahren mit dem String. Im letzten Schritt wird dann geprüft, ob der erzeugte Hash mit dem zu knackenden Hash übereinstimmt. Für den Test habe ich mal auf den SHA-512 Algorithmus gesetzt, das Hashverfahren ist aber grundsätzlich beliebig austauschbar.
Nachdem das dann lief, habe ich den Code so umgeschrieben, dass diese Aufgabe parallel von mehreren Threads erledigt werden kann. Nach enttäuschenden ersten Resultaten (die Skalierung war mies) habe ich dann noch einige Stunden mit Optimierungen zugebracht, bis ich an diesen Punkt kam:
1 Hash beinhaltet hierbei : neuen Input erzeugen, Hash berechnen, vergleichen mit Ziel Hash. Daher unter Nutzung aller Threads kann ich bis zu 186 Millionen Kombinationen pro Sekunde durchprobieren.
Noch nicht perfekt, aber sowohl die 12 Kerne skalieren fast linear und auch Hyperthreading bringt noch etwas über 10% mehr Performance.
Ja und hier hätte ich gerne mal geguckt, wie es auf anderen CPUs so skaliert!
Nachtrag: Die Skalierung mit dem Ramtakt habe ich auch mal getestet. Auch dieser auf diesen spricht das Programm durchaus gut an. (CPU auf 3,8GHz fix für den Test)
Wie gesagt, das Programm ist noch alles andere als Fertig, aber es läuft soweit und liefert konstante Resultate. Es ist voreingestellt auf einen Zeichensatz mit 95 möglichen Zeichen und alle Kombinationen bis 5 Zeichen Länge, was ungefähr 7,7 Milliarden Kombinationen bedeutet. Entgegen einer Echtwelt Anwendung habe ich es so eingestellt, dass er die 7,7Mrd Kombinationen auch nach gefundenem Treffer zu Ende rechnet. Auf dem Ryzen 3900X brauche ich dafür dann ca 6 Min und 54 Sekunden bei 24 Threads. Singlethreaded braucht es dafür schon über eine Stunde...
Download Version 0.11
Changelog 0.11
- Genauere Erkennung Anzahl CPU Kerne
Win x64: https://drive.google.com/open?id=1xj7O3IpfB8lAmk9V_8slHZDacSJ95B84
Archiv
Daher, viel Spaß beim testen!
_________________________________________________
PS: Was zum nachdenken: Die Komplexität ergibt sich hier aus dem großzügig gewählten Zeichensatz der 95 verschiedene Zeichen beinhaltet. Würde ich diesen auf bspw. nur Kleinbuchstaben oder nur Großbuchstaben beschränken, wären alle Kombinationen bis 10 Zeichen Länge ebenfalls in unter 10 Min geknackt.... Komplexität ist das eine, aber Leute nutzt lange Passwörter!
Leistung (MH/s) | CPU | CPU Setting | Ram | Ram Setting | User |
---|---|---|---|---|---|
809,013 | Threadripper 3990X (SMT off) | 3600 MHz @ 0.968V Lukü | 4x16 GB DDR4 3200 CL22 | 3200 IF 1:1 | Kullberg |
577,72 | Threadripper 3970X | stock - ca. 3900 MHz Lukü | 4x16 GB DDR4 3600 CL16 | 3600 IF 1:1 | Kullberg | Kullberg |
334,659 | Ryzen 3950X | 4,4GHz @ 1,325v (load) mit WaKü | 2 x 16GB DDR3200CL14@3800CL15 | 3800MHz IF 1:1 | the_patchelor |
323,77 | Ryzen 3950X | 4,4GHz @ 1,385v mit WaKü | 2 x 8GB cl16 | 3800MHz IF 1:1 | Holzmann |
262,367 | Ryzen 3900X | 4,60GHz @ 1,375v (load) mit WaKü | 2 x 16GB DDR4000 CL19 | 3790MHz CL14-15-11-28 1T - IF 1:1 | Hoschi |
254,588 | Ryzen 3900X | 4,45Ghz @ 1,392v | 2x8GB GSKILL RipJaws V | 3733MHz 14-14-14-28 mit IF 1:1 | Janchu88 |
167,576 | i9 7900X | 4,60GHz @ 1,160v (load) mit WaKü | 4 x 8GB DDR3200 CL14 | 3200MHz 14-14-14-34 | thebagger |
143,891 | Ryzen 2700 | 4,2GHz @ 1,4V mit WaKü | 4 x 8GB DDR3600 CL15 | 3533MHz 14-15-14-30-44 | Bullseye13 |
111,097 | i7 8700k | 5 GHz @ 1,336v (load) mit WaKü | 2 x 16GB DDR4 3200 CL15 | 3800MHz CL16-17-17-32 | AG1M |
101,064 | i5 8600K | 4,8GHz @ 1,27v mit LuKü | 2 x 8GB DDR3000 CL15 | 3000MHz 15-16-16-35 | PogoPunk |
50,606 | FX-8350 | @HPC Mode | 4xDDR31866 unbuffered ECC | stock | Phantomias88 |
Archiv Rangliste v0.0
Leistung (MH/s) | CPU | CPU Setting | Ram | Ram Setting | User |
---|---|---|---|---|---|
263,729 | Ryzen 3950X | 4,3GHz @ 1,256v (load) mit WaKü | 2 x 16GB DDR3200CL14@3800CL15 | 3800MHz IF 1:1 | the_patchelor |
261,631 | Ryzen 3950X | 4,4GHz @ 1,38v mit WaKü | 2 x 8GB DDR4 CL19 | 3800MHz IF 1:1 | Holzmann |
229,77 | Ryzen 3900X | 4,60GHz @ 1,375v (load) mit WaKü | 2 x 16GB DDR4000 CL19 | 3790MHz IF 1:1 | Hoschi |
218,357 | Ryzen 3900X | 4,4GHz @ 1,3v mit WaKü | 2 x 16GB DDR3200 CL16 | 3533MHz IF 1:1 | Janchu88 |
203,361 | 2 x Xeon 2697 v3(ES) (28c/56t) | 3,1GHz | 128GB DDR4 ECC | 2133 15-15-15-36 1T | Maniac |
190,466 | Xeon 2699v4 (ES) (22c/44t) | 2,88GHz | 128GB DDR4 ECC | 2460 15-15-15-36 1T | Maniac |
138,522 | i9 7900X | 4,6GHz @ 1,191v(load) mit WaKü | 4 x 8GB DDR3200 CL14 | 3200MHz 14-14-14-34 | thebagger |
129,883 | i9 9900K | 5GHz | n.A. | n.A. | yilem76 |
124,223 | Ryzen 2700 | 4,2Ghz | 4 x 8 GB DDR4 | 3533Mhz CL14 | Bullseye13 |
117,784 | Ryzen 3600 | Stock | DDR4 3600er | stock | Sven |
100,742 | i7 8700K | 5GHz | 2 x 16GB DDR4 | 3800MHz CL16 | AG1M |
85,614 | i7 8700K | Stock | n.A. | n.A. | Anonym |
81,337 | Ryzen 1600X | Stock | 2 x 8 GB DDR4 | 3200MHz CL14 | LuckySh0t |
40,775 | i7 6700K | 4,6GHz | 2 x 8GB DDR4 2400 | 3000MHz CL15 | Kenaz |
40,299 | i5 1035G4 | Stock | 8 GB DDR4 3766 | stock | gongplong |
Grüße,
ich hab mich in letzter Zeit wieder etwas mehr mit dem Programmieren beschäftigt und wollte mich unter anderem intensiver mit den Themen Kryptographie und Multithreading beschäftigten. Irgendwie ist auf dem Weg die Idee entstanden ein Tool zu schreiben, welches mit Hilfe von Bruteforce Klartexte zu Hashes findet, das verwendete Verfahren ist in dem Fall erstmal zweitrangig. Hierbei wollte ich Threading nutzen, um alle CPU Kerne sinnvoll zu nutzen. Ja, natürlich gibt es fertige Tools, die das sicherlich besser können, aber der Weg ist hier das Ziel.
Am Wochenende habe ich das ganze dann mal in Erstes Programm gegossen. Noch rustikal gehalten, auf reiner Kommandozeilenebene, rechnet das Programm anhand eines definierten Zeichensatzes (der grundsätzlich beliebig veränderbar ist) alle Kombinationen durch, erzeugt einen passenden String (Zeichenkette) und füttert das Hashverfahren mit dem String. Im letzten Schritt wird dann geprüft, ob der erzeugte Hash mit dem zu knackenden Hash übereinstimmt. Für den Test habe ich mal auf den SHA-512 Algorithmus gesetzt, das Hashverfahren ist aber grundsätzlich beliebig austauschbar.
Nachdem das dann lief, habe ich den Code so umgeschrieben, dass diese Aufgabe parallel von mehreren Threads erledigt werden kann. Nach enttäuschenden ersten Resultaten (die Skalierung war mies) habe ich dann noch einige Stunden mit Optimierungen zugebracht, bis ich an diesen Punkt kam:
1 Hash beinhaltet hierbei : neuen Input erzeugen, Hash berechnen, vergleichen mit Ziel Hash. Daher unter Nutzung aller Threads kann ich bis zu 186 Millionen Kombinationen pro Sekunde durchprobieren.
Noch nicht perfekt, aber sowohl die 12 Kerne skalieren fast linear und auch Hyperthreading bringt noch etwas über 10% mehr Performance.
Ja und hier hätte ich gerne mal geguckt, wie es auf anderen CPUs so skaliert!
Nachtrag: Die Skalierung mit dem Ramtakt habe ich auch mal getestet. Auch dieser auf diesen spricht das Programm durchaus gut an. (CPU auf 3,8GHz fix für den Test)
Wie gesagt, das Programm ist noch alles andere als Fertig, aber es läuft soweit und liefert konstante Resultate. Es ist voreingestellt auf einen Zeichensatz mit 95 möglichen Zeichen und alle Kombinationen bis 5 Zeichen Länge, was ungefähr 7,7 Milliarden Kombinationen bedeutet. Entgegen einer Echtwelt Anwendung habe ich es so eingestellt, dass er die 7,7Mrd Kombinationen auch nach gefundenem Treffer zu Ende rechnet. Auf dem Ryzen 3900X brauche ich dafür dann ca 6 Min und 54 Sekunden bei 24 Threads. Singlethreaded braucht es dafür schon über eine Stunde...
Download Version 0.11
Changelog 0.11
- Genauere Erkennung Anzahl CPU Kerne
Win x64: https://drive.google.com/open?id=1xj7O3IpfB8lAmk9V_8slHZDacSJ95B84
Archiv
Download Version 0.1
Changelog 0.1
- Performance verbessert
- Auslastung optimiert
- Skalierung optimiert
- Nice 2 Have: Exe ist nun komplett Standalone und hat ein schickes Icon bekommen
Win x64: https://drive.google.com/open?id=18ncFdHW9tg8jwP4-6wHYUZUoufM3t_9D
Version 0.0
vorläufiger Quellcode für Interessierte:
Download Standalone Windows 64 Bit
Download Standalone Mac OS X 64 Bit
Download Standalone Linux 64 Bit
Download Plattformunabhängig (.net core runtime oder .net core Desktop runtime 3.x erfoderlich: Download hier: https://dotnet.microsoft.com/download/dotnet-core/3.1)
Changelog 0.1
- Performance verbessert
- Auslastung optimiert
- Skalierung optimiert
- Nice 2 Have: Exe ist nun komplett Standalone und hat ein schickes Icon bekommen
Win x64: https://drive.google.com/open?id=18ncFdHW9tg8jwP4-6wHYUZUoufM3t_9D
Version 0.0
vorläufiger Quellcode für Interessierte:
Program.cs
drive.google.com
Download Standalone Windows 64 Bit
Win x64.zip
drive.google.com
Download Standalone Mac OS X 64 Bit
OSX x64.zip
drive.google.com
Download Standalone Linux 64 Bit
Linux x64.zip
drive.google.com
Download Plattformunabhängig (.net core runtime oder .net core Desktop runtime 3.x erfoderlich: Download hier: https://dotnet.microsoft.com/download/dotnet-core/3.1)
current build.zip
drive.google.com
Daher, viel Spaß beim testen!
_________________________________________________
PS: Was zum nachdenken: Die Komplexität ergibt sich hier aus dem großzügig gewählten Zeichensatz der 95 verschiedene Zeichen beinhaltet. Würde ich diesen auf bspw. nur Kleinbuchstaben oder nur Großbuchstaben beschränken, wären alle Kombinationen bis 10 Zeichen Länge ebenfalls in unter 10 Min geknackt.... Komplexität ist das eine, aber Leute nutzt lange Passwörter!
Zuletzt bearbeitet: