Moin,
Ich möchte euch hier eine noch unausgereifte Alternative zum in Windows enthaltenen Notepad zeigen.
Es kann eigentlich noch nicht wirklich viel^^
Im Prinzip wollte ich nur eine Möglichkeit schaffen normale Textdateien leicht verschlüsselt abspeichern zu können, ohne dafür extra ein Programm starten zu müssen, welches paralell zu Notepad laufen muss. Daher die Idee ein neues Notepad zu basteln, welches mit beliebigen Funktionen erweiterbar ist. (Gibts 100%ig schon in AutoIt^^ Dann ist das hier eben eine weitere Variante...)
Das Verschlüsseln erfolgt über einen 4-Stelligen Code (mit je einem aus 9 Zeichen --> 9^4 = 6561 Möglichkeiten), der über Buttons eingegeben werden muss. (Das sollte mit einem Touchpad gut machbar sein. Deshalb keine Texteingabe).
Anschließend wird die standard _StringEncrypt Funktion genutzt.
AutoIt-Code
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=NotepadIcon_48.ico
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <String.au3>
Opt('GUICloseOnESC', 0)
Opt('MustDeclareVars', 1)
Global $Pfad = ''
Global $Error = False
Global $FalschesPW = 0
Global $DateiTyp = 'txt'
Global $PW_Indikator = 'MITPW'
If $CMDLINE[0] Then $Pfad = $CMDLINE[1]
[/autoit] [autoit][/autoit] [autoit]_Anzeige()
[/autoit] [autoit][/autoit] [autoit]Func _Anzeige($String = '')
[/autoit] [autoit][/autoit] [autoit]Local $hGUI, $hMenu, $hMenu_Exit, $hMenu_Neu, $hMenu_Oeffnen, $hMenu_Speichern, $hMenu_SpeichernPW, $hMenu_SpeichernPW_Unter, $hMenu_Speichern_Unter, $B = @DesktopWidth/2, $H = @DesktopHeight/2, $hEdit
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate(_Name($Pfad) & ' - Editor', $B, $H, @DesktopWidth / 2 - $B/2, @DesktopHeight / 2 - $H/2, $WS_SIZEBOX+$WS_MAXIMIZEBOX + $WS_MINIMIZEBOX)
[/autoit] [autoit][/autoit] [autoit]$hMenu = GUICtrlCreateMenu('Datei')
$hMenu_Neu = GUICtrlCreateMenuItem('Neu...', $hMenu)
$hMenu_Oeffnen = GUICtrlCreateMenuItem('Öffnen...', $hMenu)
$hMenu_Speichern = GUICtrlCreateMenuItem('Speichern...', $hMenu)
$hMenu_SpeichernPW = GUICtrlCreateMenuItem('Speichern... (verschlüsselt)', $hMenu)
$hMenu_Speichern_Unter = GUICtrlCreateMenuItem('Speichern unter...', $hMenu)
$hMenu_SpeichernPW_Unter = GUICtrlCreateMenuItem('Speichern unter... (verschlüsselt)', $hMenu)
$hMenu_Exit = GUICtrlCreateMenuItem('Beenden', $hMenu)
If $Pfad Then $String = _Oeffnen($Pfad)
[/autoit] [autoit][/autoit] [autoit]$hEdit = _GUICtrlRichEdit_Create($hGUI, '', 0, 0, $B - 2, $H - 45, $WS_VSCROLL + $ES_AUTOVSCROLL + $ES_MULTILINE)
_GUICtrlRichEdit_SetUndoLimit($hEdit, 200)
_GUICtrlRichEdit_SetCharAttributes($hEdit, '+bo')
_GUICtrlRichEdit_SetFont($hEdit, 12, 'Courier New')
_GUICtrlRichEdit_InsertText($hEdit, $String)
GUISetState(@SW_SHOW, $hGUI)
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case -3
ExitLoop
Case $hMenu_Oeffnen
$String = _Oeffnen()
If $String Then
WinSetTitle($hGUI, '', _Name($Pfad) & ' - Editor')
_GUICtrlRichEdit_SetText($hEdit, '')
_GUICtrlRichEdit_SetCharAttributes($hEdit, '+bo')
_GUICtrlRichEdit_SetFont($hEdit, 12, 'Courier New')
_GUICtrlRichEdit_InsertText($hEdit, $String)
EndIf
Case $hMenu_Speichern
$String = _GUICtrlRichEdit_GetText($hEdit)
If $String Then
_Speichern($String)
WinSetTitle($hGUI, '', _Name($Pfad) & ' - Editor')
EndIf
Case $hMenu_SpeichernPW
$String = _GUICtrlRichEdit_GetText($hEdit)
If $String Then
_Speichern($String, True)
WinSetTitle($hGUI, '', _Name($Pfad) & ' - Editor')
EndIf
Case $hMenu_Speichern_Unter
$String = _GUICtrlRichEdit_GetText($hEdit)
If $String Then
$Pfad = ''
_Speichern($String)
WinSetTitle($hGUI, '', _Name($Pfad) & ' - Editor')
EndIf
Case $hMenu_SpeichernPW_Unter
$String = _GUICtrlRichEdit_GetText($hEdit)
If $String Then
$Pfad = ''
_Speichern($String, True)
WinSetTitle($hGUI, '', _Name($Pfad) & ' - Editor')
EndIf
Case $hMenu_Neu
$String = ''
$Pfad = ''
WinSetTitle($hGUI, '', _Name($Pfad) & ' - Editor')
_GUICtrlRichEdit_SetText($hEdit, '')
_GUICtrlRichEdit_SetCharAttributes($hEdit, '+bo')
_GUICtrlRichEdit_SetFont($hEdit, 12, 'Courier New')
Case $hMenu_Exit
ExitLoop
EndSwitch
WEnd
_GUICtrlRichEdit_Destroy($hEdit)
Exit
EndFunc ;==>_Anzeige
[/autoit] [autoit][/autoit] [autoit]Func _Name($P)
If $P = '' Then Return 'Unbenannt'
Local $Split = StringSplit($P, '\')
Return $Split[$Split[0]]
EndFunc ;==>_Name
Func _PWInput()
Local $sRet = '', $iMsg, $hGUI, $aBtn[9]
$hGUI = GUICreate('Passwort', 198, 198, @DesktopWidth / 2 - 99, @DesktopHeight / 2 - 99)
GUISetBkColor(0x000000, $hGUI)
For $i = 0 To 8 Step 1
$aBtn[$i] = GUICtrlCreateButton('X', $i * 66 - Int($i / 3) * 198, Int($i / 3) * 66, 66, 66)
Next
GUISetState(@SW_SHOW, $hGUI)
While 1
$iMsg = GUIGetMsg()
If ($iMsg = -3) Or StringLen($sRet) = 4 Then ExitLoop
For $i = 0 To 8 Step 1
If $iMsg = $aBtn[$i] Then $sRet &= String($i + 1)
Next
WEnd
If $iMsg = -3 Then $sRet = 'Beendet'
GUIDelete($hGUI)
Return $sRet
EndFunc ;==>_PWInput
Func _ZielWahl()
Local $P = FileSaveDialog('Datei suchen...', @ScriptDir, '(*.' & $DateiTyp & ')', 1)
If Not (StringRight($P, StringLen($DateiTyp)) = $DateiTyp) Then $P &= '.' & $DateiTyp
Return $P
EndFunc ;==>_ZielWahl
Func _DateiWahl()
Return FileOpenDialog('Datei suchen...', @ScriptDir, '(*.' & $DateiTyp & ')', 1)
EndFunc ;==>_DateiWahl
Func _Crypt($String, $PW)
Return _StringEncrypt(1, $String, $PW)
EndFunc ;==>_Crypt
Func _Decrypt($String, $PW)
$String = _StringEncrypt(0, $String, $PW)
If Not $String Then $Error = True
Return $String
EndFunc ;==>_Decrypt
Func _Oeffnen($P = '')
If Not $P Then $P = _DateiWahl()
$Pfad = $P
Local $Read = StringTrimLeft(StringToBinary(FileRead($P)), 2), $PW, $Decrypted
If StringLeft($Read, StringLen($PW_Indikator) * 2) = StringTrimLeft(StringToBinary($PW_Indikator), 2) Then
$Read = StringTrimLeft($Read, StringLen($PW_Indikator) * 2)
$PW = _PWInput()
If $PW = 'Beendet' Then Return ''
$Decrypted = _Decrypt($Read, $PW)
If $Error Then
$FalschesPW += 1
Else
$FalschesPW = 0
EndIf
$Error = False
If $FalschesPW Then
_Oeffnen($P)
EndIf
Else
$Decrypted = BinaryToString('0x' & $Read)
EndIf
Return $Decrypted
EndFunc ;==>_Oeffnen
Func _Speichern($S, $MitPW = False)
Local $PW
If Not $Pfad Then $Pfad = _ZielWahl()
If Not $Pfad Then Return
If $MitPW Then
$PW = _PWInput()
If Not $PW Then Return
FileDelete($Pfad)
FileWrite($Pfad, '')
FileWrite($Pfad, $PW_Indikator & BinaryToString('0x' & _Crypt($S, $PW)))
Else
FileDelete($Pfad)
FileWrite($Pfad, '')
FileWrite($Pfad, $S)
EndIf
EndFunc ;==>_Speichern
Vllt kanns ja jemand gebrauchen. Es sollen hier nicht die harten Passwortknacker abgeschüttelt werden, sondern nur gaaanz simpel diejenigen, die mit Computern eh nix anfangen können.
Ein Problem gibt es noch mit dem verändern der Fenstergröße. Ich hab bersucht das RichEdit anzupassen, aber iwie war das nicht erfolgsgekrönt. Die Versuche sind hier allerdings nicht enthalten.
lg
M