Text unlesbar machen

  • Ich habe mir mal die Zeit genommen ein FUN Programm zu machen, welches einen eingegebenen Text mit verschiedenen Methoden "verschlüsselt" und auch wieder "entschlüsseln" kann. Der so entstandene Code ist mit einem selbst festgelegtem Passwort geschützt. Es hat noch weitere kleine Features:

    Features:

    ->"verschlüsseln & entschlüsseln mit Passwort
    -> Zurzeit 3 verschiedene Methoden zum Verschlüsseln & Entschlüsseln
    ->öffnen/speichern
    ->aus Zwischenablage Text/Code kopieren/einfügen
    ->Transparenz des Fensters (0%,25%,50%,75%)
    ->(zu Traymenu) Minimieren/Maximieren

    Nutzen:
    ->Spaß weil Text nicht lesbar ist :=)
    ->"geheime" Nachrichten wersenden

    Dank an:
    -> Alle die mir bei meinen Fragen geholfen haben
    -> an OSCAR, weil er 1 Methode geschrieben hat
    -> Alle die es nutzen

    [Blockierte Grafik: http://www.bilder-space.de/thumb/18.06itUqhWOPttkpHC5.jpg]

    Freue mich auf konstruktive Kritik.

    Hier ist das Script:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=..\..\pencil.ico
    #AutoIt3Wrapper_outfile=Test_coder.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #Include <GuiComboBox.au3>
    #Include <String.au3>
    opt("traymenumode",1)
    opt("GUIResizeMode",1)
    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\sebastian\desktop\autoit\coder\coder.kxf
    $Form1_1 = GUICreate("Text(de-)codierer", 786, 465, 244, 224)
    $Group1 = GUICtrlCreateGroup("Codieren", 8, 0, 377, 441)
    $Group3 = GUICtrlCreateGroup("Codierter Text", 16, 208, 361, 225)
    $text_cod = GUICtrlCreateInput("", 24, 224, 345, 200,$WS_VSCROLL+$ES_MULTILINE+$ES_WANTRETURN)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group5 = GUICtrlCreateGroup("Passwort:", 16, 120, 361, 81)
    $pw_cod = GUICtrlCreateInput("", 24, 136, 345, 55,$WS_VSCROLL+$ES_MULTILINE+$ES_WANTRETURN)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group7 = GUICtrlCreateGroup("Einstellungen:", 16, 32, 361, 81)
    $Label1 = GUICtrlCreateLabel("Methode, mit der codiert werden soll:", 24, 48, 214, 17)
    GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
    $method_cod = GUICtrlCreateCombo("Methode 1", 24, 72, 321, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Methode 2|Methode 3")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $codieren = GUICtrlCreateButton("!!CODIEREN!!", 72, 8, 305, 25, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Decodieren", 400, 0, 377, 441)
    $Group4 = GUICtrlCreateGroup("Decodierter Text", 408, 208, 361, 225)
    $text_decod = GUICtrlCreateInput("", 416, 224, 345, 200,$WS_VSCROLL+$ES_MULTILINE+$ES_WANTRETURN)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group6 = GUICtrlCreateGroup("Passwort:", 408, 120, 361, 81)
    $pw_decod = GUICtrlCreateInput("", 414, 135, 345, 55,$WS_VSCROLL+$ES_MULTILINE+$ES_WANTRETURN)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group8 = GUICtrlCreateGroup("Einstellungen:", 408, 32, 361, 81)
    $Label3 = GUICtrlCreateLabel("Methode, mit der decodiert werden soll:", 421, 48, 228, 17)
    GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
    $method_decod = GUICtrlCreateCombo("Methode 1", 416, 72, 321, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Methode 2|Methode 3")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $decodieren = GUICtrlCreateButton("!!DECODIEREN!!", 471, 8, 297, 25, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $menu1 = GUICtrlCreateMenu("Öffnen...")
    $menu2 = GUICtrlCreateMenu("Speichern...")
    $menu3= GUICtrlCreateMenu("Zwischenablage...")
    $exit=GUICtrlCreateMenu("Fenster...")
    $exit3 = GUICtrlCreateMenu("&Programm...")
    $mini= GUICtrlCreateMenuItem("Zu Traymenu minimieren",$exit,0)
    $minis= GUICtrlCreateMenuItem("Zu Startleiste minimieren",$exit,1)
    $maxi= GUICtrlCreateMenuItem("Maximieren",$exit,2)
    $maxinormal= GUICtrlCreateMenuItem("Normale Größe",$exit,3)
    GUICtrlCreateMenuItem("",$exit,4)
    $trans_0 = GUICtrlCreateMenuItem("Keine Transperenz", $exit,5,1)
    GUICtrlSetState($trans_0,$Gui_checked)
    $trans_25 = GUICtrlCreateMenuItem("Transperenz (25%)", $exit,6,1)
    $trans_50 = GUICtrlCreateMenuItem("Transperenz (50%)", $exit,7,1)
    $trans_75 = GUICtrlCreateMenuItem("Transperenz (75%)", $exit,8,1)
    $exi = GUICtrlCreateMenuItem("Beenden", $exit3,7)

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

    $copy_code = GUICtrlCreateMenuItem("Code kopieren",$menu3)
    $paste_text = GUICtrlCreateMenuItem("Text einfügen",$menu3)
    GUICtrlCreateMenuItem("",$menu3)
    $paste_code = GUICtrlCreateMenuItem("Code einfügen",$menu3)
    $copy_text = GUICtrlCreateMenuItem("Text kopieren",$menu3)

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

    $save_code = GUICtrlCreateMenuItem("Code speichern",$menu2)
    $save_text = GUICtrlCreateMenuItem("Text speichern",$menu2)

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

    $open_code = GUICtrlCreateMenuItem("Code öffnen",$menu1)
    $open_text = GUICtrlCreateMenuItem("Text öffnen",$menu1)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $maximieren = TrayCreateItem("Maximieren")
    $exit2 = TrayCreateItem("Beenden")
    $new_string_cod="Du hast noch nichts codiert."
    While 1
    $nMsg = GUIGetMsg()
    $nmsg2 = Traygetmsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    case $exi
    exit(1)

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

    case $mini
    GUISetState(@sw_hide)

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

    case $minis
    GUISetState(@SW_MINIMIZE)
    case $maxi
    GUISetState(@SW_MAXIMIZE)

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

    case $maxinormal
    GUISetState(@SW_RESTORE)

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

    case $trans_0
    WinSetTrans("Text(de-)codierer","",255)
    case $trans_25
    WinSetTrans("Text(de-)codierer","",191)
    case $trans_50
    WinSetTrans("Text(de-)codierer","",127)
    case $trans_75
    WinSetTrans("Text(de-)codierer","",63)

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

    case $copy_code
    clipput(guictrlread($text_cod))

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

    case $paste_text
    GUICtrlSetData($text_cod,clipget())

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

    case $paste_code
    GUICtrlSetData($text_decod,clipget())

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

    case $copy_text
    clipput(guictrlread($text_decod))

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

    case $save_code
    $savefile = FileSaveDialog("Code speichern",@scriptdir,"Code-Dateien (*.code)",2+16)
    if not @error Then
    if StringRight($savefile,5) = ".code" then
    $text = GUICtrlRead($text_cod)
    $open_file=fileopen($savefile,1)
    filewrite($open_file,$text)
    FileClose($open_file)
    msgbox(0,"Erfolg","Das speichern war erfolgreich.")
    Else
    msgbox(0,"Error","Sie haben nicht die vorgesehene Dateiendung verwendet.")
    endif
    Else
    msgbox(0,"Error","Es wurde keine Datei ausgewählt.")
    endif

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

    case $save_text
    $savefile = FileSaveDialog("Decodierten Text speichern",@scriptdir,"DeCode-Dateien (*.decode)",2+16)
    if not @error Then
    if StringRight($savefile,7) = ".decode" then
    $text = GUICtrlRead($text_decod)
    $open_file=fileopen($savefile,1)
    filewrite($open_file,$text)
    FileClose($open_file)
    msgbox(0,"Erfolg","Das speichern war erfolgreich.")
    Else
    msgbox(0,"Error","Sie haben nicht die vorgesehene Dateiendung verwendet.")
    endif
    else
    msgbox(0,"Error","Es wurde keine Datei ausgewählt.")
    endif

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

    case $open_code
    $file_open = FileOpenDialog("Code öffnen",@scriptdir,"Code-Dateien (*.code)",1+2)
    if not @error Then
    $open = FileOpen($file_open,0)
    $read_file_open = FileRead($open)
    FileClose($open)
    guictrlsetdata($text_decod,$read_file_open)
    Else
    msgbox(0,"Error","Du hast keine Datei ausgewählt.")
    endif

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

    case $open_text
    $file_open = FileOpenDialog("Decodierten Text öffnen",@scriptdir,"DeCode-Dateien (*.decode)",1+2)
    if not @error Then
    $open = FileOpen($file_open,0)
    $read_file_open = FileRead($open)
    FileClose($open)
    guictrlsetdata($text_cod,$read_file_open)
    Else
    msgbox(0,"Error","Du hast keine Datei ausgewählt.")
    endif

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

    case $codieren
    $read_text_cod = GUICtrlRead($text_cod)
    $read_pw_cod = GUICtrlRead($pw_cod)
    $read_method_cod = guictrlread($method_cod)
    if $read_pw_cod <> "" Then
    if $read_text_cod <> "" Then
    $string_code ="<" & $read_pw_cod & ">" & $read_text_cod

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

    ;start Methode 1 code
    if $read_method_cod = "Methode 1" Then
    $new_string_code = _StringToHex($string_code)
    GUICtrlSetData($text_cod,$new_string_code)
    EndIf
    ; end Methode 1 code

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

    ;start Methode 2 code
    if $read_method_cod = "Methode 2" Then
    $new_string_code = StringTobinary($string_code)
    GUICtrlSetData($text_cod,$new_string_code)
    EndIf
    ; end Methode 2 code

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

    ;start Methode 3 code
    if $read_method_cod = "Methode 3" Then
    GUICtrlSetData($text_cod,_StringToBin($string_code))
    EndIf
    ; end Methode 3 code

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

    Else
    MsgBox(0,"Error","Es wurde kein Text eingegeben, der codiert werden kann.")
    endif
    Else
    msgbox(0,"Error","Es wurde kein Passwort eingegeben. Bitte gebe ein Passwort an.")
    endif
    case $decodieren
    $read_text_decod = GUICtrlRead($text_decod)
    $read_pw_decod = GUICtrlRead($pw_decod)
    $read_method_decod = GUICtrlRead($method_decod)
    if $read_pw_decod <> "" Then
    if $read_text_decod <> "" Then

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

    ;start Methode 1 decode
    if $read_method_decod = "Methode 1" Then
    $new_string_decod = _HexToString($read_text_decod)
    $string_pw_decod = _StringBetween($new_string_decod,"<",">")
    if not @error then
    if $string_pw_decod[0] == $read_pw_decod then
    $new_string_without_pw=Stringsplit($new_string_decod,">")
    GUICtrlSetData($text_decod,$new_string_without_pw[2])
    Else
    msgbox(0,"Error","Die Passwörter stimmen nicht überein.")
    endif
    Else
    msgbox(0,"Error","Der Code kann nicht weiter decodiert werden.")
    endif

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

    EndIf
    ;end Methode 1 decode
    ;start Methode 2 decode
    if $read_method_decod = "Methode 2" Then
    $new_string_decod = BinaryToString($read_text_decod)
    $string_pw_decod = _StringBetween($new_string_decod,"<",">")
    if not @error then
    if $string_pw_decod[0] == $read_pw_decod then
    $new_string_without_pw=Stringsplit($new_string_decod,">")
    GUICtrlSetData($text_decod,$new_string_without_pw[2])
    Else
    msgbox(0,"Error","Die Passwörter stimmen nicht überein.")
    endif
    Else
    msgbox(0,"Error","Der Code kann nicht weiter decodiert werden.")
    endif
    endif
    ;end Methode 2 decode

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

    ;start Methode 3 decode
    if $read_method_decod = "Methode 3" Then
    $new_string_decod = _BinToString($read_text_decod)
    $string_pw_decod = _StringBetween($new_string_decod,"<",">")
    if not @error then
    if $string_pw_decod[0] == $read_pw_decod then
    $new_string_without_pw=Stringsplit($new_string_decod,">")
    GUICtrlSetData($text_decod,$new_string_without_pw[2])
    Else
    msgbox(0,"Error","Die Passwörter stimmen nicht überein.")
    endif
    Else
    msgbox(0,"Error","Der Code kann nicht weiter decodiert werden.")
    endif
    endif
    ;end Methode 3 decode
    Else
    MsgBox(0,"Error","Es wurde kein Text eingegeben, der codiert werden kann.")
    endif
    Else
    msgbox(0,"Error","Es wurde kein Passwort eingegeben. Bitte gebe ein Passwort an.")
    endif

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

    EndSwitch
    switch $nmsg2
    case $maximieren
    GUISetState(@sw_show)
    case $exit2
    exit(1)
    endswitch
    WEnd

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

    ;################## Verschlüsselungfunktionen von OSCAR aus http://www.autoit.de #########################################
    Func _BinToString($bin)
    Local $aChr = StringRegExp($bin, '.{8}', 3), $dec, $string = ''
    For $k = 0 To UBound($aChr) - 1
    $dec = 0
    For $i = 8 To 1 Step -1
    $dec += 2 ^ (8 - $i) * StringMid($aChr[$k], $i, 1)
    Next
    $string &= Chr($dec)
    Next
    Return $string
    EndFunc ;==>_BinToString

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

    Func _StringToBin($string)
    Local $aChr = StringSplit($string, ''), $bin = ''
    For $k = 1 To $aChr[0]
    For $i = 7 To 0 Step -1
    $bin &= (BitAND(Asc($aChr[$k]), 2 ^ $i) = 2 ^ $i) * 1
    Next
    Next
    Return $bin
    EndFunc ;==>_StringToBin

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

    ;########################################################################################################################

    [/autoit]

    Ein Downlaod mit allen Dateien ist anbei.
    Die Koda-Datei ist leider etwas veraltet :(

  • Habe das Script getestet, funktionierte alles was ich gemacht habe wunderbar.
    Finde allerdings die Verschlüsslungsmethoden zu unsicher.
    Ich denke, wer gut in soetwas ist bekommt das schnell geknackt.

    Haben wir hier sojemanden?^^

    Habe ein ähnliches Programm geschrieben.
    Veröffentliche allerdings keine source, da die Verschlüsslungsmethode geheim bleiben soll.
    Kann ja wer will auch mal testen.

    Design ist bei deinem Programm natürlich schöner (da hab ich nie lust zu^^).
    So viele funktionen wie du habe ich auch nicht.
    Halt nur das nötigste.

    Gute Arbeit!
    Einzige Kritik: Beim Menü würde ich die ganzen Punkte weg machen...

    Einmal editiert, zuletzt von MAB_Commander (18. Juni 2009 um 23:34)

  • Veröffentliche allerdings keine source, da die Verschlüsslungsmethode geheim bleiben soll.

    Wirklich sicher ist es nur, wenns asymmetrisch ist, schließlich kann jeder dein Skript decompilen...
    Gut ist die Verschlüsselungsmethode dann, wenn das Lesen des Codes kein Risiko darstellt. ;)

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Decompilen geht doch noch???
    Naja, selbst wenn man es sieht, ist der methode noch relativ sicher, denke ich.
    Wie geht das mit dem Decompilen?

  • Erlaubt ists nicht, allerdings gibt es verschiedene Decompilierer (kann ja danach mal googeln, mir sind solch dubiose Seiten aber nicht ganz geheuer).

    Poste doch einfach mal deine Methode.
    Schadet nicht und bringt vielleicht die ein oder andere Einschätzung.

  • Ja danke.
    Die Methoden waren auch nur die "autoit-Standard", die Autoit dabeihat.

    Leider habe ich nicht die Kenntnis, wie man selber richtige Methode erstellt.

    Ich dachte mir was mit

    [autoit]

    stringreplace()

    [/autoit]

    , bei denen man "a" durch "b" ersetzt und so...

    aber das ich ja dann auch nicht richtig sicher....

    Für Vorschläge bin ich immer offen.

    MFG Sebastian