Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Cmd - Textverschlüsselung durch eigenes Alphabet

Frage Microsoft

Mitglied: abbrechen

abbrechen (Level 1) - Jetzt verbinden

03.01.2012 um 03:53 Uhr, 3820 Aufrufe, 1 Kommentar

Hi,

ich würde gerne einen Fließtext via cmd verschlüsseln können und stelle mir die Struktur wiefolgt vor:

alphabet.endung
--> Inhalt: a = &%n<
b = )?""§
usw.

Verschlüsselungsdatei.bat
Diese Datei erkennt den Text, verwendet die alphabet.endung und wandelt ihn in einen verschlüsselten Text um.

text.txt
Der zu verschlüsselnde Text

new.txt
der verschlüsselte Text


Nun habe ich grundliegende Probleme bei diesem Projekt.
Zum Einen finde ich keinen Befehl, um den Inhalt einer Datei zu erkennen und zum anderen keinen Befehl um diesen Inhalt auf den Inhalt einer anderen Datei einzusetzen, sprich dass der Text vom Alphabet verschlüsselt wird.
Alternative Sprachen wären bei mir keine Lösung, da ich außer wenigen Websprachen nur in cmd halbwegs bewand bin.
Mitglied: Friemler
03.01.2012 um 12:03 Uhr
Hallo abbrechen,

leider ist die CMD-Batchsprache nur schlecht zum verarbeiten des Inhalts von Textdateien geeignet. Das fängt mit der Zeichencodierung an (CMD arbeitet mit der DOS-Codepage 850, normale Windowsprogramme/-editoren mit der ANSI-Codepage) und hört mit den Schwierigkeiten beim Verarbeiten von Zeichen auf, die zum Sprachumfang von Batchscript gehören (z.B. %,&,<,> usw.).

Deshalb eine VBScript-Lösung von mir:
01.
'Name der Datei mit dem Codierungsalphabet 
02.
strStdAlphabetFile = "Alphabet.txt" 
03.
 
04.
 
05.
'Konstanten für File-I/O 
06.
Const ForReading = 1 
07.
Const ForWriting = 2 
08.
 
09.
 
10.
'Wurden Parameter übergeben? 
11.
If WScript.Arguments.Count > 0 Then 
12.
  'FileSystemObject erzeugen 
13.
  Set objFSO = CreateObject("Scripting.FileSystemObject") 
14.
 
15.
  'Name der zu verschlüsselnden Datei aus dem ersten Element der Parameterliste lesen 
16.
  'und ihren vollständigen Pfad ermitteln 
17.
  strInFile  = objFSO.GetAbsolutePathName(WScript.Arguments(0)) 
18.
 
19.
  'Existiert die Eingabedatei? 
20.
  If objFSO.FileExists(strInFile) Then 
21.
    'Wenn zwei Parameter übergeben wurden, Name der Datei mit dem Codierungsalphabet 
22.
    'aus dem zweiten Element der Parameterliste lesen, sonst auf den Standardwert setzen 
23.
    If WScript.Arguments.Count > 1 Then 
24.
      strAlphabetFile = WScript.Arguments(1) 
25.
    Else 
26.
      strAlphabetFile = strStdAlphabetFile 
27.
    End If 
28.
 
29.
    'Vollständigen Pfad der Alphabetdatei ermitteln 
30.
    strAlphabetFile = objFSO.GetAbsolutePathName(strAlphabetFile) 
31.
 
32.
    'Existiert die Datei mit dem Codierungsalphabet? 
33.
    If objFSO.FileExists(strAlphabetFile) Then 
34.
      'Objekt für reguläre Ausdrücke erzeugen 
35.
      Set objRegExp     = New RegExp 
36.
      'Nur das erste Auftreten des Suchmusters finden 
37.
      objRegExp.Global  = False 
38.
      'Suchmuster setzen 
39.
      objRegExp.Pattern = "^(.{1})=(.{1,})$" 
40.
 
41.
      'Dictionary-Objekt erzeugen 
42.
      Set objDictionary         = CreateObject("Scripting.Dictionary") 
43.
      'Groß-/Kleinschreibung unterscheiden 
44.
      objDictionary.CompareMode = 0 
45.
 
46.
      'Alphabetdatei zum Lesen öffnen 
47.
      Set objAlphabetFile = objFSO.OpenTextFile(strAlphabetFile, ForReading) 
48.
 
49.
      'Alphabetdatei bis zum Ende einlesen 
50.
      While Not objAlphabetFile.AtEndOfStream 
51.
        'Eine Zeile einlesen 
52.
        strLine = objAlphabetFile.ReadLine 
53.
 
54.
        'Die Zeile in ihre Bestandteile zerlegen 
55.
        Set colMatches = objRegExp.Execute(strLine) 
56.
 
57.
        'Schlüssel und Wert in das Dictionary eintragen 
58.
        objDictionary.Add colMatches(0).SubMatches(0), colMatches(0).SubMatches(1) 
59.
      Wend 
60.
 
61.
      'Alphabetdatei schließen 
62.
      objAlphabetFile.Close 
63.
 
64.
      'Objekt erzeugen, das die zu verschlüsselnde Datei referenziert 
65.
      Set objInFile = objFSO.GetFile(strInFile) 
66.
 
67.
      'Aus Pfad und Name der Eingabedatei Pfad und Name der Ausgabedatei erzeugen 
68.
      'Aus "Test.txt" wird "Test_Codiert.txt" 
69.
      strOutFile = objFSO.BuildPath(objFSO.GetParentFolderName(objInFile.Path), objFSO.GetBaseName(objInFile.Name) _ 
70.
                                                                                & "_Codiert." _ 
71.
                                                                                & objFSO.GetExtensionName(objInFile.Name) _ 
72.
73.
 
74.
      'Eingabedatei zum Lesen öffnen 
75.
      Set objInStream  = objInFile.OpenAsTextStream(ForReading) 
76.
 
77.
      'Ausgabedatei zum Schreiben öffnen 
78.
      Set objOutStream = objFSO.OpenTextFile(strOutFile, ForWriting, True) 
79.
 
80.
      'Eingabedatei bis zum Ende einlesen 
81.
      While Not objInStream.AtEndOfStream 
82.
        'Eine Zeile lesen 
83.
        strLine = objInStream.ReadLine 
84.
 
85.
        'Jedes Zeichen der Zeile verarbeiten 
86.
        For I = 1 To Len(strLine) 
87.
          'Ein Zeichen aus der aktuellen Zeile extrahieren 
88.
          strChar = Mid(strLine, I, 1) 
89.
 
90.
          'Existiert für das aktuelle Zeichen eine Codierungsregel? 
91.
          If objDictionary.Exists(strChar) Then 
92.
            'Das codierte Zeichen in die Ausgabedatei schreiben 
93.
            objOutStream.Write objDictionary.Item(strChar) 
94.
          Else 'Keine Codierungsregel gefunden 
95.
            'Das Zeichen uncodiert in die Ausgabedatei schreiben 
96.
            objOutStream.Write strChar & strChar 
97.
          End If 
98.
        Next 
99.
 
100.
        'Zeilenumbruch in die Ausgabedatei schreiben 
101.
        objOutStream.Write vbCrLf 
102.
      Wend 
103.
 
104.
      'Aus- und Eingabedatei schließen 
105.
      objOutStream.Close 
106.
      objInStream.Close 
107.
 
108.
      'Returncode setzen 
109.
      intResult = 0 
110.
    Else 'Datei mit Codierungsalphabet existiert nicht 
111.
      'Fehlermeldung ausgeben 
112.
      WScript.Echo "Alphabetdatei " & strAlphabetFile & " nicht gefunden." & vbCrLf 
113.
 
114.
      'Hilfe ausgeben 
115.
      PrintHelp 
116.
 
117.
      'Returncode setzen 
118.
      intResult = 3 
119.
    End If 
120.
  Else 'Eingabedatei existiert nicht 
121.
    'Fehlermeldung ausgeben 
122.
    WScript.Echo "Eingabedatei " & strInFile & " nicht gefunden." & vbCrLf 
123.
 
124.
    'Hilfe ausgeben 
125.
    PrintHelp 
126.
 
127.
    'Returncode setzen 
128.
    intResult = 2 
129.
  End If 
130.
Else 'Aufruf ohne Parameter 
131.
  'Hilfe ausgeben 
132.
  PrintHelp 
133.
 
134.
  'Returncode setzen 
135.
  intResult = 1 
136.
End If 
137.
 
138.
'Script beenden und Returncode zurückliefern 
139.
WScript.Quit intResult 
140.
 
141.
 
142.
 
143.
'Unterprogramm zur Ausgabe der Hilfe 
144.
Sub PrintHelp 
145.
  WScript.Echo "Aufruf       : " & WScript.ScriptName & " ""Dateipfad"" [""Alphabetdatei""]" 
146.
  WScript.Echo 
147.
  WScript.Echo "Dateipfad    : Pfad der zu verschlüsselnden Datei." 
148.
  WScript.Echo "Alphabetdatei: Pfad zur Datei mit dem Codierungsalphabet." 
149.
  WScript.Echo "               Falls nicht angegeben, wird im aktuellen Verzeichnis" 
150.
  WScript.Echo "               nach der Datei " & strStdAlphabetFile & " gesucht." 
151.
End Sub
Den Code z.B. als Encode.vbs speichern und dann folgendermaßen aufrufen:

cscript /nologo encode.vbs "PfadDerEingabedatei" ["PfadDerAlphabetdatei"]
Der Pfad zur Alphabetdatei ist optional. Wenn nicht angegeben, wird im aktuellen Verzeichnis nach einer Datei namens Alphabet.txt gesucht, die das Codierungsalphabet in der von Dir beschriebenen Form enthalten muss, also z.B.
01.
a=&%n< 
02.
b=)?"§
usw.

Du musst für Groß- und Kleinbuchstaben separate Einträge in der Datei anlegen oder in Zeile 44 die 0 durch eine 1 ersetzen.

Um VBScript zu lernen: Google mal nach script56.chm (englische Version von MS) oder lade Dir von hier die (teilweise) deutsche Version.

Eine gute Übung wäre, den Decoder selbst zu schreiben . Du musst nur einige wenige Änderungen an obigem Code durchführen.

Noch ein Tipp: Falls Du wirklich die Zeichen aus der Eingabedatei durch mehrere Zeichen in der Ausgabedatei codieren willst, nimm für alle Zeichen eine konstante Anzahl Ersetzungszeichen.

Gruß
Friemler
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Sonstige Systeme
Kaspersky OS: Kaspersky stellt eigenes Betriebssystem vor (2)

Link von tomolpi zum Thema Sonstige Systeme ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...