Benutzer-Werkzeuge

Webseiten-Werkzeuge


verschluesseln

Dies ist eine alte Version des Dokuments!


Verschlüsseln

Wenn man verhindern will, dass jemand in den Klartext eines selbst erstellten Skripts schaut und ggf. den Code ändert, muss das Skript verschlüsselt werden. Dazu bietet Microsoft einen Encoder an. Die Installationsdatei SCE10DE.exe ist zu finden auf der Seite
http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=e7877f67-c447-4873-b1b0-21f0626a6329

Die Installation erzeugt die Hilfsdatei SCRENC.chm und den eigentlichen Decoder SCRENC.exe.

Der Encoder ist ein Befehlszeilentool mit dem man beispielsweise

  • aus einer vbs-Datei eine verschlüsselte vbe-Datei oder
  • aus einer js-Datei eine verschlüsselte je-Datei

erzeugen kann.

Dabei kann man die Datei unterteilen in einen unverschlüsselten Teil am Anfang und dem restlichen, verschlüsselten Teil. Dies geschieht durch Eintragen der Marke
'Start Encode bei vb-Skripten bzw. Start Encode bei j-Skripten ab der der Code verschlüsselt wird.

Bei FixFoto-Skripten kann man damit den Kopf, bestehend aus
'FFSubmenu=… bzw. //FFSubmenu=… (Name der Kategorie für das Skript) 'FFName=… bzw. //FFName=… (Name des Skriptes innerhalb der festgelegten Kategorie) unverschlüsselt lassen.

===== Verschlüsselungsbeispiel ===== Der Encoder ist gespeichert im Ordner
//D:\Skripte\screnc.exe


Das FixFoto-Skript Ordner_Liste.vbs mit gesetzter Startmarke, abgelegt im Pfad
D:\FixFoto\Script\Ordner_Liste.vbs
sieht so aus:
'FFSubmenu=Test 'FFName=Ordnerliste

'Anzeige des aktiven Ordners und aller Unterordner 'Start Encode

Option Explicit

Dim objFS,objFolder Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(FF_GetImagePath)

Dim Ordnerliste

call AlleOrdner(objFolder)

Set objFolder = nothing Set objFS = nothing

msgbox Ordnerliste,vbInformation,"Ordner und Unterordner" '————————————————————- Sub AlleOrdner(ByVal Startordner) Dim Unterordner

Ordnerliste = Ordnerliste & Startordner & vbNewLine

For Each Unterordner In Startordner.subfolders

  AlleOrdner Unterordner

Next

End Sub '————————————————————- Die Kommandozeile zum Verschlüsseln (unbedingt alles in eine Zeile schreiben) muss so aussehen:
"D:\Skripte\screnc.exe" "D:\FixFoto\Script\Ordner_Liste.vbs" "D:\FixFoto\Script\Ordner_Liste.vbe" und wird am besten als Batchdatei, z.B. Verschluesseln.bat abgespeichert und dann ausgeführt.

Das Ergebnis ist die verschlüsselte Skriptdatei Ordner_Liste.vbe
'FFSubmenu=Test 'FFName=Ordnerliste

'Anzeige des aktiven Ordners und aller Unterordner 'Start Encode#@~^tQIAAA==@#@&@#@&}wDkW PAaw^k^kD@#@&@#@&fks~W(LsUSG4NsKV[+.@#@&?nY,G4Nsj~{PZ.nmYnr (%mOvJUmDbwDrxTRok^+jzkY+s64N+mDEb@#@&?Y~W8%wWsN.P{PG8Ns? !YoW^[Dcws|M+DqsConCY4#@#@&@#@&fbhP}DN …….
Die verschlüsselte Skriptdatei ist so wie sie hier gezeigt wird, nicht lauffähig, da sie aus Darstellungsgründen abgekürzt wurde.

Verschlüsselungsautomatisierung

Wenn man öfter Skripte verschlüsseln will, ist die oben beschriebene Vorgehensweise sehr mühsam. Um den Vorgang zu automatisieren, kann man folgendes VB-Skript (kein FixFoto-Skript) verwenden:
'Skript zum Verschlüsseln von VB- und Java-Skripten mit installiertem Encoder SCRENC '************************************** SKRIPT ****************************************************** 'Die Installationsdatei sce10de.exe für SCRENC kann herunter geladen werden von der MICROSOFT-Seite 'http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=e7877f67-c447-4873-b1b0-21f0626a6329

'Der Encoder muss im selben Verzeichnis abgelegt sein wie das vorliegende Skript 'Es wird verschlüsselt ab 'Start Encode bzw. //Start Encode

'Das zu verschlüsselnde Skript wird manuell auf das vorliegende Skript gezogen oder auf eine Verknüpfung davon. 'Das verschlüsselte Skript erhält die Dateiendung vbe bei vb-Skripten bzw. je bei j-Skripten 'und wird im selben Verzeichnis abgelegt wie das Original. '************************************** SKRIPT ****************************************************** Option Explicit

'Deklarationen Dim objFS,WshShell Set objFS = WScript.CreateObject("Scripting.FileSystemObject") 'FileSytemObject Set WshShell = WScript.CreateObject("WScript.Shell")

Dim script,scriptpath,encoder Dim objFile,Extension,Name1,Name2,Befehl

'Feststellen wie der eigene Ordner heißt script = Wscript.ScriptFullName scriptpath = objFS.getparentfoldername(script) encoder = scriptpath & "\screnc.exe"

'Prüfen ob Datei SCRENC vorhanden ist If not (objFS.FileExists(encoder)) Then

 MsgBox "Der Encoder" & vbNewLine & encoder & vbNewLine & "wurde nicht gefunden!" & vbNewLine & _
        "Das Skript wird abgebrochen.",vbExclamation,"Abbruch"
 WScript.Quit

end if

encoder = """" & encoder & """"

'das zu verschlüsselnde Skript wird als gedroppte Datei erkannt on error resume next Set objFile = objFS.GetFile(WScript.Arguments(0)) if err > 0 then

 Msgbox "Es wurde keine Datei gedroppt" & vbNewLine & _
        "Das Skript wird abgebrochen.",vbExclamation,"Abbruch"
 Wscript.Quit

end if on error goto 0

'ermitteln des Dateinamens für das verschlüsselte Skript und codieren Extension = Ucase(objFS.GetExtensionName(objFile.Name)) if Extension = "VBS" or Extension = "JS" then

 Name1 = """" & objFile & """"
 if Extension = "VBS" then
    Name2 = """" & left(objFile,len(objFile)-1) & "e" & """"
 else
    Name2 = """" & objFile & "e" & """"
 end if
 Msgbox "Das Skript" & vbNewLine & Name1 & vbNewLine & "wird codiert in" & _
        vbNewLine & Name2,vbInformation,"Info"
 Befehl = encoder & " " & Name1 & " " & Name2
 on error resume next
 WshShell.Run Befehl,,true
 if err > 0 then
    Msgbox "Bei der Codierung trat ein Fehler auf.",vbExclamation,"Abbruch"
 else
    Msgbox "Die Codierung war erfolgreich",vbInformation,"Fertigmeldung"
 end if

else

 Msgbox "Die Datei" & vbNewLine & objFile & vbNewLine & "ist kein VB- oder J-Skript." & _
       vbNewline & vbNewLine & "Die Codierung wird abgebrochen!",vbExclamation,"Abbruch"

end if '************************************** ENDE ****************************************************** Das Skript muss in einem gemeinsamem Ordner mit der Encoder-Datei abgespeichert werden. Dann legt man am besten eine Verknüpfung zum Verschlüsselungsskript auf dem Desktop ab und kann dann eine zu verschlüsselnde Datei per "Drag and Drop" auf diese Verknüpfung ziehen. Dadurch wird automatisch die Verschlüsselung gestartet und bei Erfolg das verschlüsselte Skript im selben Ordner wie das Original abgelegt.

Entschlüsseln

Die Verschlüsselung verhindert den laienhaften Zugriff auf den Code. Man muss aber wissen, dass das Decodieren einer solchen Verschlüsselung für den Experten relativ einfach ist. Man kann sich also nicht darauf verlassen, dass mit der Verschlüsselung der Code wirklich gesichert ist.

Anmerkung

Man sollte Skripte in der Regel im Klartext veröffentlichen. Das erlaubt anderen auf einfache Weise aus einem Skript Informationen zu ziehen, ggf. daraus zu lernen, evtl. Fehler zu beseitigen oder für eigene Zwecke anzupassen. Nur wenn man deutlich machen will, dass alles dies nicht gewünscht wird, ist die Verschlüsselung angebracht.

verschluesseln.1527252295.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki