Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Zeit zum finden eines Passwortes messen (SCHULPROJEKT!)

Frage Entwicklung Batch & Shell

Mitglied: niklaskar

niklaskar (Level 1) - Jetzt verbinden

03.09.2013, aktualisiert 04.09.2013, 1375 Aufrufe, 14 Kommentare, 1 Danke

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:
01.
@Echo Off 
02.
REM zufaelligen String generieren 
03.
Setlocal EnableDelayedExpansion 
04.
Set _RNDLength=3 
05.
Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 
06.
Set _Str=%_Alphanumeric%987654321 
07.
:_LenLoop 
08.
IF NOT "%_Str:~18%"=="" SET _Str=%_Str:~9%& SET /A _Len+=9& GOTO :_LenLoop 
09.
SET _tmp=%_Str:~9,1% 
10.
SET /A _Len=_Len+_tmp 
11.
Set _count=0 
12.
SET _RndAlphaNum= 
13.
:_loop 
14.
Set /a _count+=1 
15.
SET _RND=%Random% 
16.
Set /A _RND=_RND%%%_Len% 
17.
SET _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1! 
18.
If !_count! lss %_RNDLength% goto _loop 
19.
REM String in Datei schreiben 
20.
echo.>%temp%\tmp 
21.
set/p=%_RndAlphaNum%<%temp%\tmp>md5.txt 
22.
del %temp%\tmp 
23.
REM md5 Hash der Datei bilden 
24.
for /f "tokens=*" %%i in ('md5 md5.txt') do set password=%%i 
25.
REM datei löschen 
26.
del md5.txt 
27.
REM Ursprungs String herausfinden 
28.
finder.exe --hash %password%
Die Ausgabe der finder.exe ist dabei folgendermaßen:
01.
System / Thread #0: Collision found: 2hf 
02.
Info   / Thread #0: Candidate/Hash pairs tested: 12 176 ( 1.22e+004 ) in 3ms 
03.
Info   / Thread #0: Allocated key space: 2.42e+028 candidates, 0.00% done 
04.
Warning/ Average speed removed (not enough session time, need 500ms)
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
Mitglied: Endoro
03.09.2013 um 22:40 Uhr
Hi,
ich würde die in Zeilen uns Spalten mit Komma, Tab oder sonstwie getrennt ausgeben.
Du kannst auch feste Spaltenbreiten nehmen, Excel importiert das auch.
lg.
Bitte warten ..
Mitglied: niklaskar
03.09.2013 um 23:06 Uhr
Zitat von Endoro:
Hi,
ich würde die in Zeilen uns Spalten mit Komma, Tab oder sonstwie getrennt ausgeben.
Du kannst auch feste Spaltenbreiten nehmen, Excel importiert das auch.
lg.

Aber wie lese ich erst mal Zeit, Passwort, Hash, Anzahl Hashes aus?
Exportieren tue ich das ganze doch am besten mit einer Art Separator getrennt und dann am Ende der Zeile nochmal einen, oder?
z.B. so?
01.
67000,passwort1,6e6fdf956d04289354dcf1619e28fe77,2345323; 
02.
634823,geheimespw,253d0ba904f79d7a6ed7fc20cd5849d6,8848484884;
Bitte warten ..
Mitglied: Endoro
04.09.2013 um 19:22 Uhr
Hi,
in deiner Ausgabe von finder sind die entsprechenden Daten nicht drin.

Als Feldtrenner kannst du Kommas nehmen, wenn die im Passwort nicht vorkommen.
Am Zeilenende ist nichts weiter erforderlich, da seht schon (unsichtbar) 0Dh0Ah.
lg.
Bitte warten ..
Mitglied: niklaskar
04.09.2013 um 22:24 Uhr
Hi,

Hash ist schon als variable gespeichert, %_RndAlphaNum%
01.
System / Thread #0: Collision found: 2hf
Dieser Teil beherbergt das Passwort, und zwar der String, nach "Collision found". In diesem Falle ist das Passwort "2hf".
Die Anzahl der Hashes die probiert wurden, sowie die Zeit sind auch zu sehen.
01.
Info   / Thread #0: Candidate/Hash pairs tested: 12 176 ( 1.22e+004 ) in 3ms
In diesem Falle wurden 12 176 Hashes probiert und dies in einer Zeit von 3ms.

Hast du eine Idee, wie ich diese Werte in Variablen speichern kann?

Gruß Niklas
Bitte warten ..
Mitglied: Endoro
04.09.2013 um 23:05 Uhr
Hi,
das ist klar soweit.
Was soll mit den 'Fehlern' (kein PW gefunden) passieren und wie wird der Fehler bemerkt ?
  1. errorlevel
  2. Ausgabe von finder.exe
lg.
Bitte warten ..
Mitglied: niklaskar
05.09.2013 um 07:19 Uhr
Hi,

diese Fehler sollten nicht auftreten, da ich ja immer die richtige Stringlänge vorgebe und bei der Methode, jeden möglichen String auszuprobieren, der richtige einfach rauskommen muss ;)
Es geht ja nicht um "richtig unbekannte" Passwörter, diese werden ja vorher per Zufall mit einer bestimmten Länge erzeugt.
Deswegen denke ich, kann man diesen Fall vernachlässigen um das Programm so einfach wie möglich zu halten.

lg
Bitte warten ..
Mitglied: Endoro
05.09.2013, aktualisiert um 08:38 Uhr
Hi,
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.
01.
@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION 
02.
SET "pat1=Collision found: " 
03.
SET "pat2=pairs tested: " 
04.
FOR /f "delims=" %%a IN ('finder.exe --hash %password% ^| findstr /c:"%pat1%" /c:"%pat2%"') DO ( 
05.
	SET "line=%%a" 
06.
	IF "!line:%pat1%=!" neq "!line!" ( 
07.
		SET "password=!line:*%pat1%=!" 
08.
	) ELSE ( 
09.
		SET "endline=!line:*%pat1%=!" 
10.
		FOR /f "tokens=3delims=:(" %%b IN ("!endline!") DO SET "numhashes=%%b" 
11.
		SET "numhashes=!numhashes: =!" 
12.
		FOR %%b IN (!endline!) DO SET "hashtime=%%b" 
13.
		SET "hashtime=!hashtime:~0,-2!" 
14.
15.
16.
ECHO %hashtime%,%password%,%_RndAlphaNum%,%numhashes%
Wobei ich jetzt nicht genau weiss, warum das Passwort noch mal eingelesen werden muss ...
lg.
Bitte warten ..
Mitglied: niklaskar
09.09.2013 um 11:19 Uhr
Stimmt, da hast du Recht, das Passwort ist ja eigentlich bekannt.
Dein Codeschnipsel produziert anscheinend eine Endlosschleife. Wenn man das @echo off wegkommentiert, zeigt dich, dass das Bash Script bei ich glaube Linie 14 stehen bleibt.
Linie 16 wird auf jeden fall nicht mehr ausgegeben.
Bitte warten ..
Mitglied: Endoro
09.09.2013, aktualisiert um 22:41 Uhr
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:
01.
@ECHO OFF &SETLOCAL 
02.
SET "pat=pairs tested: " 
03.
FOR /f "tokens=3,5delims=():" %%a IN ('finder.exe --hash %password% ^| findstr /c:"%pat%"') DO ( 
04.
	SET "numhashes=%%a" 
05.
	SET "hashtime=%%b" 
06.
07.
SET "numhashes=%numhashes: =%" 
08.
SET "hashtime=%hashtime:~4,-2%" 
09.
ECHO %hashtime%,%password%,%_RndAlphaNum%,%numhashes%
Bitte warten ..
Mitglied: Endoro
10.09.2013 um 19:51 Uhr
Okey, ich habs noch mal überarbeitet, Falls es immer noch nicht geht, muss ich den Output mit "finder.exe" prüfen.
01.
@ECHO OFF &SETLOCAL 
02.
SET "pat=pairs tested: " 
03.
FOR /f "tokens=3,5delims=():" %%a IN ('finder.exe --hash %password% ^| findstr /c:"%pat%"') DO ( 
04.
	SET "numhashes=%%a" 
05.
	SET "hashtime=%%b" 
06.
07.
SET "numhashes=%numhashes: =%" 
08.
FOR /F "delims=inms " %%a in ("%hashtime%") do SET "hashtime=%%a" 
09.
ECHO %hashtime%,%password%,%_RndAlphaNum%,%numhashes%
lg.
Bitte warten ..
Mitglied: niklaskar
12.09.2013 um 18:18 Uhr
Super, funktioniert wie ne eins !
Genau das brauchte ich
Danke dir

Lg Niklas
Bitte warten ..
Mitglied: niklaskar
13.09.2013 um 07:31 Uhr
Habe nun gerade ein längeres Passwort (5 Stellen) probiert. Dort dauert die Entschlüsselung länger als 999ms und dadurch hat sich so ein bisschen die Ausgabe geändert, das Programm gibt jetzt xs yms aus.
01.
Info   / Thread #0: Candidate/Hash pairs tested: 54 132 066 ( 5.41e+007 ) in 4s 
02.
988ms 
03.
Info   / Thread #0: Allocated key space: 2.42e+028 candidates, 0.00% done 
04.
Info   / Thread #0: Average speed: ~ 10 851 082 ( 1.09e+007 ) h/s
Hast du dazu vielleicht noch ne Idee, wie man das in die Variable bringen kann?
Das ganze könnte ja z.B. nach dem Motto abgespeichert werden
12s 765ms => 12.765

Danke dir!
Bitte warten ..
Mitglied: Endoro
13.09.2013 um 09:57 Uhr
Hi,
ich würde das als Millisekunden speichern und die Formatierung mit Excel später erledigen:
01.
@ECHO OFF &SETLOCAL 
02.
SET "pat=pairs tested: " 
03.
FOR /f "tokens=3,5delims=():" %%a IN ('finder.exe --hash %password% ^| findstr /c:"%pat%"') DO ( 
04.
	SET "numhashes=%%a" 
05.
	SET "hashtime=%%b" 
06.
07.
SET "numhashes=%numhashes: =%" 
08.
SET "hashtime=%hashtime:*in=%" 
09.
FOR /F "tokens=1,2delims=ms " %%a in ("%hashtime%") do SET "hashtime=%%a%%b" 
10.
ECHO %hashtime%,%password%,%_RndAlphaNum%,%numhashes% 
11.
 
Bitte warten ..
Mitglied: niklaskar
16.09.2013 um 21:19 Uhr
Hi,

der Codeschnipsel weigert sich zu funktionieren, die Variable %hashtime wird gar nicht mit Werten gefüllt, sondern bleibt leer.
(Ich denke) Deswegen gibt das gesamte Skript nur
01.
*in=,,, =
aus.
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Dateien zusammenführen inkl. finden von doppelten Einträgen (3)

Frage von miczar zum Thema Batch & Shell ...

Debian
Kann Linux nicht im bios finden! (3)

Frage von pixelBf zum Thema Debian ...

Monitoring
gelöst Netzwerkproblem ( Auslastung) mit Wireshark finden (4)

Frage von Thekivi zum Thema Monitoring ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...