Hi,
in letzter Zeit wurden einige Anfragen gestellt bzgl. der Speicherung von Passwörtern bei kompilierten Scripten. Der Sinn sei mal dahingestellt...
Am einfachsten ist es, die Passwörter direkt in der EXE-Datei zu speichern aber wo dort?
Man könnte auf die Idee kommen, ein Passwort im PE-Header der EXE zu speichern, aber einige Virenscanner überprüfen diesen Bereich und warnen mit Vorhandensein von bspw. "Dropper.Gen" (jaja, im DOS-Stub wurde "früher" auch gerne mal rumgeschrieben und sog. Dropper eingefügt, was aber absolut garnichts mit einem Virus o.ä. zu tun hat)
Dann könnte man weitere ungenutzte Bereiche innerhalb der EXE-Datei beschreiben, aber dazu müsste man einigen nicht unerheblichen Aufwand betreiben (in Assembler ist alles sooo viel einfacher 8 ) !
Am allereinfachsten ist es, man hängt das Passwort einfach an die EXE an
Spoiler anzeigen
;Password an EXE-Datei anhängen
[/autoit] [autoit][/autoit] [autoit]$password = InputBox("Password in Exe speichern", "Bitte Password eingeben", "")
If StringLen($password) = 0 Then Exit (MsgBox(0, "Password in Exe speichern", "Programm abgebrochen! Bitte gültiges Password eingeben"))
$exefile = FileOpenDialog("Password in Exe speichern", @ScriptDir, "(*.EXE)")
If $exefile = "" Then Exit (MsgBox(0, "Password in Exe speichern", "Programm abgebrochen! Bitte EXE-Datei auswählen"))
$file = FileOpen($exefile, 17) ;Datei binär öffnen
FileSetPos($file, 0, 2) ;Position auf letztes byte
FileWrite($file, $password) ;schreiben
FileFlush($file) ;sicher ist sicher
FileClose($file) ;schliessen
Es macht Sinn, das Passwort zu "hashen", erstens ist es dann unleserlich, zweitens auch halbwegs "sicher", da es nirgendwo im Klartext steht!
Wie fragt man das Passwort in der gestarteten EXE-Datei ab?
Spoiler anzeigen
;zu schützende Scriptdatei
;in eine EXE kompilieren
$password = InputBox("Password", "Bitte Password eingeben:", "")
$file = FileOpen(@ScriptFullPath, 16) ;EXE-datei öffnen
FileSetPos($file, -StringLen($password), 2) ;Position auf Ende der Datei
$pw = BinaryToString(FileRead($file, StringLen($password))) ;Password aus EXE lesen
fileclose($file)
MsgBox(0, "Password", "Das Password " & $password & " ist " & stringleft("richtig!",($pw = $password)*8)&stringleft("falsch!",($pw <> $password)*7))
[/autoit] [autoit][/autoit] [autoit][/autoit]Also zuerst das zu schützende Script zu einer EXE kompilieren.
Dann das 1. Script aufrufen und damit dann das einzugebende Passwort an die EXE anhängen.
EXE aufrufen und Passwort eingeben.
Wer mag, kann das Passwort auch in der *.AU3-Datei einfügen
Einfach als Kommentar in die letzte Scriptzeile schreiben, dann funktioniert auch die Au3-Version