Moin,
wir in der Ausbildung bekommen neue Rechner und müssen sie für die breite Masse zeigen, wie schnell die doch sind. Dazu habe ich die aufgabe bekommen, ein DOS-Fenster zu erstellen, was simuliert, das ich das des PCs Passwort knacke.
Momentan so: Läuft an, dann slp(10) dann erscheint der erste Buchstabe dann wieder slp(10) dann erscheint der 2. Buchstabe des "Passwortes" usw.
Ziemlich trocken also.
Jemand Ideen, wie man Animieren könnte etc?
Hackersimulation schreiben
-
- [ gelöst ]
-
mille86 -
15. Oktober 2009 um 15:56 -
Geschlossen -
Erledigt
-
-
Hallo mille86
Das mit der "Animation" Kannst du So Machen :
[autoit]
[/autoit][autoit][/autoit][autoit]
;~ Das Alles So Lassen
#AutoIt3Wrapper_Outfile=Simulation.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Change2CUI=y
;~ Also Nichts Ändern$sKennwort = "Weist du Nicht!"; <-- Das "Fake"- Kennwort
[/autoit][autoit][/autoit][autoit]
$iSleep = 500 ; <-- Sleep (in MS) Zwischen Jedem Buchstaben$iLen = StringLen($sKennwort)
[/autoit][autoit][/autoit][autoit]ConsoleWrite("Hacke Kennwort ..." & @CRLF & "Bitte Warten" & @CRLF & "---------------" & @CRLF & "->")
[/autoit][autoit][/autoit][autoit]For $iStep = 1 To $iLen Step 1
[/autoit][autoit][/autoit][autoit]
$sChar = StringMid($sKennwort, $iStep, 1)
ConsoleWrite($sChar)
Sleep($iSleep)
NextConsoleWrite(@CRLF & "Password Erfolgreich Geknackt!" & @CRLF)
[/autoit]Bevor du es Benutzen Kannst, Rechtsklick auf das Script -> Compile with Options & Dann auf ->Compile Script Klicken
Ich habe es Getestet alles Klappt! -
Hi, habs mal mit "Matrix"-Code gemacht....fallende Buchstaben und so^^
Die EXE als DOS-Programm ist mit Hilfetext, einfach mit /h oder /? aufrufen in der Dosbox. Man kann auch noch einiges einstellen^^Fenstergröße der Dosbox sollte auf 80x25 eingestellt sein (ist Standard)
Das Script ermittelt den Prozessortakt und die Anzahl der Kerne
und aus dem daraus resultierenden Faktor macht blablub.....interessiert eh keinen
Starten, ablachenBtw, läuft auch in Scite, sieht aber dort bei weitem besser aus, wer echtes Uraltfeeling haben will, sollte mal die Dosbox testen, geflacker vom feinsten.....
Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Outfile=Simulation.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Array.au3>
#include <String.au3>
#include <Misc.au3>
;~ Das Alles So Lassen
;~ Also Nichts Ändern$sKennwort = "Weist du Nicht!"; <-- Das "Fake"- Kennwort
[/autoit] [autoit][/autoit] [autoit]
$matrixmode = 0
If $cmdline[0] <> 0 Then
; _ArrayDisplay($cmdline)
For $i = 1 To $cmdline[0] ;alle parameter durchgehen
If StringLeft($cmdline[$i], 3) = "/p=" Then ;passwort gesetzt
$sKennwort = StringTrimLeft($cmdline[$i], 3)
EndIf
If StringLeft($cmdline[$i], 3) = "/m=" Then ;Matrixmodus gesetzt
$matrixmode = Int(Number(StringTrimLeft($cmdline[$i], 3)))
If $matrixmode < 0 Or $matrixmode > 1 Then $matrixmode = 0
EndIfIf StringLeft($cmdline[$i], 3) = "/h" Or StringLeft($cmdline[$i], 3) = "/?" Then ;passwort gesetzt
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite("Parameter:" & @CRLF)
ConsoleWrite(" /p=[Passwort] beliebiges Passwort eingeben" & @CRLF)
ConsoleWrite(" /m=[0/1] 0 es faellt nur ein Buchstabe" & @CRLF)
ConsoleWrite(" 1 es faellt eine Reihe mit Buchstaben" & @CRLF)
ConsoleWrite(" /h oder /? dieser Hilfetext" & @CRLF & @CRLF)
ConsoleWrite("Beispiel: Simulation.exe /m=0 /p=TestPassWort" & @CRLF)
Exit
EndIf
NextEndIf
[/autoit] [autoit][/autoit] [autoit]$dll = DllOpen("user32.dll"); für _ispressed()
[/autoit] [autoit][/autoit] [autoit]$stars = _StringRepeat("*", StringLen($sKennwort)) ;Kennwort mit Sternchen auffüllen
[/autoit] [autoit][/autoit] [autoit]
$leerstring = _StringRepeat(" ", StringLen($sKennwort))
$anzahlsternchen = StringLen($stars)
$stars1 = $stars$dosboxzeilen = 25 + 1
[/autoit] [autoit][/autoit] [autoit];Taktfrequenz des Prozessors holen, je schneller, desto schneller "knackt" der Rechner das PW!
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; by Oscar
$objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Processor', 'WQL', 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$prozessor = $objItem.Name
;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $prozessor = ' & $prozessor & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$takt = $objItem.CurrentClockSpeed / 1000 ;Mhz
;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $takt = ' & $takt & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Next
EndIf$dual = StringReplace($prozessor, "dual", "Dual") ;2 Prozessorkerne
[/autoit] [autoit][/autoit] [autoit]
$dual = @extended * 2
$trio = StringReplace($prozessor, "X3", "X3"); 3 Prozessorkerne
$trio = @extended * 3
$quad = StringReplace($prozessor, "quad", "Quad"); 4 Prozessorkerne
$quad = @extended * 4
$faktor=1 ;ein Prozessorkern sollte vorhanden sein.....
$Faktor = $dual + $trio + $quad ;bissl dick auftragen muss sein^^;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $faktor = ' & $faktor & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$sleep = 2000 / $takt / $Faktor ;Wartezeit in ms
[/autoit] [autoit][/autoit] [autoit]
$sleeptime = 50
$timer = TimerInit()ConsoleWrite(@CRLF & @CRLF & @CRLF)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite("--------------------------------------------------------------------" & @CRLF)
ConsoleWrite("Das Passwort dieses Computers wird nun mittels der MATRIX-Methode entschlüsselt!" & @CRLF)
ConsoleWrite("Prozessor mit : " & $takt & " Mhz und " & $Faktor & " Kernen" & @CRLF)
ConsoleWrite("Drücken Sie bitte die Leertaste, um das Passwort zu entschlüsseln..." & @CRLF)
ConsoleWrite("--------------------------------------------------------------------" & @CRLF)
While 1
If _IsPressed("20", $dll) Then ExitLoop
If _IsPressed("0D", $dll) Then
ConsoleWrite("Die Leertaste ist die lange Taste unten an der Tastatur, auf der KEINE " & @CRLF & "Buchstaben stehen!" & @CRLF)
ConsoleWrite("Das üben wir nochmal...zur Strafe 10 Sekunden warten!" & @CRLF)
Sleep(10000)
ConsoleWrite("Dann probieren wir es nochmal...." & @CRLF & @CRLF)
ConsoleWrite("Bitte die Leertaste drücken!" & @CRLF)
EndIf
WEndWhile 1
[/autoit] [autoit][/autoit] [autoit]
$pos = Random(1, StringLen($stars), 1) ;zufällige Position im String suchen und Buchstabe merken
$stars = StringLeft($stars, $pos - 1) & StringMid($sKennwort, $pos, 1) & StringRight($stars, StringLen($stars) - $pos) ;Buchstabe an die richtige Position, Passwort "entschlüsseln"
If $stars1 <> $stars Then ;wenn noch Sternchen im passwort sind , dann
For $i = 1 To $dosboxzeilen ; Sternchen fallen lassen a la Matrix^^
ConsoleWrite(@CRLF)
If $matrixmode = 1 Then ;es fällt eine Reihe Buchstaben
For $t = 1 To $i - 1
$fallend = StringReplace($leerstring, $pos, Chr(64 + Random(1, 60, 1)))
ConsoleWrite($fallend & @CRLF)
Next
Else ;es fällt nur ein Buchstabe
For $t = 1 To $i - 2
ConsoleWrite($leerstring & @CRLF)
Next
If $i < $dosboxzeilen Then
$fallend = StringReplace($leerstring, $pos, Chr(64 + Random(1, 60, 1)))
ConsoleWrite($fallend & @CRLF)
EndIf
EndIf
For $t = $i To $dosboxzeilen - 2
ConsoleWrite($leerstring & @CRLF)
Next
;ConsoleWrite("***************** " & @CRLF)
If $i = $dosboxzeilen Then
$anzahlsternchen = StringReplace($stars, "*", "*") ; anzahl der Sternchen in @extended
$anzahlsternchen = @extended
ConsoleWrite($stars); & " bereits " & Int(100 - ($anzahlsternchen * 100 / StringLen($stars))) & "% geknackt nach " & StringFormat("%.2f", TimerDiff($t) / 1000) & " Sekunden! ")
Sleep($sleeptime)
Else
ConsoleWrite($stars1)
$sleeptime = $sleep - 20 * $i
If $sleeptime < 30 Then $sleeptime = 30
Sleep($sleeptime)
EndIf
Next
;~ For $i = 1 To StringLen($stars) - $anzahlsternchen ;Anzahl der Versuche...
;~ ConsoleWrite("#")
;~ Sleep($sleep) ; je schneller der Prozessor und je mehr Kerne, desto kürzer der Sleep
;~ Next
Else
If $stars = $sKennwort Then ExitLoop ;raus wenn passwort "geknackt"
EndIf
$stars1 = $stars ;altes passwort merken
WEndConsoleWrite(@CRLF & @CRLF & "Password erfolgreich geknackt in " & StringFormat("%.2f", TimerDiff($timer) / 1000) & " Sekunden! " & @CRLF)
[/autoit]
ConsoleWrite(@CRLF & @CRLF & "Zum Anzeigen der Startparameter bitte das Programm mit /h oder /? aufrufen." & @CRLF & @CRLF)ciao
Andy -
Hey,
Matrix hatte ich auch mein erster Gedanke xD
wow - so viel Arbeit... und das um 1 Uhr nachts - das ist ja echtSoviel Glück kann man net fassen xD
Wenn ich ihn anpasse, stelle ich natürlich auch rein.
Danke =) -
nette idee =)
die berechnung der zeit sollte aber vllt was realistischer sein
das ganze hat vllt 2-3 sek gedauert =)
wenn ich das mit m=1 ausfähre, ist es korrekt (3,73 sek).
PS: als Idee, was auch ganz nett sein könnte:
ne eigene gui im cmd-stil (oder ein cmd fenster worüber ein anderes fenster liegt. es wird eine stelle nach der anderen berechnet und auf dieser position laufen dann alle buchstaben durch, bis der korrekt da ist, dann zeichen 2 etc (wahlweise laufen auch alle gleich und halten einfach in unterschiedlicher reihenfolge, wie beim spielautomaten).
-
Das "Problem" ist einfach nur die blöde Darstellung in der Dosbox. Je mehr dargestellt wird, dest mehr flackert es.
Zitatne eigene gui im cmd-stil (oder ein cmd fenster worüber ein anderes fenster liegt.
dann macht man das mit GDI+ und hat den ganzen Ärger nicht^^
Viele "fallende Buchstaben " sind ziemlich einfach zu realisieren. Also nicht nur einer wie im Beispiel.
Einfach die 25 Zeilen in ein Array packen und immer nur "weiterschieben". So muss nur nur die "oberste" Zeile neu gemacht werden. Die letzte fällt dann hinten raus.
...wär ja mal ne Idee^^Zitatwenn ich das mit m=1 ausfähre, ist es korrekt (3,73 sek).
hmmm, läuft bei mir in beiden Fällen....check das mal bitte, werden Takt und Anzahl der Kerne richtig erkannt? Eigentlich wird ja nur die bisher benötigte Zeit abgefragt...siehst du ja selbst. Eigentlich wollte ich das schon bissl länger laufen lassen, so 30-40 Sekunden, dann kommt die "Geschwindigkeit" bei schnellen Rechnern besser raus^^
Pass doch einfach mal bei $sleep= die 2000 an, ggf mal 5000 oder so...
Hab noch nen 1,2Ghz P3, der rackert ganz schön,Bei 4 gleichzeitig in jeweils einer Dosbox laufenden Simulation hat der immer noch 0% Prozessorlast
-
Hier mein Quelltext:
Spoiler anzeigen
#include
#includeIf $CmdLine[0] > 0 Then
$passwort = $CmdLine[1]
Else
$passwort = 'test123'
EndIfIf $CmdLine[0] > 1 Then
$cpu = $CmdLine[2]
Else
$cpu = 'Quadcore running at ~ 3.002 Mhz'
EndIf$tmp = 0
; Tray-Menü
TraySetState(1); GUI - Oberfläche
GUISetIcon('skull.ico')
$gui_a = GUICreate('OS PASS RECOVERY TOOL bY noobZ', 500, 400, -1, -1) ; $WS_POPUPWINDOW
GUISetBkColor(0x000000)
GUICtrlCreateLabel('OS PASS RECOVERY TOOL :' & @CRLF & '************************' & @CRLF & '!!USE OF YOUR OWN RISK!!' & @CRLF & @CRLF & 'PRESS [SPACE] TO START', 5, 10, 300, 100)
GUICtrlSetFont(-1, 12, 400, -1, "Courier New")
GUICtrlSetColor(-1, 0xffffff)
GUISetState(); GUI - Interaktion
HotKeySet('{Space}', 'HotKey_Space')
Do
$aktion = GUIGetMsg()
Switch $aktion
Case - 3
Exit
EndSwitch
Until FalseFunc HotKey_Space()
GUIDelete($gui_a)
$gui_a = GUICreate('ANALYSING....', 550, 400, -1, -1) ; $WS_POPUPWINDOW
GUISetBkColor(0x000000)
Global $a[20]
For $i = 1 To 8 ; WICHTIG +1
$a[$i] = GUICtrlCreateLabel('', 5, $tmp, 550, 25)
GUICtrlSetFont(-1, 12, 400, -1, "Courier New")
GUICtrlSetColor(-1, 0xffffff)
$tmp += 20
Next
GUISetState()
GUICtrlSetData($a[1], '')
Warten(3000, $a[1])
GUICtrlSetData($a[2], 'CPU Architecture: ' & @CPUArch & ' ' & $cpu)
Warten(500, $a[2])
GUICtrlSetData($a[3], 'Temporary Process ID: ' & @AutoItPID)
Warten(1000, $a[3])
GUICtrlSetData($a[4], 'OS Type: ' & @OSType)
Warten(500, $a[4])
GUICtrlSetData($a[5], 'OS Version: ' & @OSVersion)
Warten(200, $a[5])
GUICtrlSetData($a[6], 'OS Build: ' & @OSBuild)
Warten(1000, $a[6])
GUICtrlSetData($a[7], 'CPU Service Pack: ' & @OSServicePack)
Warten(2000, $a[7], 1)
GUIDelete($gui_a)$gui_a = GUICreate('BRUTE FORCE....', 550, 70, -1, -1, $WS_POPUPWINDOW)
GUISetBkColor(0xff0000)
$a[0] = GUICtrlCreateLabel('BRUTE FORCE.... Take a Coffee', 5, 10, 550, 25)
GUICtrlSetFont(-1, 12, 400, -1, "Courier New")
GUICtrlSetColor(-1, 0xffffff)
$a[1] = GUICtrlCreateLabel('', 5, 30, 550, 25)
GUICtrlSetFont(-1, 12, 400, -1, "Courier New")
GUICtrlSetColor(-1, 0xffffff)
$a[2] = GUICtrlCreateLabel('', 5, 50, 550, 25)
GUICtrlSetFont(-1, 12, 400, -1, "Courier New")
GUICtrlSetColor(-1, 0xffffff)
$a[3] = GUICtrlCreateLabel('', 5, 50, 550, 25)
GUICtrlSetFont(-1, 12, 400, -1, "Courier New")
GUICtrlSetColor(-1, 0xffffff)
GUISetState()Local $tmp3, $tmp4
For $l = 1 To 150
$tmp3 = ''
$tmp4 = ''
$tmp5 = ''For $i = 0 To 58
$tmp3 &= String(Random(0, 1, 1))
$tmp4 &= String(Random(0, 1, 1))
$tmp5 &= Chr(Random(65, 122,1 ))
GUICtrlSetData($a[1], $tmp3)
GUICtrlSetData($a[2], $tmp4)
GUICtrlSetData($a[3], $tmp5)
Next
Sleep(80)
NextBeep()
InputBox('FOUND', 'YOUR PASSWORD: ', $passwort)
Exit
EndFunc ;==>HotKey_SpaceFunc Warten($zeit, $i, $b = 0)
$tmp3 = 0
$tmp2 = TimerInit()
While $tmp3 < $zeit
If $b = 1 Then
GUICtrlSetData($a[$i] - 1, 'Pass Location Detected!')
GUICtrlSetBkColor($a[$i] - 1, 0xff0000)
Sleep(500)
GUICtrlSetBkColor($a[$i] - 1, 0x000000)
Sleep(200)
Else
GUICtrlSetData($a[$i] - 1, 'Detecting...')
GUICtrlSetBkColor($a[$i] - 1, 0xff0000)
Sleep(100)
GUICtrlSetBkColor($a[$i] - 1, 0x00ff00)
Sleep(100)
EndIf
$tmp3 = TimerDiff($tmp2)
WEnd
GUICtrlSetBkColor($a[$i] - 1, 0x000000)
EndFunc ;==>Warten[/autoit]
Gruß -
Hi,
Script extrem gekürzt und die "richtige" Matrix-Optik eingebaut....Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Outfile=Simulation.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Array.au3>
#include <String.au3>
#include <Misc.au3>
;~ Das Alles So Lassen
;~ Also Nichts ÄndernOpt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Local $matrixmode, $dll, $fallend, $Kerne, $leerstring, $objItem, $objWMIService, $Prozessor, $sleep, $colItems, $takt, $timer, $pos
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $dosboxzeilen, $stars, $stars1, $anzahlsternchen, $sKennwort$sKennwort = "Weist du Nicht!"; <-- Das "Fake"- Kennwort
[/autoit] [autoit][/autoit] [autoit]
$matrixmode = 0
If $cmdline[0] <> 0 Then
; _ArrayDisplay($cmdline)
For $i = 1 To $cmdline[0] ;alle parameter durchgehen
If StringLeft($cmdline[$i], 3) = "/p=" Then ;passwort gesetzt
$sKennwort = StringTrimLeft($cmdline[$i], 3)
EndIf
If StringLeft($cmdline[$i], 3) = "/m=" Then ;Matrixmodus gesetzt
$matrixmode = Int(Number(StringTrimLeft($cmdline[$i], 3)))
If $matrixmode < 0 Or $matrixmode > 1 Then $matrixmode = 0
EndIfIf StringLeft($cmdline[$i], 3) = "/h" Or StringLeft($cmdline[$i], 3) = "/?" Then ;passwort gesetzt
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite("Parameter:" & @CRLF)
ConsoleWrite(" /p=[Passwort] beliebiges Passwort eingeben" & @CRLF)
ConsoleWrite(" /m=[0/1] 0 es faellt nur ein Buchstabe" & @CRLF)
ConsoleWrite(" 1 es faellt eine Reihe mit Buchstaben" & @CRLF)
ConsoleWrite(" /h oder /? dieser Hilfetext" & @CRLF & @CRLF)
ConsoleWrite("Beispiel: Simulation.exe /m=0 /p=TestPassWort" & @CRLF)
Exit
EndIf
NextEndIf
[/autoit] [autoit][/autoit] [autoit]$dll = DllOpen("user32.dll"); für _ispressed()
[/autoit] [autoit][/autoit] [autoit]$stars = _StringRepeat("*", StringLen($sKennwort)) ;Kennwort mit Sternchen auffüllen
[/autoit] [autoit][/autoit] [autoit]
$leerstring = _StringRepeat(" ", StringLen($sKennwort))
$anzahlsternchen = StringLen($stars)
$stars1 = $stars$dosboxzeilen = 25
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];Taktfrequenz des Prozessors holen, je schneller, desto schneller "knackt" der Rechner das PW!
[/autoit] [autoit][/autoit] [autoit]
; by Oscar
$objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Processor', 'WQL', 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$Prozessor = $objItem.Name
$takt = $objItem.CurrentClockSpeed / 1000 ;Mhz
$Kerne = $objItem.NumberOfCores
Next
EndIf$sleep = 4000 / $takt / $Kerne ;Wartezeit in ms
[/autoit] [autoit][/autoit] [autoit]
;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sleep = ' & $sleep & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console$timer = TimerInit()
[/autoit] [autoit][/autoit] [autoit]ConsoleWrite(@CRLF & @CRLF & @CRLF)
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite("--------------------------------------------------------------------------------" & @CRLF)
ConsoleWrite("Das Passwort dieses Computers wird nun mittels der MATRIX-Methode entschlüsselt!" & @CRLF)
ConsoleWrite("Prozessor: " & $Prozessor & " mit " & $takt & " Mhz und " & $Kerne & " Kernen" & @CRLF)
ConsoleWrite("Drücken Sie bitte die Leertaste, um das Passwort zu entschlüsseln..." & @CRLF)
ConsoleWrite("--------------------------------------------------------------------------------" & @CRLF)
While 1
If _IsPressed("20", $dll) Then ExitLoop
If _IsPressed("0D", $dll) Then
ConsoleWrite("Die Leertaste ist die lange Taste unten an der Tastatur, auf der KEINE " & @CRLF & "Buchstaben stehen!" & @CRLF)
ConsoleWrite("Das üben wir nochmal...zur Strafe 10 Sekunden warte n!" & @CRLF)
Sleep(10000)
ConsoleWrite("Dann probieren wir es nochmal...." & @CRLF & @CRLF)
ConsoleWrite("Bitte die Leertaste drücken!" & @CRLF)
EndIf
WEnddim $array[$dosboxzeilen + 1]
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $dosboxzeilen-1
[/autoit] [autoit][/autoit] [autoit]
$array[$i] = $leerstring
Next
$array[$dosboxzeilen] = $stars1 ;in der letzten Zeile steht das PasswortWhile 1
[/autoit] [autoit][/autoit] [autoit]
For $x = $dosboxzeilen - 1 To 2 Step -1 ;push
$array[$x] = $array[$x - 1]
Next
$pos = Random(1, StringLen($stars), 1) ;zufällige Position im String suchen und Buchstabe merken
$array[1] = StringReplace($leerstring, $pos, Chr(64 + Random(1, 60, 1)))
For $i = 1 To $dosboxzeilen ; Sternchen fallen lassen a la Matrix^^
If $array[$dosboxzeilen - 1] = $leerstring and $array[$dosboxzeilen - 2] <> $leerstring then ;wenn die buchstaben unten angekommen sind , adlibenable starten
AdlibEnable("sleeptime", $sleep) ;je schneller der Rechner, desto öfter wird die Funktion aufgerufen, um das Passwort zu entschlüsseln
endif
ConsoleWrite( $array[$i] & @CRLF)
Next
Sleep(200)If $stars = $sKennwort Then ExitLoop ;raus wenn passwort "geknackt"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEnd
For $i = 1 To $dosboxzeilen ; sicherheitshalber das Passwort zeigen, adlibenable könnte das passwort bereits fertig haben aber es wurde noch nicht dargestellt
ConsoleWrite( $array[$i] & @CRLF)
Next
ConsoleWrite(@CRLF & @CRLF & "Password erfolgreich geknackt in " & StringFormat("%.2f", TimerDiff($timer) / 1000) & " Sekunden! " & @CRLF)
ConsoleWrite(@CRLF & @CRLF & "Zum Anzeigen der Startparameter bitte das Programm mit /h oder /? aufrufen." & @CRLF & @CRLF)Func sleeptime()
[/autoit]
do
$pos = Random(1, StringLen($stars), 1) ;zufällige Position im String suchen und Buchstabe merken
until stringmid($stars,$pos,1)="*" ;nur wenn an $pos ein Sternchen ist
$stars = StringLeft($stars, $pos - 1) & StringMid($sKennwort, $pos, 1) & StringRight($stars, StringLen($stars) - $pos) ;Buchstabe an die richtige Position, Passwort "entschlüsseln"
$array[$dosboxzeilen] = $stars
; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $stars = ' & $stars & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
EndFunc ;==>sleeptime
Soll da noch der Matrix-Sound dazu? Hätte den grade da...^^ -
Hi,
fehlt nurnoch, dass die Zeichen bei den Sternen auch genau dann erscheinen, wenn das richtige Zeichen gerade "durchgeflogen" ist, dann sähe es so aus als ob jemand BruteForce richtig schön animiert hätte
Super Ideeen(stimmt die Anzahl "e"s? xD) die ich hier sehe