PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Benötige Hilfe - OpenMP/openssl/md5.h/Bruteforcing - C_Programmierung



Dexter
30-09-2014, 18:40
Hallo liebe Community,

ich bin neu hier im Forum. Zur Zeit versuche ich mich an
ein kleines Bruteforce-Programm in der Programmiersprache
C unter Linux (Ubuntu 14.04.).
Im Grunde nichts Besonderes, es soll lediglich zur Übung
sein. Es soll MD5-Hashes bruteforcen können.
Der Vorgang soll parallelisiert ablaufen. Ich habe es
soweit auch hinbekommen. Nur tritt hin- und wieder ein
kleiner Fehler nach dem Programmstart auf. Nämlich das er
das gesuchte Wort nicht findet. Das geschieht aber nur hin-
und wieder. Also nicht grundsätzlich.
Kann sein ich starte das Programm fünf mal und das gesuchte
Wort wird bei allen fünf Starts gefunden. Beim sechsten Mal findet
das Programm das Wort auf einmal nicht. Dann wieder ja und mal wieder
nicht usw.

Um die Ursache für das Problem zu finden, habe ich verschiedene
Dinge ausprobiert. Dabei konnte ich das Ganze etwas eingrenzen.
Doch die genaue Ursache kann ich nur vermuten.

Also das Programm besteht bisher aus einer main()-Funktion,
und zwei weiteren Funktionen namens BruteForce und MD5Hash.
(weiter unten poste ich den gesamten Source Code)

Folgende Dinge konnte ich feststellen:
-------------------------------------------------------
- Lasse ich die Parallelisierung weg, funktioniert es bei
jedem Start fehlerfrei.

- Nutze ich die Parallelisierung und lasse das hashen weg,
dann tritt der Fehler auch nicht auf. Also auch fehlerfrei.
(Anstatt Hashes habe ich Wörter vergleichen lassen, rein
zum testen)

- Nutze ich sowohl Parallelisierung als auch hashen, reduziere
aber die Rechenkerne auf 4 (anstatt 8), entsteht oben be-
schriebener Fehler auch nicht.
(also mittels "omp_set_num_threads(4)")
Mein Prozessor ist ein Intel Core i7-920 (4 Rechenk. physikalisch + 4 Rechenk. virtuell) also Hyper- bzw. Multithreading.

Hier jetzt noch der Source Code:

Problem gelöst!!!Woran könnte das eurer Meinung nach liegen?
Solltet ihr noch Fragen haben, nur zu und stellt sie einfach. :)

Edit:

Ich konnte das Problem selbst lösen. Daher kann dieser Thread geschlossen werden.