Hackersimulation schreiben

  • 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?

    Einmal editiert, zuletzt von mille86 (16. Oktober 2009 um 19:46)

  • Hallo mille86

    Das mit der "Animation" Kannst du So Machen :

    [autoit]


    ;~ Das Alles So Lassen
    #AutoIt3Wrapper_Outfile=Simulation.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Change2CUI=y
    ;~ Also Nichts Ändern

    [/autoit][autoit][/autoit][autoit]

    $sKennwort = "Weist du Nicht!"; <-- Das "Fake"- Kennwort
    $iSleep = 500 ; <-- Sleep (in MS) Zwischen Jedem Buchstaben

    [/autoit][autoit][/autoit][autoit]

    $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
    $sChar = StringMid($sKennwort, $iStep, 1)
    ConsoleWrite($sChar)
    Sleep($iSleep)
    Next

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite(@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 :D und aus dem daraus resultierenden Faktor macht blablub.....interessiert eh keinen 8o
    Starten, ablachen :rofl:

    Btw, 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 ****
    #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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $sKennwort = "Weist du Nicht!"; <-- Das "Fake"- Kennwort
    $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
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If StringLeft($cmdline[$i], 3) = "/h" Or StringLeft($cmdline[$i], 3) = "/?" Then ;passwort gesetzt
    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
    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $dll = DllOpen("user32.dll"); für _ispressed()

    [/autoit] [autoit][/autoit] [autoit]

    $stars = _StringRepeat("*", StringLen($sKennwort)) ;Kennwort mit Sternchen auffüllen
    $leerstring = _StringRepeat(" ", StringLen($sKennwort))
    $anzahlsternchen = StringLen($stars)
    $stars1 = $stars

    [/autoit] [autoit][/autoit] [autoit]

    $dosboxzeilen = 25 + 1

    [/autoit] [autoit][/autoit] [autoit]

    ;Taktfrequenz des Prozessors holen, je schneller, desto schneller "knackt" der Rechner das PW!
    ; 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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $dual = StringReplace($prozessor, "dual", "Dual") ;2 Prozessorkerne
    $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^^

    [/autoit] [autoit][/autoit] [autoit]

    ;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
    $sleeptime = 50
    $timer = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite(@CRLF & @CRLF & @CRLF)
    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

    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $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
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit]

    ciao
    Andy

  • Hey,
    Matrix hatte ich auch mein erster Gedanke xD
    wow - so viel Arbeit... und das um 1 Uhr nachts - das ist ja echt :thumbup: Soviel 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 ;)

    Code
    Simulation.exe /m=0 /p=schniedelwutz
    Password erfolgreich geknackt in 21.01 Sekunden!

    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.

    Zitat

    ne 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^^

    sc4ry,

    Zitat

    wenn 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, :rofl::rofl: Bei 4 gleichzeitig in jeweils einer Dosbox laufenden Simulation hat der immer noch 0% Prozessorlast :thumbup:

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (16. Oktober 2009 um 14:15)

  • Hier mein Quelltext:

    Spoiler anzeigen


    #include
    #include


    If $CmdLine[0] > 0 Then
    $passwort = $CmdLine[1]
    Else
    $passwort = 'test123'
    EndIf

    If $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 False

    Func 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)
    Next

    Beep()
    InputBox('FOUND', 'YOUR PASSWORD: ', $passwort)
    Exit
    EndFunc ;==>HotKey_Space


    Func 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ß

    Einmal editiert, zuletzt von mille86 (16. Oktober 2009 um 19:46)

  • Hi,
    Script extrem gekürzt und die "richtige" Matrix-Optik eingebaut....

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $matrixmode, $dll, $fallend, $Kerne, $leerstring, $objItem, $objWMIService, $Prozessor, $sleep, $colItems, $takt, $timer, $pos
    Global $dosboxzeilen, $stars, $stars1, $anzahlsternchen, $sKennwort

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $sKennwort = "Weist du Nicht!"; <-- Das "Fake"- Kennwort
    $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
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If StringLeft($cmdline[$i], 3) = "/h" Or StringLeft($cmdline[$i], 3) = "/?" Then ;passwort gesetzt
    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
    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $dll = DllOpen("user32.dll"); für _ispressed()

    [/autoit] [autoit][/autoit] [autoit]

    $stars = _StringRepeat("*", StringLen($sKennwort)) ;Kennwort mit Sternchen auffüllen
    $leerstring = _StringRepeat(" ", StringLen($sKennwort))
    $anzahlsternchen = StringLen($stars)
    $stars1 = $stars

    [/autoit] [autoit][/autoit] [autoit]

    $dosboxzeilen = 25

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Taktfrequenz des Prozessors holen, je schneller, desto schneller "knackt" der Rechner das PW!
    ; 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

    [/autoit] [autoit][/autoit] [autoit]

    $sleep = 4000 / $takt / $Kerne ;Wartezeit in ms
    ;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sleep = ' & $sleep & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

    [/autoit] [autoit][/autoit] [autoit]

    $timer = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite(@CRLF & @CRLF & @CRLF)
    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

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    dim $array[$dosboxzeilen + 1]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $dosboxzeilen-1
    $array[$i] = $leerstring
    Next
    $array[$dosboxzeilen] = $stars1 ;in der letzten Zeile steht das Passwort

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    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)

    [/autoit] [autoit][/autoit] [autoit]

    If $stars = $sKennwort Then ExitLoop ;raus wenn passwort "geknackt"
    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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func sleeptime()
    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

    [/autoit]


    Soll da noch der Matrix-Sound dazu? Hätte den grade da...^^

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (16. Oktober 2009 um 16:29)

  • 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 :thumbup: