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

unregelmäßige zeichenlänge am anfang einer txt-datei auslesen und vergleichen lassen

Frage Entwicklung Batch & Shell

Mitglied: rumpelstielzchen987

rumpelstielzchen987 (Level 1) - Jetzt verbinden

19.11.2006, aktualisiert 22.11.2006, 6114 Aufrufe, 16 Kommentare

erst mal zum terrain:
also
ich habe mir einen cryptomaten aus ncryptschnippseln zusammengebastelt, der beim verschlüsseln ein beliebiges format in eine txt umbenennt, deren inhalt verschlüsselt und an einen rechner sendet. an diesem rechner wird das passende decrypt-programm mit den passwortdateien gespeist und decodiert den zeichensalat ein wenig. nun soll diese decrypt.bat den anfang der klartextdatei lesen um daraus das ursprüngliche format zu erschließen und die datei wieder richtig umzubenennen.

dazu habe ich mir mal die arbeit gemacht und eindeutige identifikationsgesichtspunkte von in txt umbenannten dateiformaten analysiert:
if BM6 am anfang der datei, rename output.txt output.bmp
Rar! am anfang der datei, rename output.txt output.rar
ID3 am anfang der datei, rename output.txt output.mp3
ÿØÿà am anfang der datei, rename output.txt output.jpg
‰PNG am anfang der datei, rename output.txt output.png
MZ am anfang der datei, rename output.txt output.exe
<html <head <body <!DOCTYPE html am anfang der datei, rename output.txt output.html
%PDF am anfang der datei, rename output.txt output.pdf
PK am anfang der datei, rename output.txt output.zip
.RMF am anfang der datei, rename output.txt output.rmm
MZ am anfang der datei, rename output.txt output.dll
º! oder ³ am anfang der datei, rename output.txt output.mpg
{\rtf1 am anfang der datei, rename output.txt output.rtf
MSCF am anfang der datei, rename output.txt output.cab
FWS oder CWS am anfang der datei, rename output.txt output.swf
y&#8212;ÀX am anfang der datei, rename output.txt output.csa
GIF am anfang der datei, rename output.txt output.gif
II* am anfang der datei, rename output.txt output.tif
oggs am anfang der datei, rename output.txt output.ogg
RIFF?? WAVEfmt am anfang der datei, rename output.txt output.wav
RIFF??? AVI am anfang der datei, rename output.txt output.avi
bei sehr vielen anderen formaten wie doc, ppt, xls, msi, itw, wma und sehr sehr vielen anderen bin ich auf kein für dieses format typisches merkmal gestoßen was sich nur bei diesem dateityp wiederholt.
nun ist ein problem, dass ich nicht weiß wie ich den anfang einer txt auslese, ein anderes, dass die anzahl der zu lesenden buchstaben ungleich ist (mal sind 12 buchstaben mit platzhaltern notwendig, ein anderes mal nur 2 um eindeutig das format zu bestimmen) und ein weiteres, dass bei avi und wav die jokerzeichen jokerzeichen sind (anders als bei tif). hier steht nach dem riff bei wav 2 zeichen lang blumentopferde und bei riff von avi 3 mal irgendein zeichen das bei jeder weiteren umbenannten avi anders ist.

mit den bereits hier im forum genannten beispielen konnte ich mir irgendwie keinen brauchbaren näherungswert reimen.

ich denke mal, man wird die erste zeile lesen, deren anfang mit den bekannten zeichen vergleichen und daraufhin die dateinamen ändern.

ein fertiges programm dafür zu nehmen wäre langweilig. und gnupg zu modifizieren, dazu bin ich nicht in der lage^-^

falls jemand einen besseren weg kennt, bloß bescheid sagen. ich bin wie man sieht noch ziemlicher noob und freue mich über jedes hilfeangebot.

Gruß von dem bösen das jeder kennt, doch das niemand beim namen nennt.
Mitglied: bastla
19.11.2006 um 18:40 Uhr
Hallo rumpelstielzchen987!

Bevor Du Dir mit Batch ein Bein ausreisst, vielleicht ein VBScript ...

Gleich vorweg: VBScript ist für die Bearbeitung von Text-, nicht von Binärdateien vorgesehen - sei also nicht überrascht, wenn zB ein Null-Byte Probleme bereitet. Da Du aber ohnehin nur eine bestimmte Anzahl von Zeichen benötigst, könnte es wie folgt gehen:
01.
'CheckFileType.vbs 
02.
Dim sSignature(3), sTyp(3) 
03.
sSignature(1) = "y&#8212;ÀX " : sTyp(1) = "csa" 
04.
sSignature(2) = "ÿØÿá" : sTyp(2) = "jpg" 
05.
sSignature(3) = "ID3" : sTyp(3) = "mp3" 
06.
sTestFile = WScript.Arguments(0) 
07.
Set fso = WScript.CreateObject("Scripting.FileSystemObject") 
08.
Set oFile = fso.OpenTextFile(sTestFile, 1) 
09.
sStart = oFile.Read(15) 
10.
oFile.Close 
11.
sTypGefunden = "NotFound" 
12.
For i = 1 To UBound(sSignature) 
13.
	If Left(sStart, Len(sSignature(i))) =  sSignature(i) Then 
14.
		sTypGefunden = sTyp(i) 
15.
		Exit For 
16.
	End If 
17.
Next 
18.
WScript.Echo sTypGefunden
Aus angeborener Faulheit habe ich nur 2 3 Beispiele eingegeben, daher also bitte Liste am Anfang ergänzen! Die Anzahl der zu lesenden Zeichen mit derzeit 15 kannst Du an den längsten vorkommenden String anpassen.
Bei Aufruf von der Commandline mit
01.
cscript //nologo C:\Scripts\CheckFileType.vbs "C:\Pfad mit Leerstellen\Test.txt"  > %Temp%\Typ.txt
erhältst Du in der Textdatei "%Temp%\Typ.txt" den festgestellten Dateityp (oder "NotFound") für "C:\Pfad mit Leerstellen\Test.txt" und kannst mit Batch weitermachen (vorausgesetzt wurde, dass die Scriptdatei im Ordner "C:\Scripts" liegt).

Wenn Du übrigens die zu testende Datei auf die Scriptdatei ziehst, wird das Ergebnis in einer MessageBox angezeigt.

HTH
bastla

[Edit] Weil die anderen gar so verunstaltet waren, habe ich (trotz Faulheit) noch "mp3" dazugenommen. [/Edit]
Bitte warten ..
Mitglied: bastla
19.11.2006 um 19:36 Uhr
Ergänzung: Um auch per Errorlevel den Erfolg der Suche abfragen zu können, noch als letzte Zeile hinzufügen:
01.
If sTypGefunden = "NotFound" Then WScript.Quit(1)
bastla
Bitte warten ..
Mitglied: Biber
19.11.2006 um 19:49 Uhr
Hallo rumpelstielzchen987!

Bevor Du Dir mit VBscript ein Bein ausreisst, vielleicht ein simpler Batch... **gg

Leg Dir für Deine HeaderInformationen eine einfache 2-spaltige Textdatei an (mit einem Leerzeichen zwischen Signatur und Extension):

01.
-------snipp Headerinfo.txt ---------------> mit deinem Editor im DOS-Zeichensatz speichern; nicht im ANSI-Zeichensatz. 
02.
HeaderTag FileExtension  
03.
BM6 .bmp 
04.
Rar!  .rar 
05.
ID3 .mp3 
06.
ÿØÿà .jpg 
07.
ëPNG .png 
08.
.... 
09.
MSCF .cab 
10.
....
Die Batchdatei sähe etwas kürzer aus als bastla's Schnipsel:
01.
::-----GetExtensionBySignature.bat 
02.
@echo off & setlocal 
03.
Set /p Signature=<output.txt 
04.
For /f "skip=2 tokens=2" %%i in ('Find "%signature%" Headerinfo.txt ^2^>nul') do Set "Extension=%%i" 
05.
@echo Signatur: [%signatur%] ...... Extension: [%Extension%] 
06.
if defined extension rename output.txt output%extension%
Ich hab sie mir zum Testen etwas umgeschrieben:
01.
::-----snipp GetExtBySigTest.bat 
02.
@echo off & setlocal 
03.
Set /p Signature=<%1 
04.
For /f "skip=2 tokens=2" %%i in ('Find "%signature%" Headerinfo.txt ^2^>nul') do Set "Extension=%%i" 
05.
@echo Signatur: [%signature%] ...... Extension: [%Extension%]
...damit ich eine beliebige Datei testen kann (die ich Parameter übergebe). Bei Dir heißt die ja immer output.txt
Ergebnis:
01.
02.
>getExtBySigTest.bat iuident.cab 
03.
Signatur: [MSCF] ...... Extension: [.cab] 
04.
 
05.
>getExtBySigTest.bat xsetlogo.png 
06.
Signatur: [‰PNG] ...... Extension: [.png]
Grüße
Biber
Bitte warten ..
Mitglied: rumpelstielzchen987
19.11.2006 um 20:05 Uhr
vielen dank für die antworten... wenn eure tipps nicht funktionieren, melde ich mich wieder xD

Gruß von dem bösen das jeder kennt, doch das niemand beim namen nennt.

EDIT: einige kleinigkeiten hab ich aber noch:
bei .html kann es sein dass die html-datei mit <doctype! html beginnt. ein leerzeichen in der signatur. bei mpg ist eigentlich auch eins davor, das durch das forum autokorrigiert wurde. stören die, oder wird %Extension% durch den punkt erkannt? wohl nicht... fällt da jemandem eine lösung ein?

das zweite problem sind die jokerzeichen bei wav und avi die als jokerzeichen dienen. hier unterscheiden sich auch avis untereinander. wie kann ich dem script sagen, dass bei avi und bei wav wirkliche platzhalter im spiel sind? wenn ich das pauschalisiere und alle joker als joker nehmen lasse klappt es ja auch...

lässt sich die Headerinfo.txt nicht auch in die bat einbinden? das müsste ja dann für den "stapelverarbeiter" als "nichtbefehl", für das script aber als signatur gelten... wenn es nicht geht pack ich es in einen beiliegenden "sources"-ordner... auch kein problem. Danke aber schon im vorraus.
Bitte warten ..
Mitglied: Biber
19.11.2006 um 20:20 Uhr
@Rumpel
wenn eure tipps nicht funktionieren, melde ich mich wieder

bastla's Tipps funktionieren immer...
Ich würde mich freuen, wenn Du auch eine Rückmeldung gibst, wenn es einfach works as designed.

Thx
Biber
Bitte warten ..
Mitglied: bastla
19.11.2006 um 20:26 Uhr
@stielz
Glaub ihm kein Wort

@Biber
In Zukunft fabriziere ich auch nur mehr few-liner (etwa so, wobei ich noch mindestens eine Zeile verschenkt habe):
01.
Dim Sig(3),Typ(3):Sig(1)="y&#8212;ÀX":Typ(1)="csa":Sig(2)="ÿØÿá":Typ(2)="jpg":Sig(3)="ID3":Typ(3)="mp3" 
02.
s=WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0),1).Read(15) 
03.
t="NotFound":For i=1 To UBound(Sig):If Left(s,Len(Sig(i)))=Sig(i) Then t=Typ(i):Exit For 
04.
Next:WScript.Echo t:If t="NotFound" Then WScript.Quit(1)
Grüße
bastla
Bitte warten ..
Mitglied: Biber
19.11.2006 um 21:02 Uhr
@bastla
Das wäre aber kryptisch... *gg
Ich würde zwar auch ohne Hilfsdatei auskommen, aber das verkneif ich mir...
01.
@echo off & setlocal & Set /p Signature=<%1 
02.
For %%s in (BM6.bmp Rar!.rar ID3.mp3 ÿØÿà.jpg ëPNG.png MSCF.cab) Do ( 
03.
 For /f "tokens=1-2 delims=." %%a in ("%%s") do  If /i [%signature%]==[%%a] Echo Extension=.%%b 
04.
)
Demo:
01.
>getExtBySignature.bat iuident.cab 
02.
Extension=cab 
03.
 
04.
>getExtBySignature.bat xsetlogo.png 
05.
Extension=png
Grüße
Biber
Bitte warten ..
Mitglied: bastla
19.11.2006 um 21:15 Uhr
@Biber
Ich trag's mit Fassung ...

À propos "kryptisch": Magst Du mir erklären, warum bei Deinem Schnipsel oben das "Find" überhaupt funktioniert? Syntaktisch schaut das für mich etwas sehr ungewöhnlich aus (wobei ich grundsätzlich schon die Verwendung von "Find" mit Pipe als Filter bzw mit Umleitung der Eingabe kenne).

Wieso das Escape für die Umleitung der Fehlermeldungen (^2^>nul)?

Und übrigens ...
<nitpick>
Mit "Find" kannst Du aber eigentlich nicht sicher sein, dass der Suchstring am Anfang der Datei steht, und durch die Schleife kommt die letzte Übereinstimmung zum Zug (wobei es natürlich ziemlicher Zufall sein müsste, dass etwa ein mp3-File die dem String "{\rtf1" entsprechenden Bytes enthielte)?
</nitpick>

Grüße
bastla
Bitte warten ..
Mitglied: rumpelstielzchen987
19.11.2006 um 21:28 Uhr
wäre jemand so freundlich mal zusammenzufassen und meine editeinträge zu beachten?^^

nichts für ungut ich bin euch echt sehr dankbar.
Bitte warten ..
Mitglied: Biber
19.11.2006 um 22:06 Uhr
@bastla
Wieso das Escape für die Umleitung der Fehlermeldungen (^2^>nul)?
Das ist nur für den Fall, dass die Extension nicht gefunden wäre....
... aber da Find/Findstr ja nur Fehlermeldungen bringen bei Syntaxfehlern oder wenn die zu durchsuchende Datei fehlt, ist es eigentlich überflüssig.
Maskieren muss ich mit dem Caret "^" innerhalb der FOR-Anweisungsklammer alles, was für die CMD.exe ein Steuerzeichen ist.
Und "2" und ">" gehören dazu.

Mit "Find" kannst Du aber eigentlich nicht sicher sein, dass der Suchstring am Anfang der Datei steht,
Ja mei.... da in der Textdatei nur knapp 10 Zeichen in einer Zeile stehen, z.B. "ëPNG .png" oder "MSCF .cab" , kann ich damit leben.

Und sonst könnte ich natürlich auf "Find.exe" verzichten und es wie in der zweiten Skizze machen mit direktem Vergleich "..
Siehe das... "....If /i [%signature%]==[%%a]..."

@Rumpel
wäre jemand so freundlich mal zusammenzufassen

Jau. sowohl bastla wie ich wären so vorgegangen, jeweils die "Signatur" bzw die ersten Bytes der output.txt mit einem ebenfalls als "Text" vorliegenden Matchstring zu vergleichen.
Exakt. Ohne Berücksichtigung der "Wildcard-Varianten", die Du genannt hast. Da fassen wir beide ins Leere.

Werde ich auch nicht mit Batch-Mitteln gebacken bekommen, weil ich dann auch mit Wildcards vergleichen - also letzten Endes mit Regular Expressions arbeiten müsste.
Das kann von den Konsolen-Utilities aber nur FindStr.exe, nicht aber Find.exe.
Aber: FindStr.exe ist leider schnell und lieblos zusammengeschustert worden von Microsoft...
...da kann ich GAR NICHT mit Zeichen der erweiterten Zeichensätze suchen (nicht mal nach Umlauten).

Auch bastla bzw. VBScript ist mit Regular Expressions ein bisschen überfordert, denke ich.
Wir sollten also alle auf jemand warten, der entweder mit PERL das Kram abfackelt ODER auf jemand, der Lust hat,
diese Signaturen Byte für Byte als HexCode zu vergleichen.

Andererseits wird dann früher oder später die Frage kommen, wieso das überhaupt sein muss...
Du musst die Informationen, welche Dateiendungen sich hinter/unter dem namen der output.txt verbergen, doch gehabt haben VOR dem Verschlüsseln??
Wieso hast Du nicht aufbewahrt?? Schlechte Planung? *gg

Ich habe vorhin geantwortet, weil es natürlich mit einfachen Mitteln möglich ist,
die ersten paar Bytes eines unbekannten Files als Dateityp zu interpretieren, aber zuverlässig ist es nicht.

Siehe Deine "MZ"-Interpretation als "*.exe" und als "*.dll".
Und als weiteres Indiz, dass es keine funktionierenden Windows-Utilities gibt, die GetFileType.exe heißen.
Unter *nix-Systemen ist das kein Thema.

Gruß
Biber
Bitte warten ..
Mitglied: bastla
19.11.2006 um 22:20 Uhr
Hallo rumpelstielzchen987!

bei .html kann es sein dass die html-datei mit <doctype! html beginnt. ein leerzeichen in der signatur. bei mpg ist eigentlich auch eins davor, das durch das forum autokorrigiert wurde. stören die, oder wird %Extension% durch den punkt erkannt? wohl nicht... fällt da jemandem eine lösung ein?
Wenn die Signaturen richtig eingelesen werden (was zu testen wäre, aber bei "<doctype! html" klappen müsste), stören Blanks sicherlich nicht.

das zweite problem sind die jokerzeichen bei wav und avi die als jokerzeichen dienen. hier unterscheiden sich auch avis untereinander. wie kann ich dem script sagen, dass bei avi und bei wav wirkliche platzhalter im spiel sind? wenn ich das pauschalisiere und alle joker als joker nehmen lasse klappt es ja auch...
Dafür hatte ich bisher keine Vorsorge getroffen. Für die Spezialfälle "wav" und "avi" ließen sich aber zusätzliche Tests einbauen, etwa
01.
If Left(sStart, 4) = "RIFF" Then If Mid(sStart, 9, 7) = "WAVEfmt" Then sTypGefunden = "wav"
Im übrigen lässt sich natürlich das Umbenennen der übergebenen Datei (zB "output.txt") auch innerhalb des Scripts erledigen; verbesserte/ergänzte Version daher:

01.
'SetFileType.vbs 
02.
Dim sSignature(3), sTyp(3) 
03.
sSignature(1) = "y&#8212;ÀX " : sTyp(1) = "csa" 
04.
sSignature(2) = "ÿØÿà" : sTyp(2) = "jpg" 
05.
sSignature(3) = "ÿØÿá" : sTyp(3) = "jpg" 
06.
 
07.
sTestFile = WScript.Arguments(0) 
08.
Set fso = WScript.CreateObject("Scripting.FileSystemObject") 
09.
Set oFile = fso.OpenTextFile(sTestFile, 1) 
10.
sStart = oFile.Read(15) 
11.
oFile.Close 
12.
 
13.
sTypGefunden = "NotFound" 
14.
For i = 1 To UBound(sSignature) 
15.
	If Left(sStart, Len(sSignature(i))) =  sSignature(i) Then 
16.
		sTypGefunden = sTyp(i) 
17.
		Exit For 
18.
	End If 
19.
Next 
20.
If Left(sStart, 4) = "RIFF" Then If Mid(sStart, 9, 7) = "WAVEfmt" Then sTypGefunden = "wav" 
21.
 
22.
If sTypGefunden <> "NotFound" Then 
23.
	Set oFile = fso.GetFile(sTestFile) 
24.
	sNewName = Left(oFile.Name, InStrRev(oFile.Name, ".") - 1) & "." & sTypGefunden 
25.
	oFile.Name = sNewName 
26.
End If
Verwendung des Scripts: Am einfachsten per Drag and Drop ("output.txt" auf das Script ziehen)

Anmerkung zu Sigs 2 und 3: Ich habe ".jpg"-Dateien mit den Varianten E0 oder E1 für Byte 3 gefunden ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
19.11.2006 um 22:34 Uhr
@Biber

Darf ich Dich nochmals auf die "Find"-Syntax ansprechen? Ich hätte vermutlich etwas in der Art versucht:
01.
For /f "tokens=1-2" %%a in (Headerinfo.txt) do Find "%%a" output.txt && Set "Extension=%%b"
Bedeutet das "<%1" in Deiner Version, dass Du den gesamten Inhalt (zumindest soviel davon als Text verstanden wird) der "output.txt" als Suchbegriff verwendest und daher nach einem längeren String in einem kürzeren suchst?

Verwirrte Grüße
bastla
Bitte warten ..
Mitglied: Biber
19.11.2006 um 22:53 Uhr
@bastla
Bedeutet das "<%1" in Deiner Version, dass Du den gesamten Inhalt (zumindest soviel davon als Text verstanden wird)
der "output.txt" als Suchbegriff verwendest
und daher nach einem längeren String in einem kürzeren suchst?
Jepp, exakt. Der erste Teil zumindest..."den gesamten Inhalt (zumindest soviel davon als Text verstanden wird) "
Auch wenn ich wenig Vertrauen in diese Ersten-paar-Bytes-Interpretationen habe:
wenn dort überhaupt etwas zum Wiederfinden hinterlegt ist, dann ist es mit Hex(0) abgeschlossen.
Und bis dahin lese ich.. *gg

Aber bei Binär-Dateien ist es dann nicht: "daher nach einem längeren String in einem kürzeren"...

Sonst würde meine Strategie so nicht funktionieren, da geb ich Dir Recht. *g
Und auch nicht, wenn rumpelchen sich für andere Matchstrings entschieden hat als die Zeichen, die vor einem 0x0 stehen...
[ Beispiel *.bmp-Dateien:
set /p head=<setup.bmp
set head
head=BM6ö
]

Also: meine Methode funktioniert bei Binärdateien ganz gut, aber...

Selbst eine normale Html-Datei erwisch ich nicht, fällt mir grad auf....
Textformate müsste ich separat abfackeln.... also .html, .txt, .xml,...und Hundert andere.... ich komme also auch nicht richtig weit.

Grüße
Biber
Bitte warten ..
Mitglied: Biber
20.11.2006 um 00:56 Uhr
Sorry, rumpie,

Deine erwähnten <edit>s habe ich vorhin tatsächlich überlesen.
lässt sich die Headerinfo.txt nicht auch in die bat einbinden?
Ja, siehe meine zweite Variante mit den beiden FOR-Anweisungen.
das müsste ja dann für den "stapelverarbeiter" als "nichtbefehl", für das script aber als signatur gelten...
wenn es nicht geht pack ich es in einen beiliegenden "sources"-ordner... auch kein problem. Danke aber schon im vorraus

Aber jetzt möchte ich auf ein größeres Problem eingehen.

Ein Problem bei der angestrebten Strategie ist, dass sie eigentlich nicht funktionieren kann (um gleich mit der Tür ins Haus zu fallen).

Wir reden hier von Äpfeln und Birnen.

a) Äpfel oder Bnärdateien haben in den ersten Bytes eine Signatur... siehe bei .exe, .jpg, .mp3, .pdf, ...
Da passt meine Batch-Hauruck-Mimik.
b) Birnen oder Textfiles wie *.txt, *,vbs, *.cmd, *.xml, *.css, *.htm(l)
DIE HABEN KEINEN HEADER.
Sicherlich ganz deutlich bei *.txt-Dateien ...wie wolltest Du meine "Extension.txt" als Textdatei erkennen?
Bei XML oder HTM(L)-Dateien könnte man/frau die ersten 4 ("XML") oder 5 ("<HTML") Zeichen prüfen... aber auch das ist schon windig.
Eine .vbs oder .cvs oder .bat-Datei ist gar nicht an der ersten Zeile erkennbar. Es gibt auch keine bestimmte Zeile, die so eine Datei enthalten muss.

Führ ich jetzt nicht weiter aus... für mich erkennbar ist: Dateierkennung aufgrund Headerinfos geht nicht bei Nicht-Binärdateien. Ende,

Alternativstrategien:
1) Du lieferst die Original-Namen irgendwie mit. Für jede gesendete/bereitgestellte "Output.txt".
Die Mimik hab ich ohnehin nicht verstanden...
-was macht den der Empfänger mit einer Datei output.exe, die bei ihm ankommt? Erstmal anstarten?
- und wenn drei *.exe und vier *dll-Dateien gesendet werden oder 3000 *.jpg-Urlaubsfotos, kommt dann je eine output.exe und ein output.jpg an?
2) Oder - du sendest alle Dateien gleich immer im Zip-Format...also eine verschlüsslte output.txt, die eine entschlüsselte output.txt ergibt, die in Wirklichkeit eine output.zip ist...und in der natürlich alle Namen erhalten bleiben.
Das kannst Du dann aber lesbarer machen...sende eine inputcrypted.xyz, entschlüssele in eine Output.zip.
Was spräche dagegen?

Gruß
Biber
Bitte warten ..
Mitglied: rumpelstielzchen987
20.11.2006 um 16:30 Uhr
ich entschuldige mich für die vollkommene unpassendheit meiner letzten beiträge... war wohl nicht schnell genug mit dem aktualisieren...

Zitat:
Andererseits wird dann früher oder später die Frage kommen, wieso das überhaupt sein muss...
Du musst die Informationen, welche Dateiendungen sich hinter/unter dem namen der output.txt verbergen, doch gehabt haben VOR dem Verschlüsseln??
Wieso hast Du nicht aufbewahrt?? Schlechte Planung? *gg

jaa, ich habe bisher 2 batchs auf einem rechner... ncrypt verschlüsselt nur txt-dateien. um nun auch andere formate wie iso o.ä. zu verschlüsseln dachte ich mir, müsste ich mit der encrypt alle formate für das programm kompatibel machen, sprich: in txt umbenennen.
wenn ich die encrypt sich merken lasse, welches format es war, muss diese info ja auch an den decrypter auf dem anderen rechner übertragen werden... wenn man das in die output.txt die beim gegenüber ankommt reinschreibt, könnte daraus jemand der diese datei abfängt (mal rein hypothetisch) auf einen endgültigen dateianfang schließen und damit hinter den algorithmus kommen.
wenn jemandem ein weg einfällt, nur her damit.

zitat:
Die Mimik hab ich ohnehin nicht verstanden...
[1.]-was macht den der Empfänger mit einer Datei output.exe, die bei ihm ankommt? Erstmal anstarten?
[2.]- und wenn drei *.exe und vier *dll-Dateien gesendet werden oder 3000 *.jpg-Urlaubsfotos, kommt dann je eine output.exe und ein output.jpg an?

zu 1.
bei ihm käme eine output txt an... diese würde hoffentlich korrekt umbenannt werden und dann für den empfänger ohne jegliche ahnung von batch und scripting lesbar sein. er sollte möglichst nicht selber die txt öffnen müssen um zu sehen wie er die txt umbenennen soll und sie auch nicht selbst umbenennen sollen. alles automatisch eben.
ein anderer gedanke der mir bei diesem denkanstoß in den sinn gekommen ist, ist der, dass man das programm nur ursprüngliche input.txts, input.rars und/oder input.zips verschlüsseln und automatisch entschlüsseln lässt. alles andere bringt dem user die aufforderung die input.* bitte in ein archiv zu stopfen.
damit hätte sich auch der von dir angestoßene schwachpunkt über den ich mir noch keine gedanken gemacht habe (2.), da ich es ursprünglich für einzelne rechtlich eventuell nicht ganz einwandfreie dateien konzipiert habe, da sonst auch eine verschlüsselung zu lange dauern würde, in wohlgefallen aufgelöst.

mal zu meiner idee, nur rar und zip voneinander und von txt zu unterscheiden... wäre doch in bat bestimmt ganz einfach machbar, oder? wenn ja, wie?

Danke schon im vorraus

gruß vBdnk,danbNn

edit:
ok ich gebe zu, mein anfang nach dem 2. zitat war ein wenig missverständlich ausgedrückt... das mit der einen output.txt bezog sich auf 1., 2. hatte ich da noch außen vor gelassen, darauf gehe ich erst später ein... das war typisches brainstorming...
Bitte warten ..
Mitglied: Biber
22.11.2006 um 10:39 Uhr
Moin rumpie,

nach einem oberflächlichen Test am CMD-Prompt sieht es so aus:

01.
>set /p rarhead=<D:\temp\Irgendeine.rar 
02.
 
03.
(=10:22:59  D:\temp=) 
04.
>set /p ziphead=<D:\temp\irgendein.zip 
05.
 
06.
(=10:23:49  D:\temp=) 
07.
>echo Rarhead:[%rarhead%] ZipHead:[%ziphead%] 
08.
Rarhead:[Rar!&#8594;] ZipHead:[PK&#9829;&#9830;¶]
------------> auf diesem Weg kannst Du die Pseudosignaturen ermitteln, die das "set /p =<"-Kommando bei *.zip bzw. *.rar-Dateien reproduzierbar ausliest.

ACHTUNG: Die Anzeige des Ergebnisses stimmt naturlich nicht hier im HTML-Code, also selber am CMD-Prompt nachturnen. Kein Copy und Paste des Ergebnisses aus diesem Kommentar verwenden.

Diese beiden Matchstrings kannst Du dann in den oben geposteten Schnipsel einbauen.

01.
:: ----snipp RarZipErkennung.bat [Parameter RarOderZipDateiname.mitbeliebigerExtension] 
02.
@echo off & setlocal & Set /p Signature=<%1 
03.
Set "rarSig=Rar!&#8594;" 
04.
set "ZipSig=PK&#9829;&#9830;¶" 
05.
 
06.
For %%s in (%rarSig%.rar %zipSig%.zip) Do ( 
07.
 For /f "tokens=1-2 delims=." %%a in ("%%s") do  If /i [%signature%]==[%%a] Echo Extension=.%%b 
08.
)
[ungetestete Skizze .... würde toi toi toi *.zip und *.rar-Dateien erkennen.]

Gruß
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...