Zeit zum finden eines Passwortes messen (SCHULPROJEKT!)
Hallo,
ich bin gerade für ein Schulprojekt dabei, ein Programm zu programmieren um Aussagen über die Sicherheit eines Passwortes zu treffen. Das Ziel des Projektes ist es, das Internet ein wenig sicherer zu machen, indem den Leuten anhand von erschreckenden Werten aufgezeigt wird wie grob fahrlässig sie handeln, in dem Moment, in dem sie ein kurzes Passwort oder ein Passwort ohne Sonderzeichen wählen um damit ihre Konten abzusichern.
Ich habe das Programm bereits in PHP geschrieben, bis mir die Unzuverlässigkeit von PHP aufgefallen ist.
Nun habe ich mich an Batch-Programmierung gewagt, dieses Projekt zu verwirklichen.
In dem Ablauf werden zwei Programme aufzurufen. Das erste generiert einen md5 Hash, das zweite versucht mittels durchprobieren, das richtige Passwort herauszufinden.
Nun muss ich nur noch die Zeit, die das finden des Passwortes (soweit erfolgreich) in Anspruch genommen hat herausfinden und in eine Textdatei loggen, so dass ich die Daten nachher mit Excel verarbeiten kann.
Dazu habe ich bisher folgenden Code:
Die Ausgabe der finder.exe ist dabei folgendermaßen:
Hat einer von euch eine Idee, wie ich die benötigte Zeit, den String, den Hash und die Anzahl der probierten Hashes so in eine Datei exportiere, dass ich diese dann gesammelt in Excel einlesen kann?
Vielen Dank schonmal!!!
Gruß Niklas
ich bin gerade für ein Schulprojekt dabei, ein Programm zu programmieren um Aussagen über die Sicherheit eines Passwortes zu treffen. Das Ziel des Projektes ist es, das Internet ein wenig sicherer zu machen, indem den Leuten anhand von erschreckenden Werten aufgezeigt wird wie grob fahrlässig sie handeln, in dem Moment, in dem sie ein kurzes Passwort oder ein Passwort ohne Sonderzeichen wählen um damit ihre Konten abzusichern.
Ich habe das Programm bereits in PHP geschrieben, bis mir die Unzuverlässigkeit von PHP aufgefallen ist.
Nun habe ich mich an Batch-Programmierung gewagt, dieses Projekt zu verwirklichen.
In dem Ablauf werden zwei Programme aufzurufen. Das erste generiert einen md5 Hash, das zweite versucht mittels durchprobieren, das richtige Passwort herauszufinden.
Nun muss ich nur noch die Zeit, die das finden des Passwortes (soweit erfolgreich) in Anspruch genommen hat herausfinden und in eine Textdatei loggen, so dass ich die Daten nachher mit Excel verarbeiten kann.
Dazu habe ich bisher folgenden Code:
@Echo Off
REM zufaelligen String generieren
Setlocal EnableDelayedExpansion
Set _RNDLength=3
Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Set _Str=%_Alphanumeric%987654321
:_LenLoop
IF NOT "%_Str:~18%"=="" SET _Str=%_Str:~9%& SET /A _Len+=9& GOTO :_LenLoop
SET _tmp=%_Str:~9,1%
SET /A _Len=_Len+_tmp
Set _count=0
SET _RndAlphaNum=
:_loop
Set /a _count+=1
SET _RND=%Random%
Set /A _RND=_RND%%%_Len%
SET _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1!
If !_count! lss %_RNDLength% goto _loop
REM String in Datei schreiben
echo.>%temp%\tmp
set/p=%_RndAlphaNum%<%temp%\tmp>md5.txt
del %temp%\tmp
REM md5 Hash der Datei bilden
for /f "tokens=*" %%i in ('md5 md5.txt') do set password=%%i
REM datei löschen
del md5.txt
REM Ursprungs String herausfinden
finder.exe --hash %password%
System / Thread #0: Collision found: 2hf
Info / Thread #0: Candidate/Hash pairs tested: 12 176 ( 1.22e+004 ) in 3ms
Info / Thread #0: Allocated key space: 2.42e+028 candidates, 0.00% done
Warning/ Average speed removed (not enough session time, need 500ms)
Vielen Dank schonmal!!!
Gruß Niklas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 216001
Url: https://administrator.de/contentid/216001
Ausgedruckt am: 05.11.2024 um 06:11 Uhr
14 Kommentare
Neuester Kommentar
Hi,
der Code geht davon aus, dass
Er wird mit Sonderzeichen wie
Wobei ich jetzt nicht genau weiss, warum das Passwort noch mal eingelesen werden muss ...
lg.
der Code geht davon aus, dass
finder.exe
seine Ausgabe auf STDOUT
(den Bildschirm) macht.Er wird mit Sonderzeichen wie
%!*=~"^
möglicherweise nicht oder nicht richtig funktionieren.@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
SET "pat1=Collision found: "
SET "pat2=pairs tested: "
FOR /f "delims=" %%a IN ('finder.exe --hash %password% ^| findstr /c:"%pat1%" /c:"%pat2%"') DO (
SET "line=%%a"
IF "!line:%pat1%=!" neq "!line!" (
SET "password=!line:*%pat1%=!"
) ELSE (
SET "endline=!line:*%pat1%=!"
FOR /f "tokens=3delims=:(" %%b IN ("!endline!") DO SET "numhashes=%%b"
SET "numhashes=!numhashes: =!"
FOR %%b IN (!endline!) DO SET "hashtime=%%b"
SET "hashtime=!hashtime:~0,-2!"
)
)
ECHO %hashtime%,%password%,%_RndAlphaNum%,%numhashes%
lg.
Hi,
ich hab es hier mit dem von dir geposteten Output von finder getestet.
Wenn der nicht stimmt, geht gar nix.
Du könntest den nochmal checken und ein weiteres Beispiel hier reinschreiben.
Ggf muss eine robustere Lösung her.
lg.
PS: ich hab mal was robusteres aufgeschrieben:
ich hab es hier mit dem von dir geposteten Output von finder getestet.
Wenn der nicht stimmt, geht gar nix.
Du könntest den nochmal checken und ein weiteres Beispiel hier reinschreiben.
Ggf muss eine robustere Lösung her.
lg.
PS: ich hab mal was robusteres aufgeschrieben:
@ECHO OFF &SETLOCAL
SET "pat=pairs tested: "
FOR /f "tokens=3,5delims=():" %%a IN ('finder.exe --hash %password% ^| findstr /c:"%pat%"') DO (
SET "numhashes=%%a"
SET "hashtime=%%b"
)
SET "numhashes=%numhashes: =%"
SET "hashtime=%hashtime:~4,-2%"
ECHO %hashtime%,%password%,%_RndAlphaNum%,%numhashes%
Okey, ich habs noch mal überarbeitet, Falls es immer noch nicht geht, muss ich den Output mit "finder.exe" prüfen.
lg.
@ECHO OFF &SETLOCAL
SET "pat=pairs tested: "
FOR /f "tokens=3,5delims=():" %%a IN ('finder.exe --hash %password% ^| findstr /c:"%pat%"') DO (
SET "numhashes=%%a"
SET "hashtime=%%b"
)
SET "numhashes=%numhashes: =%"
FOR /F "delims=inms " %%a in ("%hashtime%") do SET "hashtime=%%a"
ECHO %hashtime%,%password%,%_RndAlphaNum%,%numhashes%
Hi,
ich würde das als Millisekunden speichern und die Formatierung mit Excel später erledigen:
ich würde das als Millisekunden speichern und die Formatierung mit Excel später erledigen:
@ECHO OFF &SETLOCAL
SET "pat=pairs tested: "
FOR /f "tokens=3,5delims=():" %%a IN ('finder.exe --hash %password% ^| findstr /c:"%pat%"') DO (
SET "numhashes=%%a"
SET "hashtime=%%b"
)
SET "numhashes=%numhashes: =%"
SET "hashtime=%hashtime:*in=%"
FOR /F "tokens=1,2delims=ms " %%a in ("%hashtime%") do SET "hashtime=%%a%%b"
ECHO %hashtime%,%password%,%_RndAlphaNum%,%numhashes%