1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • _StringEncryptXOR

    • Oscar
    • 4. November 2008 um 20:13

    Ich habe den Algorithmus jetzt noch etwas verändert und bei der Analyse über die statistische Verteilung führt das dann zu diesem Ergebnis:

    Verteilung unverschlüsselt:
    FahneDE.zip

    Verteilung verschlüsselt:
    Wiki.zip

    Wobei der Maximum-Ausschlag beim verschlüsselten Text bei "nur" 1.39% liegt. Die Verteilung an sich ist aber doch relativ ausgeglichen?!
    Ich bin aber kein Krypto-Experte, von daher kann ich nicht sagen, ob man das nicht trotzdem knacken kann... :huh:

    Vorerst (bis mich jemand vom Gegenteil überzeugt) bin ich mit der Funktion zufrieden, was Sicherheit und Schnelligkeit angeht. :)

    Und für die wirklich wichtigen Sachen gibt's PGP (Mailverschlüsselung) und Truecrypt (sicherer Daten-Container). ;)

  • Mein Internet ist sau langsam

    • Oscar
    • 4. November 2008 um 16:17

    Greek: Bei Deinem beruflichen Werdegang solltest Du kBit und kByte nicht so oft durcheinander bringen... ;)

  • Autoit Newbe - vermutlich leichte Frage

    • Oscar
    • 4. November 2008 um 16:01

    Oder einfach mit StringRight und StringInStr:

    [autoit]


    $path = 'E:\TEMP\gula.txt'
    $file = StringRight($path, StringInStr($path, '\', 0, -1))
    MsgBox(0,0, $file)

    [/autoit]
  • [Router-Reconnect] Aus Zähler-Datei Wert auslesen+ändern, wieder abspeichern!

    • Oscar
    • 3. November 2008 um 22:32

    Sollte mit ShellExecute bzw. ShellExecuteWait klappen:

    [autoit]


    ShellExecute(@ScriptDir & '\curl.exe', '-d "CmStartDownstreamFrequency=1" http://192.168.100.1/goform/gscan')

    [/autoit]
  • Start - Stop Buttons (bei stop soll die aktuellle schleife beendet werden) WIE?

    • Oscar
    • 3. November 2008 um 22:06

    Ich hab's geahnt....

    Bitte Forenregeln beachten!

  • Start - Stop Buttons (bei stop soll die aktuellle schleife beendet werden) WIE?

    • Oscar
    • 3. November 2008 um 21:33

    Bei einem Sleep macht AutoIt überhaupt nichts, wie der Name des Befehls bereits andeutet. ;)

    Das musst Du über mehrere Timer lösen.

  • _StringEncryptXOR

    • Oscar
    • 3. November 2008 um 21:25

    Ich habe mich noch ein wenig mit der XOR-Verschlüsselung beschäftigt.

    Die eigentliche Schwachstelle bei der XOR-Verschlüsselung soll doch die statistische Verteilung der Buchstaben sein, habe ich das richtig verstanden?
    Bei meinem obigen Script, benutze ich aber für die XOR-Verschlüsselung nicht nur das Passwort, sondern zusätzlich wird noch die momentane Position des Passwort-Zeichens geXORrt, was beim "knacken" eine zusätzliche Unbekannte (Passwortlänge) bedeutet.
    Nun habe ich mir den Ursprungstext, sowie den verschlüsselten Text mal mit einem Hex-Editor angesehen und mir die Statistik anzeigen lassen. Dabei erhalte ich folgende Statistiken:

    unverschlüsselter Text:
    Pers.Einst..jpg

    verschlüsselter Text:
    Imagemap2.bmp

    Nun ist es aber keineswegs so, dass die 44 (Hex-Wert) aus dem verschlüsselten Text immer ein und denselben Buchstaben repräsentieren würde. Das ist mal ein "t", mal ein Leerzeichen und mal ein "s" (jeweils bezogen auf den unverschlüsselten Text).
    Wie soll da nun aber eine Angriffsmöglichkeit über die statistische Verteilung aussehen?
    Oder anders ausgedrückt, wie müßte ein AutoIt-Script aussehen, mit dem man diese Verschlüsselung "knacken" kann (außer BruteForce)?

  • _FileListTreeToArray UDF

    • Oscar
    • 3. November 2008 um 20:26

    Jo, soweit funktioniert es! :)

    Aber...die deutschen Umlaute werden nicht richtig angezeigt... :huh:

  • Schauen ob Variable exestiert!

    • Oscar
    • 3. November 2008 um 20:18

    Beispiel (aus der Hilfedatei):

    [autoit]


    If Not IsDeclared ("a") then
    MsgBox(0,"", "$a is NOT declared") ; $a has never been assigned
    EndIf

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

    $a=1

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

    If IsDeclared ("a") then
    MsgBox(0,"", "$a IS declared" ) ; due to previous $a=1 assignment
    EndIf

    [/autoit]
  • GUI-Problem mit Arrays und StrigProblem

    • Oscar
    • 3. November 2008 um 20:16

    Die einzige Möglichkeit ist über Assign und eben Eval zum auslesen:

    [autoit]


    $x = 50
    $y = 30
    Assign($x & '-' & $y, 42)
    MsgBox(0,0, Eval($x & '-' & $y))

    [/autoit]

    Verstehe aber auch nicht, was Du damit erreichen willst. :?:

  • GUI-Problem mit Arrays und StrigProblem

    • Oscar
    • 3. November 2008 um 19:57

    Frage 2: Meinst Du so?

    [autoit]


    $x = 50
    $y = 30
    Assign('Hallo' & $x & $y, 42)
    MsgBox(0,0, Eval('Hallo' & $x & $y))

    [/autoit]
  • [Router-Reconnect] Aus Zähler-Datei Wert auslesen+ändern, wieder abspeichern!

    • Oscar
    • 3. November 2008 um 19:47

    Ich verstehe zwar nicht so ganz den Sinn dahinter, aber egal...
    Hier jetzt mal ein Script, das jede Sekunde die Zahl um eins erhöht und in die Datei schreibt:

    Spoiler anzeigen
    [autoit]


    Global $Filename = @ScriptDir & '\Zahl.txt'
    Global $Timer = TimerInit(), $Zahl, $hFile
    While True
    If Not FileExists($Filename) Then FileWrite($Filename, '10')
    If $Timer >= 1000 Then ; warten bis eine Sekunde (1000 Millisekunden) vergangen sind
    $Timer = TimerInit()
    $Zahl = FileRead($Filename)
    $Zahl += 1
    If $Zahl > 60 Then $Zahl = 10
    $hFile = FileOpen($Filename, 2)
    FileWrite($hFile, $Zahl)
    FileClose($hFile)
    EndIf
    Sleep(20)
    WEnd

    [/autoit]
  • Start - Stop Buttons (bei stop soll die aktuellle schleife beendet werden) WIE?

    • Oscar
    • 3. November 2008 um 19:32

    Vielleicht so:

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>
    #include<StaticConstants.au3>
    Global $Counter, $Add, $Time
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 203, 91, 193, 125)
    $Label1 = GUICtrlCreateLabel("Label1", 12, 8, 174, 40, $SS_CENTER)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial Black")
    $Start = GUICtrlCreateButton("Start", 16, 56, 75, 25, 0)
    $Stop = GUICtrlCreateButton("Stop", 104, 56, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $Time = TimerInit()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Start
    $Counter = 1
    Case $Stop
    $Counter = 0
    MsgBox(0, "Stop", "Zähler wurde Angehalten.")
    EndSwitch
    If $Counter And TimerDiff($Time) >= 1000 Then
    $Time = TimerInit()
    $Add = $Add + 1
    GUICtrlSetData($Label1, $Add)
    EndIf
    WEnd

    [/autoit]
  • _FileListTreeToArray UDF

    • Oscar
    • 3. November 2008 um 04:39

    Das Script enthält noch Fehler:

    Zum einen fehlt (vermutlich) ein AND in der Zeile 51 (Syntax Error):

    [autoit]


    If StringLen($wSort) <> 1 or $wSort <> "N" and $wSort <> "S" and $wSort <> "E" $wSort <> "D" and $wSort <> "G" and $wSort <> _
    "" then return 1

    [/autoit]

    Zum anderen wird das SystemDir eingelesen, wenn ich 'c:\' als Pfad übergebe:

    [autoit]


    #include<Array.au3>
    $array = _FileListTreeToArray('c:\')
    _ArrayDisplay($array)

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

    [...]

    [/autoit]
  • teilweise Probleme mit Weiterverwendung von Variablen

    • Oscar
    • 2. November 2008 um 17:21

    Ach, ich sehe gerade noch: $scriptdir
    Ich gehe jetzt mal davon aus, das die Variable den tatsächlichen Pfad enthält und Du das nicht versehentlich mit dem Macro @ScriptDir verwechselt hast?!

  • teilweise Probleme mit Weiterverwendung von Variablen

    • Oscar
    • 2. November 2008 um 16:37

    Hmm...ohne den Rest des Scripts zu sehen, würde ich mal raten, dass $msg keine globale Variable ist und deshalb in der Funktion der Fehler auftritt.
    Deklariere $msg mal als Global:

    [autoit]


    Global $msg = IniReadSection($scriptdir & "dd-gui.ini", _Language())

    [/autoit]
  • _StringEncryptXOR

    • Oscar
    • 2. November 2008 um 15:41

    Ich weiß, dass XOR nicht so sicher ist, aber mir kam es hier jetzt darauf an, dass die Datei nicht so aufgebläht wird, wie mit _StringEncrypt().

  • _StringEncryptXOR

    • Oscar
    • 2. November 2008 um 15:23

    Ich brauchte gerade eine Verschlüsselungsroutine für Texte, wollte aber _StringEncrypt nicht benutzen und so habe ich diese Funktionen geschrieben:

    Den Beispieltext "!cryptfile.txt" findet ihr als Anhang.

    Spoiler anzeigen
    [autoit]


    $sText = FileRead(@ScriptDir & '\!cryptfile.txt') ; Beispieltext zum verschlüsseln

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

    $sPass = 'ßYm3Ü5Q$Y4AfDIM0tch0V2"8zg7i&U#Xn26=' ; Passwort zum verschlüsseln
    $sFilename = @ScriptDir & '\!cryptfile.cr' ; Pfad + Dateiname für die verschlüsselte Datei

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

    _FileCryptSave($sText, $sPass, $sFilename) ; Text verschlüsseln und abspeichern

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

    $sPass = 'abcdefgh' ; Passwort zum entschlüsseln (hier extra falsch eingegeben, um zu zeigen, dass dann der Text nicht richtig entschlüsselt wird)
    $sFilename = @ScriptDir & '\!cryptfile.cr' ; Pfad + Dateiname für die zu entschlüsselnde Datei

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

    MsgBox(0, 'Falsches Passwort:', _FileCryptRead($sPass, $sFilename)) ; Datei laden, entschlüsseln und anzeigen

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

    $sPass = 'ßYm3Ü5Q$Y4AfDIM0tch0V2"8zg7i&U#Xn26=' ; Passwort zum entschlüsseln (jetzt mit richtigem Passwort)
    $sFilename = @ScriptDir & '\!cryptfile.cr' ; Pfad + Dateiname für die zu entschlüsselnde Datei

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

    MsgBox(0, 'Richtiges Passwort:', _FileCryptRead($sPass, $sFilename)) ; Datei laden, entschlüsseln und anzeigen

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

    Func _FileCryptSave($sText, $sPass, $sFile)
    Local $hFile = FileOpen($sFile, 2 + 8)
    If $hFile <> -1 Then
    FileWrite($hFile, StringToBinary(_StringEncryptXOR($sText, $sPass, -2)))
    FileClose($hFile)
    Else
    SetError(1)
    EndIf
    EndFunc ;==>_FileCryptSave

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

    Func _FileCryptRead($sPass, $sFile)
    Local $hFile = FileOpen($sFile, 0)
    If $hFile <> -1 Then
    Local $out = _StringEncryptXOR(FileRead($hFile), $sPass, 2)
    FileClose($hFile)
    Return $out
    Else
    SetError(1)
    EndIf
    EndFunc ;==>_FileCryptRead

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

    Func _StringEncryptXOR($sText, $sPass, $crypt)
    Local $sOut, $c, $p, $iLen = StringLen($sPass)
    For $i = 1 To StringLen($sText) ; Zeichen für Zeichen des Textes durchgehen
    $p = Mod($i, $iLen) ; Position im Passwort (Null bis Passwortlänge minus 1)
    $c = Asc(StringMid($sPass, $p, 1)) ; das Zeichen, was an Position $p im Passwort steht
    $sOut &= Chr(BitXOR(Asc(StringMid($sText, $i, 1)), $c, BitRotate($p, 4, 'B'))) ; das momentane Zeichen im Text mit $c1 und $p XOR'en
    Next
    Return $sOut
    EndFunc ;==>_StringEncryptXOR

    [/autoit]

    _FileCryptSave() speichert einen Text verschlüsselt ab. Text, Passwort und Dateiname müssen der Funktion übergeben werden (siehe Beispiel).

    _FileCryptRead() liest einen Text aus einer Datei und gibt den entschlüsselten Text zurück. Passwort und Dateiname müssen der Funktion übergeben werden (siehe Beispiel).

    _StringEncryptXOR() ist die eigentliche Ver-/Entschlüsselungsroutine. Text und Passwort müssen der Funktion übergeben werden.

    Vielleicht kann die Funktionen ja noch jemand gebrauchen...

  • Funktion PID2WinTitle

    • Oscar
    • 1. November 2008 um 04:21

    Die Variable $Fensteranzahl kannst Du noch einsparen:

    Spoiler anzeigen
    [autoit]


    #Include <Array.au3>
    $title = _PID2WinTitle(4068)
    _ArrayDisplay($Title)

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

    Func _PID2WinTitle($pid)
    Local $aFenstertitel[1] = [0], $Liste = WinList()
    For $i = 1 To $Liste[0][0]
    If $pid = WinGetProcess($Liste[$i][0]) Then
    ReDim $aFenstertitel[$aFenstertitel[0]+2]
    $aFenstertitel[0] += 1
    $aFenstertitel[$aFenstertitel[0]] = $Liste[$i][0]
    EndIf
    Next
    Return $aFenstertitel
    EndFunc

    [/autoit]

    Aber sonst: Sehr schöne Funktion! :)

  • brauche hilfe

    • Oscar
    • 31. Oktober 2008 um 21:10

    Chance vertan (Thread closed)!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™