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. Andy

Beiträge von Andy

  • Crashkurs in Algorithmen

    • Andy
    • 3. August 2010 um 21:10

    Egal welche Verschlüsselungsmethode angewendet wird, der Schlüssel und/oder das Passwort hat in keinem AutoIt-Script bzw auf einem Rechner etwas zu suchen! Der gehört, genau wie Zugangspasswörter oder Pin-Nummern, in einen "Datasafe" ins Portemonnaie. Wenn es Hackern irgendwann gelingt, an bzw. in meine Geldbörse zu kommen, fange ich an, mir Gedanken zu machen!
    Wenn es um wichtige Firmendaten geht, ist man mit den "herkömmlichen" Methoden (z.B. AES) am besten dran, aber nicht etwa, weil die besonders sicher sind, sondern weil im allerschlimmsten Fall (Schlüssel/Passwort verloren) eine Rekonstruktion der Daten möglich ist! Das lassen sich aber darauf spezialisierte Firmen fürstlichst bezahlen.
    Um geklaute MP3´s oder die Pornosammlung vor Mama zu verbergen, reichen die "billigen" Verfahren idR aus.

    Viel spannender als die plumpe Verschlüsselung ist aber das Verstecken von Daten in der Öffentlichkeit, jedermann hat Zugriff, aber niemand "sieht" das Geheimnis, die sogenannte Steganographie. Anbei ein Beispiel, bei dem "unsichtbar" ein bis zu 819 Buchstaben langer Text in einem 32x32-Icon "versteckt" wird, ohne daß man eine Änderung am Icon erkennen kann. Damit die kleinen Icons in der GUI nicht gar so winzig sind, habe ich sie auf 100x100Pixel "gestretchblittet". Und wer es nicht glaubt, daß sich das "Orginal" und das Icon mit integriertem Text nicht unterscheiden, kann sie gerne abspeichern und dann mit einem Hexeditor betrachten^^

    Spoiler anzeigen
    [autoit]

    ;eine Text-Nachricht mit bis zu 819 Zeichen wird "unsichtbar" im AutoIt-Icon versteckt und wieder extrahiert
    ;Beispiel für Steganographie von Andy

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

    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <WinAPIEx.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>
    #include <EditConstants.au3>

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

    Local $hGUI, $hEdit, $hicon
    Local $pointer_icon, $hbmp_icon ;pointer und handle icon
    Local $pointer_stegano, $hbmp_stegano ;pointer und handle stegano
    local $pointer_diff, $hbmp_diff ;pointer und handle differenzbild

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

    $hGUI = GUICreate("Beispiel für Steganographie", 560, 300) ;GUI
    $label1=GUICtrlCreateLabel("Orginal Icon Icon mit integriertem Text Differenzbild 64-fach verstärktes Differenzbild",10,10)
    $label2=GUICtrlCreateLabel("Der im Icon versteckte Text:",10,170)
    $label3=GUICtrlCreateEdit("",10,195,530,100,$ES_READONLY,0)

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

    $hdc_gui = _WinAPI_GetDC($hGUI) ;DeviceContext der Gui
    GUISetState()

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

    $hDC_icon = _CreateNewBmp32(32, 32, $pointer_icon, $hbmp_icon) ;neue 32-Bit-Bitmap erstellen, Rückgabe: DC, Pointer und Handle

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

    Local $hicon = DllStructCreate("ptr") ;platz für Pointer des/der Icon(s)
    _WinAPI_ExtractIconEx(@AutoItExe, 0, DllStructGetPtr($hicon), 0, 1) ;AutoIt-Icon holen (Zeiger auf die Liste der Handles)
    $hicon = DllStructGetData($hicon, 1) ;Handle des Icons holen
    $anz = _WinAPI_DrawIconEx($hDC_icon, 0, 0, $hicon, 32, 32, 0, _WinAPI_GetSysColorBrush(2), 3) ;Icon in den Buffer "zeichnen"
    _WinAPI_StretchBlt($hdc_gui, 10, 50, 100, 100, $hDC_icon, 0, 0, 32, 32, $SRCCOPY) ;Icon mit 3-facher Größe in die GUI kopieren

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

    ;In diesem Icon wird eine "Nachricht" versteckt, indem ein Text (maximal 819 Zeichen) in die beiden untersten Bits jeder "Pixel"-farbe
    ;kodiert wird. 819 = 32 Pixel * 32 Pixel * 4 Byte pro Pixel (Anzahl Bytes des Icons) / 5 (in 5 Bytes wird ein "Buchstabe" versteckt)
    ;32 Bit pro Pixel= 4 Byte = BBGGRRAA Alphakanal wird nicht verwendet bzw verändert, so kann man auch transparente Icons/Bilder benutzen
    ;Es wird eine neue Bitmap erstellt (_stegano) und diese aus den obersten 6 Bit der Farbe des Orginal-Icons mit den Bits der
    ;Nachricht, welche die untersten beiden Bits der Farb-Bytes enthalten, zusammenkopiert
    ;32 Bit pro Pixel BBBBBBTTGGGGGGTTRRRRRRTTAAAAAAAA TT= Bits eines Buchstabens aus dem Text
    ;das nachfolgende Script kann immens gekürzt werden, allerdings auf kosten der Übersichtlichkeit und des Verständnisses^^
    $Text = "Hallo, diese Nachricht ist im AutoIt-Icon versteckt!"&@crlf ;versteckte Nachricht
    $text&="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo."

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

    ;den Text in 2-Bit lange Teilstücke auftrennen
    Dim $bitarray[32 * 32 * 4] ;Platz für die 2-Bit-Stücke 8 Bit = 4 * 2 Bit

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

    For $i = 1 To StringLen($Text) ;jeden Buchstaben im Text holen
    $byte = Asc(StringMid($Text, $i, 1)) ;ascii-code der einzelnen Buchstaben holen
    $bitarray[($i - 1) * 4 + 0] = BitShift($byte, 6) ;oberste 2 bit
    $bitarray[($i - 1) * 4 + 1] = BitShift(BitAND($byte, 48), 4) ;nächste 2 bit AND 00110000, bitshift 4
    $bitarray[($i - 1) * 4 + 2] = BitShift(BitAND($byte, 12), 2) ;nächste 2 bit AND 00001100 bitshift 2
    $bitarray[($i - 1) * 4 + 3] = BitAND($byte, 3) ;unterste 2 bit AND 00000011
    Next

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

    ;unterste 2 Bit aus jedem Byte des Icons mit den 2 Byte des Textes ersetzen
    $hDC_stegano = _CreateNewBmp32(32, 32, $pointer_stegano, $hbmp_stegano) ;neue 32-Bit-Bitmap erstellen, Rückgabe: DC, Pointer und Handle
    $struct_stegano = DllStructCreate("byte [" & 32 * 32 * 4 & "]", $pointer_stegano) ;struct mit der größe der Bitmap an der Position der "Kopie"
    $struct_icon = DllStructCreate("byte [" & 32 * 32 * 4 & "]", $pointer_icon) ;struct mit der größe der Bitmap an der Position des Icons

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

    $bitarray_count = 0 ;zähler für den Index des Bitarray
    For $y = 0 To 31 ;spaltenweise Pixel ändern
    For $x = 0 To 31 ;zeilenweise Pixel ändern
    ;Pixel-farbanteile aus dem Icon holen
    $B = DllStructGetData($struct_icon, 1, $y * 128 + ($x * 4) + 1) ;blau-anteil des Pixels
    $G = DllStructGetData($struct_icon, 1, $y * 128 + ($x * 4) + 2) ;gruen-anteil des Pixels
    $R = DllStructGetData($struct_icon, 1, $y * 128 + ($x * 4) + 3) ;rot-anteil des Pixels
    $A = DllStructGetData($struct_icon, 1, $y * 128 + ($x * 4) + 4) ;Alpha-anteil des Pixels (wird nicht verändert)
    ;die untersten 2 Byte der farbanteile "löschen"
    $B = BitAND($B, 252) ;AND 11111100 setzt die unteren beiden bit auf 0, alle anderen bleiben erhalten
    $G = BitAND($G, 252)
    $R = BitAND($R, 252)
    ;Bits aus dem Bitarray dazuaddieren
    $B = $B + $bitarray[$bitarray_count * 3 + 0] ;2 bits aus dem Bitarray in das Byte an unterster position einfügen
    $G = $G + $bitarray[$bitarray_count * 3 + 1]
    $R = $R + $bitarray[$bitarray_count * 3 + 2]
    $bitarray_count += 1 ;zähler erhöhen, nächste 3 2er Bits
    ;mit dem Text modifizierte Farbbytes in Zielbitmap einfügen
    DllStructSetData($struct_stegano, 1, $B, $y * 128 + ($x * 4) + 1) ;blau-anteil in _stegano-bitmap eintragen
    DllStructSetData($struct_stegano, 1, $G, $y * 128 + ($x * 4) + 2) ;grün-anteil in bitmap eintragen
    DllStructSetData($struct_stegano, 1, $R, $y * 128 + ($x * 4) + 3) ;rot-anteil in bitmap eintragen
    DllStructSetData($struct_stegano, 1, $A, $y * 128 + ($x * 4) + 4) ;alpha-anteil in bitmap eintragen
    Next
    Next

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

    ;_stegano-Icon in GUI darstellen
    _WinAPI_StretchBlt($hdc_gui, 140, 50, 100, 100, $hDC_stegano, 0, 0, 32, 32, $SRCCOPY) ;Icon mit 3-facher Größe in die GUI kopieren

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

    ;Text aus dem _stegano-Icon extrahieren
    Dim $char_array[32 * 32 * 4] ;platz für die 2-Bit-stücke machen
    $char_array_count = 0
    For $y = 0 To 31 ;spaltenweise Pixel auslesen
    For $x = 0 To 31 ;zeilenweise Pixel auslesen
    ;Pixel-farbanteile aus dem Icon holen
    $B = DllStructGetData($struct_stegano, 1, $y * 128 + ($x * 4) + 1) ;blau-anteil des Pixels
    $G = DllStructGetData($struct_stegano, 1, $y * 128 + ($x * 4) + 2) ;gruen-anteil des Pixels
    $R = DllStructGetData($struct_stegano, 1, $y * 128 + ($x * 4) + 3) ;rot-anteil des Pixels
    ;die untersten 2 Byte der farbanteile "herauslösen"
    $char_array[$char_array_count * 3 + 0] = BitAND($B, 3) ;AND 00000011 löscht die oberen 6 bit, die beiden unteren bleiben erhalten
    $char_array[$char_array_count * 3 + 1] = BitAND($G, 3)
    $char_array[$char_array_count * 3 + 2] = BitAND($R, 3)
    ;Bits aus dem Bitarray dazuaddieren
    $char_array_count += 1 ;zähler erhöhen, nächste 3 2er Bits
    Next
    Next

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

    $string = "" ;extrahierter text
    For $i = 0 To UBound($char_array) - 1 Step 4
    $char = $char_array[$i] * 64 ;oberste 2bit
    $char += $char_array[$i + 1] * 16 ;nächste 2 bit
    $char += $char_array[$i + 2] * 4 ;nächste 2 bit
    $char += $char_array[$i + 3] ;unterste 2 bit
    $string &= Chr($char) ;8 Bit = 1 Byte = 1 char
    Next

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

    GUICtrlSetData($label3, $string) ;text in GUI anzeigen

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

    ;differenzbild in der GUI anzeigen
    _WinAPI_StretchBlt($hdc_gui, 280, 50, 100, 100, $hDC_Icon, 0, 0, 32, 32, $SRCCOPY) ;Orginal Icon mit 3-facher Größe in die GUI kopieren
    _WinAPI_StretchBlt($hdc_gui, 280, 50, 100, 100, $hDC_stegano, 0, 0, 32, 32, $MERGEPAINT) ;stegano-Icon mit 3-facher Größe in die GUI kopieren und mit dem Orginal XOR-Verknüpfen

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

    ;da nur sehr kleine Änderungen vorhanden sind, muss das Differenzbild für die anzeige verstärkt werden...
    ;dazu werden die einzelnen Farbanteile des Differenzbildes mit 64 multipliziert!
    ;Differenzbild erstellen
    $hDC_diff=_CreateNewBmp32(32, 32, $pointer_diff, $hbmp_diff) ;neue 32-Bit-Bitmap erstellen, Rückgabe: DC, Pointer und Handle
    $struct_diff=dllstructcreate("byte ["&32*32*4&"]",$pointer_diff) ;struct an position des diff-bildes
    _WinAPI_BitBlt($hdc_diff, 0,0, 32, 32, $hDC_Icon, 0, 0, $SRCCOPY) ;Orginal Icon ins DIFF kopieren
    _WinAPI_BitBlt($hdc_diff, 0,0, 32, 32, $hDC_stegano, 0, 0, $mergepaint) ;stegano-Icon DIFF kopieren und mit dem Orginal XOR-Verknüpfen

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

    For $y = 0 To 31 ;spaltenweise Pixel ändern
    For $x = 0 To 31 ;zeilenweise Pixel ändern
    ;Pixel-farbanteile aus dem Icon holen
    $B = DllStructGetData($struct_diff, 1, $y * 128 + ($x * 4) + 1) ;blau-anteil des Pixels
    $G = DllStructGetData($struct_diff, 1, $y * 128 + ($x * 4) + 2) ;gruen-anteil des Pixels
    $R = DllStructGetData($struct_diff, 1, $y * 128 + ($x * 4) + 3) ;rot-anteil des Pixels
    $A = DllStructGetData($struct_diff, 1, $y * 128 + ($x * 4) + 4) ;Alpha-anteil des Pixels (wird nicht verändert)
    ;die untersten 2 Byte der farbanteile mit 64 multiplizieren
    ;geänderte bytes zurückschreiben
    DllStructSetData($struct_diff, 1, $B*64, $y * 128 + ($x * 4) + 1) ;blau-anteil in _diff-bitmap eintragen
    DllStructSetData($struct_diff, 1, $G*64, $y * 128 + ($x * 4) + 2) ;grün-anteil in bitmap eintragen
    DllStructSetData($struct_diff, 1, $R*64, $y * 128 + ($x * 4) + 3) ;rot-anteil in bitmap eintragen
    DllStructSetData($struct_diff, 1, $A, $y * 128 + ($x * 4) + 4) ;alpha-anteil in bitmap eintragen
    Next
    Next
    _WinAPI_StretchBlt($hdc_gui, 400, 50, 100, 100, $hDC_diff, 0, 0, 32, 32, $SRCCOPY) ;Differenzbild mit 3-facher Größe in die GUI kopieren

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    $nMsg = GUIGetMsg()
    Until $nMsg = $GUI_EVENT_CLOSE

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

    Func _CreateNewBmp32($iwidth, $iheight, ByRef $ptr, ByRef $hbmp) ;erstellt leere 32-bit-Bitmap; Rückgabe DC und ptr und handle auf die Bitmapdaten
    ;by Andy
    Local $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
    Local $tBMI = DllStructCreate($tagBITMAPINFO) ;Struktur der Bitmapinfo erstellen und Daten eintragen
    DllStructSetData($tBMI,1, DllStructGetSize($tBMI) - 4);Structgröße abzüglich der Daten für die Palette
    DllStructSetData($tBMI,2, $iwidth)
    DllStructSetData($tBMI,3, -$iheight) ;minus =standard = bottomup
    DllStructSetData($tBMI,4, 1)
    DllStructSetData($tBMI,5, 32) ;32 Bit = 4 Bytes => AABBGGRR
    Local $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', $DIB_RGB_COLORS, 'ptr*', 0, 'ptr', 0, 'uint', 0)
    $hbmp = $adib[0] ;hbitmap handle auf die Bitmap, auch per GDI+ zu verwenden
    $ptr = $adib[4] ;pointer auf den Anfang der Bitmapdaten, vom Assembler verwendet
    ;_arraydisplay($adib)
    _WinAPI_SelectObject($hcdc, $hbmp) ;objekt hbitmap in DC
    Return $hcdc ;DC der Bitmap zurückgeben
    EndFunc ;==>_CreateNewBmp32

    [/autoit]
  • Probleme mit meinem PC

    • Andy
    • 3. August 2010 um 13:09
    Zitat

    Ich habe mir vor ein paar Tagen einen neuen Computer gekauft

    Wo ist denn das Problem? Zurückbringen/zurückschicken, fertig....alles andere ist überflüssige Zeitverschwendung und herumstochern im Nebel. Das kann/muss man dann machen wenn die Gewährleistung abgelaufen ist oder man sich die Komponenten zusammengesucht und selbst zusammengebaut hat.
    Vor kurzem hatten wir hier die Diskussion, ob man 20€ Kosten für das Zusammenbauen eines Rechners "sparen" kann. Soviel dazu! Stundenlang Komponenten tauschen, Fehler suchen und Bauteile prüfen, um dann nachher festzustellen, das jedes einzelne völlig fehlerfrei ist, aber in Kombination mit den anderen nicht funktioniert, ist leider heutzutage üblich. Da ist die Option "zurückschicken" die 20€ immer wert....

  • Informatik studieren

    • Andy
    • 3. August 2010 um 12:55
    Zitat

    Bei uns werden von 75 Studenten im ersten Semester maximal 10 in Regelstudienzeit jetzt ihren Bachelor bekommen. Man darf sich halt nicht davon verrückt machen lassen, dass jedes Semester wieder ein paar Kumpels fehlen. So ist ein Studium

    Kann ich bestätigen, das war früher nicht anders, und warum sollen gerade "gute" Uni´s ihr Niveau senken?

    Zitat

    Wenn auf Informatik kein NC ist und sich alle möglichen Leute dort einschreiben, dann kann das nicht funktionieren.

    Sehe ich anders. Im Studium kommt es darauf an, "den Arsch hochzubekommen". Das ist von den "Schulnoten" völlig unabhängig. In den allermeisten Schulen wird einem irgendetwas vorgekaut und man erhält eine Note, die sich aus dem Fähigkeiten und dem "goodwill" des Lehrers ableiten. In der Uni treffen dann die Einserschüler auf die Viererkandidaten, aber einen Prof interessiert die "Vorbildung" einen Sch***. Der schreibt seine Klausur, und dann gilt "vier bleibt hier"! Und ich habe schon einige "Einserschüler" erlebt, die nach dem ersten Semester die Segel gestrichen haben. Es gibt ein einfaches physikalisches Gesetz: Leistung=Arbeit pro Zeit. Wer am Ende des Semesters seinen Schein nicht bekommt, der hat
    - zu wenig gearbeitet
    - zu viel Zeit verplempert.

  • Crashkurs in Algorithmen

    • Andy
    • 1. August 2010 um 03:17

    Die simpelste und einfachste und auch schnellste Methode ist ein XOR mit einem Zufallsschlüssel. Der Nachteil, für sehr große Datenmengen benötigt man einen langen Schlüssel. Aber das sollte im Zeitalter der Terabyteplatten wohl kein Hindernis sein. (256 Bit Schlüssel KOMMEN AUS DER STEINZEIT, als sich der Herr General nur den Vornamen seiner Frau als Passwort merken konnte!)

    Beispiel:

    Spoiler anzeigen
    [autoit]

    $data = "Hallo, dieser Text wird verschlüsselt und entschlüsselt per XOR!"

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

    ;4 Beispiele für Schlüssel
    $schluessel_1 = "" ;zufälligen schlüssel erstellen, je länger, desto besser, man kann auch beliebige Binär-Dateien, z.B. Bilder oder zip-files als Schlüssel nehmen
    For $i = 1 To stringlen($data) ;oder jede andere beliebige länge
    $schluessel_1 &= Chr(Random(1, 255, 1)) ;zufällige bytes von 1-255
    Next
    $schluessel_2 = "Omas bester Pflaumenkuchen ist soooooooooo lecker, das glaubt man nicht!"
    $schluessel_3 = "11111222333333"
    $schluessel_4 = StringMid(FileRead(@AutoItExe), 1337, 100) ;schlüssel irgendwo aus einer exe nehmen...bei texten sollte man viele nullbytes im schlüssel vermeiden ^^

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

    For $i = 1 To 4 ;die 4 Beispiele anzeigen, data wird jeweils mit einem der 4 Schlüssel ver- und entschlüsselt
    $schluessel = Eval("schluessel_" & $i) ;$schluessel_1 schluessel_2 schluessel_3 usw
    MsgBox(0, "Beispiel " & $i & " Geheimer Schluessel:", $schluessel) ;schlüssel anzeigen
    $test = _XOR_Encrypt_Decrypt($data, $schluessel) ;verschlüsseln
    MsgBox(0, "Verschlüsselt", $test) ;
    $test = _XOR_Encrypt_Decrypt($test, $schluessel) ;entschlüsseln
    MsgBox(0, "Entschlüsselt", $test)
    Next

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

    ;wenn man nun z.B bei vielen kleinen Texten, z.B. Chats, verschlüsseln möchte, dann
    ;erstellt man sich einen großen Zufallsschlüssel und übermittelt in den ersten 6 oder 8 Bytes
    ;die Startposition innerhalb des Schlüssels

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

    ;wer meint, XOR wäre einfach zu knacken, der darf mir das beweisen^^ und entschlüsselt das
    ;folgende Zitat von Goethe....oder wars Schiller.....oder Smudo.....hmmmmmm
    ;
    ;0x0A0F36219034DCBDC90EAFA43DFE2937E6D91136A8B211CD9850785B634D5C5AB347C4534D947D9A378160ADF64DDB8F415C33BE8587C529A8

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

    Func _XOR_Encrypt_Decrypt($data, $schluessel) ;simpel verschlüsseln und entschlüsseln per XOR
    If IsString($data) And IsString($schluessel) Then ;binär, hex, oktal, alles steht offen^^
    $s = 0 ;position im schlüssel
    $xor = ""
    For $i = 1 To StringLen($data) ;jedes byte in data wird ver- oder entschlüsselt...
    $s += 1 ;...mit einem byte aus dem schluessel
    If $s > StringLen($schluessel) Then $s = 1 ;wenn der schlüssel kleiner ist als die daten, wieder von vorne anfangen
    $xor &= Chr(BitXOR(Asc(StringMid($data, $i, 1)), Asc(StringMid($schluessel, $s, 1)))) ; jedes byte in data mit einem Schlüsselbyte XORen
    Next
    EndIf
    Return $xor ;Verschlüsselung oder Entschlüsselung zurückgeben
    EndFunc ;==>_XOR_Encrypt_Decrypt

    [/autoit]

    Vorteil: jeder Mensch kennt XOR, decompilieren sorgt für lange Gesichter. Da man sich jeder Zeit z.B. per Website oder zeitabhängigen Generator einen neuen Schlüssel generieren lassen kann, hat man im Zweifelsfall schneller den Schlüssel gewechselt, als der Angreifer die Übertragung aufzeichnen kann.

  • Ausgabe nach Autoit umlenken

    • Andy
    • 1. August 2010 um 00:39
    Zitat von mattbecher

    läuft prima! Verstehe es allerdings nicht so ganz...

    Mach dir nix draus, aber wenn dir der folgende Textabschnitt aus der Hilfe

    Zitat von Hilfe zu StdoutRead()

    StdoutRead liest aus dem Konsolen-Standard-Ausgabe-Stream eines Child-Prozesses, der normalerweise von Konsolen-Applikationen genutzt wird, um Text auf dem Bildschirm auszugeben.

    zu unverständlich erscheint, dann einfach einen Verbesserungsvorschlag bei Übersetzung der Hilfe-Datei ins Deutsche, Fragen/Anregungen posten.

    Aber Hauptsache, es funktioniert :D

  • USB-Trojaner-Lücke in Windows

    • Andy
    • 1. August 2010 um 00:20

    So ein Mist...
    MS hätte wenigstens freistellen sollen, ob ein "Fix" vom User überhaupt gewünscht ist! Den "Autostart" finde ich nämlich echt klasse!

    Habe hier einige Werbegeschenk-USB-Sticks rumfliegen, für die ich keine Anwendung hatte. Heute (Samstag) Nachmittag rief ein total panischer Kumpel wg. seines Notebooks an, er hatte das Ding im laufenden Zustand runtergeschmissen, das Display war im Eimer und auch das W-Lan, aber lt seiner Angabe lief es noch und "am Montag morgen hab ich ein Meeting in London und brauch unbedingt die Daten!" *kreisch*.
    Ich weiß aus leidvoller Érfahrung, daß bei diesem Notebook im BIOS beim Booten ein automatischer Check aller Bauteile durchgeführt wird, und bei irgendwelchen Fehlern ein Diagnoseprogramm startet. Nur nutzt das natürlich nichts, wenn man wg defektem Bildschirm nichts sieht:(. Das System bzw den Zugriff auf die Daten der Platte bekommt man ohne Werkstattbesuch nie mehr. Platte ausbauen ist nicht, da "gesichtertes" Firmen-Notebook. Anruf beim Service ergab:" Wir bringen ihnen heute noch ein Ersatzgerät und schauen mal, ob wir bis nächste Woche an ihre Daten kommen...." *KREISCH*

    Also hab ich meinem Kumpel gesagt "blos nicht auschalten" und war 10 min später mit einem präparierten USB-Stick bei ihm.
    Auf den Stick hatte ich eine "virale" (Mann, ist dieses Wort für 6-8 geänderte Bytes geil^^) lnk-Datei und ein kurzes AutoIt-Script geschrieben. Stick eingesteckt (glücklicherweise gehört er zu den Privilegierten, deren USB-Ports nicht verklebt werden), der blinkenden LED 10 Minuten zugeschaut und danach waren alle "Eigenen Dateien" auf dem Stick. Inclusive der Präsentationen, die er die vergangenen 2 Tage bearbeitet hatte und am Montag morgen in London bei einem Meeting halten wird. Nie zuvor hatte ich in so kurzer Zeit eine teure Kiste Spätlese abgestaubt 8o (Sorry für etwaige Rechtschreibfehler, die erste Flasche hab ich schon intus)

    Was könnte man damit nicht alles für sinnvolle Sachen machen! Ich jedenfalls werde nun meine gesamte Verwandschaft, die gänzlich Computerunbedarft ist, mit präparierten Sticks ausstatten. Wenn es mal klemmt, sollen die nur den Stick reinstecken und 5 Sekunden später bin ich von Zuhause auf deren Rechner "online". Ohne stundenlange telefoniererei und Erklärungen, wo sie jetzt draufklicken müssen, damit ich mich mit ihrem Rechner verbinden kann. Wobei das seit Vista und Co. sowieso immer schwieriger geworden ist....Erklärt mal einem 80-jährigen, der seit über 30 Jahren Computer zum Schachspielen mit seinen Kumpels aus der ganzen Welt nutzt, warum er sich neuerdings "dauernd als Administrator einloggen soll, selbst auf nem Mainframe musste ich das nie"...ich habs aufgegeben....

    Wenn MS die "Sicherheitslücke" patcht und per AutoUpdate verteilt, dann wars das für meine "Autostart"-Sticks....schön wärs gewesen.

    Zitat von Script-Bär

    Endlich wird diese Lücke geschlossen !!!

    Ach, und danach startest du deine Viren wieder "altmodisch" per Doppelklick?

    Zitat von Greenhorns Link

    Antiviren-Hersteller bieten kostenlosen LNK-Schutz [Update]

    Eine absolute Frechheit, ein harmloses Dateiformat (z.B. lnk oder pif) auf Konformität zu prüfen und das als "kostenlosen Schutz" zu verkaufen! Warum aber die VIREN UND TROJANER nicht erkannt werden, die durch diese lnk-Dateien ge"autostartet" werden, erschliesst sich mir ehrlich gesagt nicht....Ich warte auf den Tag, an dem alle EXE-Files, deren erste beiden Bytes MZ sind, als viral verdächtigt werden, lange kann es nicht mehr dauern....

  • Ausgabe nach Autoit umlenken

    • Andy
    • 31. Juli 2010 um 22:10

    2 Möglichkeiten
    - Ausgabe per > in eine Textdatei umleiten und diese einlesen
    oder

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>

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

    Local $out = Run(@ComSpec & " /c dir c:\", @ScriptDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) ;Programm anpassen
    Local $line
    While 1
    $line &= StdoutRead($out)
    If @error Then ExitLoop
    Wend
    msgbox(0,"StdoutRead",$line)

    [/autoit]
  • Wurzel (Sqrt) Rückgabewertproblem

    • Andy
    • 31. Juli 2010 um 17:54
    [autoit]

    ;scriptzeile
    ;If $Wurzeltest > 0 And Not "" Then
    msgbox(0,0,not "") ;was sagt uns das?

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

    msgbox(0,0,True and not "") ;etwas anderes hätte mich gewundert..

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

    msgbox(0,0,False and not "") ;etwas anderes hätte mich ebenfalls gewundert...

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

    ;sollte wohl heißen
    If $Wurzeltest > 0 And $Wurzeltest<>"" Then

    [/autoit]
  • Programm welches über CMD funktioniert, funktioniert nicht über AutoIt

    • Andy
    • 31. Juli 2010 um 17:02

    Hi,
    wenn die Pfade alle richtig angegeben sind (Leerzeichen beachten! ) funktioniert RUN einwandfrei auch mit Konsolenprogrammen.

    Ansonsten noch die AutoIt-Lösung für das Aufwecken eines Rechners per MagicPacket

    Spoiler anzeigen
    [autoit]

    $IPAddress = "192.168.1.255"; This is the broadcast address !

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

    $MACAddress = "001d92ed72f4" ;MAC

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

    UDPStartUp()

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

    $connexion = UDPOpen($IPAddress, 7)
    $res = UDPSend($connexion, GenerateMagicPacket($MACAddress))
    if $res=102 Then
    MsgBox(0, "Rechner wurde gestartet", $res)
    Else
    MsgBox(0, "Rechner konnte nicht gestartet werden!", $res)
    endif
    UDPCloseSocket($connexion)
    UDPShutdown()

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

    ; ===================================================================
    ; Functions
    ; ===================================================================

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

    ; This function convert a MAC Address Byte (e.g. "1f") to a char
    Func HexToChar($strHex)

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

    Return Chr(Dec($strHex))

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

    EndFunc

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

    ; This function generate the "Magic Packet"
    Func GenerateMagicPacket($strMACAddress)
    $MagicPacket = ""
    $MACData = ""

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

    For $p = 1 To 11 Step 2
    $MACData = $MACData & HexToChar(StringMid($strMACAddress, $p, 2))
    Next

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

    For $p = 1 To 6
    $MagicPacket = HexToChar("ff") & $MagicPacket
    Next

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

    For $p = 1 To 16
    $MagicPacket = $MagicPacket & $MACData
    Next

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

    Return $MagicPacket

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

    EndFunc

    [/autoit]
  • Visualisierungen - Was ist die schnellste?

    • Andy
    • 31. Juli 2010 um 16:49

    Compile mal in 32 Bit, ggf die Pfade zu den dll´s anpassen.

  • Visualisierungen - Was ist die schnellste?

    • Andy
    • 31. Juli 2010 um 16:47

    Dein System?
    Auf XP-32 und Win7-32 läuft das einwandfrei.

  • Visualisierungen - Was ist die schnellste?

    • Andy
    • 31. Juli 2010 um 16:33

    OpenGL: http://www.autoitscript.com/forum/index.php?app=core&module=attach&section=attach&attach_id=29006 Mauscursor im Fenster bewegen und auf die Richtung der Lichtquelle achten^^. Kompletter Thread

    D3D: http://www.autoitscript.com/forum/index.php?showtopic=109185

  • Immer aufrunden

    • Andy
    • 31. Juli 2010 um 12:11

    Das Problem ist nicht das schliessen der Threads, das Problem ist, daß diese Threads erstellt werden!
    Ich behaupte mal, daß 99% aller Fragen bereits im Forum beantwortet wurden! Also was muß jemanden bewegen, 2-3 Minuten seiner Zeit in das Erstellen einer Frage zu investieren und dann ggf stundenlang auf mehr oder weniger qualifizierte Antwort(en) zu warten, wenn er das Ergebnis (oder eine Auswahl mehrerer Ergebnisse) innerhalb von einigen Millisekunden mit Hilfe von F1 in Scite oder mit "g hier_kommen_die Suchwörter_hin site:https://autoit.de/www.autoit.de" in jedem Browser bekommt?
    Da stellt sich die Frage nach geistiger Entwicklung völlig neu...

  • Immer aufrunden

    • Andy
    • 31. Juli 2010 um 11:41

    Manchmal frage ich mich wirklich, wie sinnlos Threads überhaupt noch werden können....Gewöhnt euch endlich mal an die HILFE und die Suchfunktion zu nutzen, bevor hier das Forum mit einem derartigen Müll vollgespammt wird!
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Und selbst wenn man dazu zu faul ist, gibt es die SB um die "Hey ich habe keinen Bock die Hilfe zu benutzen oder bin nicht in der Lage Informationen zu finden"-Threads zu vermeiden!

    Dateien

    capture_31072010_110012.jpg 60,1 kB – 0 Downloads
  • OLE/COM-Kommunikation abfangen/mitlesen

    • Andy
    • 28. Juli 2010 um 01:47

    Klar, m.E. ist eine Funktion eine Funktion, die steht irgendwo im RAM und wird, nachdem die Sache mit den Übergabeparametern geregelt ist, angesprungen. Im Win-api gibt es Befehle zum Finden dieser Funktionen im RAM, frag mal Pro@ndy, der ist an diesem Thema ziemlich nahe dran^^
    Ich würde die Funktion in der DLL (oder wo auch immer das Interface definiert ist) vor dem Laden in den Speicher auf eine eigene Funktion umbiegen, das sollte auch mit AutoIt machbar sein. Im "blauen" (engl. ) Forum gibt es sehr interessante Threads dazu, aber einiges, was noch unter XP ziemlich einfach machbar war, geht unter Win7 nicht oder nur noch mit Ausnahmen.
    Somit könntest du, da das COM-Interface ja "genormt" ist, mit einem anderen (funktionierenden) Programm die Kommunikation Client/Server mitloggen und gucken, was dein Programm "falsch macht". Hört sich einfach an, ist aber mit Sicherheit mit reichlich Arbeit verbunden. Ggf gibts einen einfacheren Weg und vielleicht schon fertige Tools. Da COM ja Betriebssystem-unabhängig ist (sein soll), kann ich mir nicht vorstellen, daß es nicht professionelle Tools gibt, die die Verbindung "mithören" bzw. aufschlüsseln können.

  • Visualisierungen - Was ist die schnellste?

    • Andy
    • 28. Juli 2010 um 01:20
    Zitat

    Aber meinst su statt Nivdea nicht Nvidia

    abber sischääärr^^

  • Probleme mit Opera 10.51

    • Andy
    • 28. Juli 2010 um 01:13

    yepp, boardsoftware wurde upgedatet bzw gefixt, bei mir alles i.o., thx an die "Leuts im Hintergrund", die sich immer den Ar*** aufreissen, damit hier jeder seine Extrawurst gebacken bekommt! :)

  • Love Parade

    • Andy
    • 27. Juli 2010 um 22:07

    na klar, 200.000 Leute ignorieren 4 Stunden lang die Durchsagen der Polizei, grölen "Die Mauer muss weg" als sie die Absperrungen überrennen und quetschen sich in einen Tunnel obwohl sie wissen, daß es dort nicht weiter geht....
    Als es dann Tote gibt, weil immer mehr Vollidioten von hinten AUCH in den Tunnel wollen, ist der Bürgermeister schuld....
    Natürlich wurden Opfer zerquetscht, dazu braucht man kein Spezialist sein! Wer von den "Partypeople" wurde denn vom Bürgermeister dazu gezwungen, andere Leute zu Tode zu quetschen?
    ....Manchmal habe ich diese Pressefuzzis, die im RTL2-Style berichten, dermassen satt......

  • Computer Schutz Programm

    • Andy
    • 27. Juli 2010 um 12:28
    Zitat von EpicWorld

    Hast du ein deobfuser genutzt?

    Made my day :rofl:

  • Rahmen beim Markieren auf einer autoitgui

    • Andy
    • 27. Juli 2010 um 09:49

    Ich habe per Suche innerhalb von 10 Sekunden 5 fix und fertige Scripte gefunden. Ich denke, damit ist das Thema erledigt...
    Selbst in der AutoIt-Hilfe befinden sich fertige Beispielscripte!

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™