paul3
Goto Top

Binär Code in Text umwandeln

Ist es möglich mit einer Batch Datei Binären Code (automatisch) in Text umzuwandeln?

Habe folgenden Binären Code in einer Datei:

11001100
01101100
00000100
10001100
10001100
10101100
usw...


Die Binär Zahlen müssen als erstes umgekehrt (gespiegelt) werden:

00110011
00110110
00100000
00110001
00110001
00110101
usw...


Dann sollen die (umgekehrten) Binär Zahlen in Text (ASCII) umgewandelt werden:

36 115

Da das immer noch dezimal ASCII ist muss noch einmal umgewandelt werden.

$s


Zum nachvollziehen - http://www.vortex.prodigynet.co.uk/misc/ascii_conv.html

Content-Key: 45189

Url: https://administrator.de/contentid/45189

Printed on: April 18, 2024 at 06:04 o'clock

Member: bastla
bastla Nov 23, 2006 at 15:00:35 (UTC)
Goto Top
Hallo Paul3 und willkommen im Forum!

Wenn Du nicht auf Batch bestehst, würde das folgende Deine Aufgabe lösen:
'DeCrypt.vbs  
Set fso=WScript.CreateObject("Scripting.FileSystemObject")  
Set oFile = fso.OpenTextFile(WScript.Arguments(0),1)
sTemp = ""  
Do While Not oFile.AtEndOfStream
	BZahl = oFile.ReadLine
	If Len(BZahl) <> 8 Then
		oFile.Close
		MsgBox "Eingabedaten fehlerhaft!"  
		WScript.Quit(1)
	End If
	DZahl = 0
	For i = 1 to 8
		DZahl = DZahl + CInt(Mid(BZahl, i, 1)) * 2^(i-1)
	Next
	sTemp = sTemp & Chr(DZahl)
Loop
oFile.Close
aErg = Split(sTemp, " ")  
sErg = ""  
For i = 0 To UBound(aErg)
	sErg = sErg & Chr(aErg(i))
Next
WScript.Echo sErg
Zum Testen den Code als "DeCrypt.vbs" speichern und die Datei mit den Binärdaten auf die "DeCrypt.vbs" ziehen. Um die Lösung in einem Batch zu verwenden, folgende Zeile verwenden:
for /f %%i in ('CScript //nologo "DeCrypt.vbs" "BinDat.txt"') do @set "Erg=%%i"  
Das Ergebnis wird in die Variable Erg geschrieben, damit Du es weiterverarbeiten kannst. Um es anzuzeigen: "Echo %Erg%" im Batch oder einfach von der Commandline "Set Erg"

Wenn Du noch "BinDat.txt" durch "%1" ersetzt, kannst Du der Batchdatei die Binärdatei als Argument übergeben.

Grüße
bastla

[Edit] Errorhandling nur andeutungsweise implementiert, daher "MsgBox" verwendet [/Edit]
Member: Paul3
Paul3 Nov 23, 2006 at 18:14:49 (UTC)
Goto Top
Hallo Bastla,

danke für deine schnelle Hilfe. Habe da noch ne Frage. Wenn ich die BinDat.txt über die DeCrypt.vbs ziehe bekomme ich folgenden Fehler.

http://img106.imageshack.us/img106/2235/decrypterrorky6.jpg

Weis nicht ob es vielleicht daran liegt das es in der BinDat.txt etwa 2300 Zeilen gibt!?
Denn wenn ich nur 1000 Zeilen konvertiere funktioniert es einwandfrei...

Und mit "Echo %Erg%" kann man die Konvertierten Daten dann wieder in einer Textdatei anzeigen lassen oder habe ich das Falsch verstanden?
Member: bastla
bastla Nov 23, 2006 at 18:42:37 (UTC)
Goto Top
Hallo Paul3!

Da ich nicht wusste, was mit dem Ergebnis der Umwandllung passieren soll, habe ich eine "batch-taugliche" Lösung angestrebt - die neue Variante unten schreibt gleich direkt in eine Textdatei und kann dadurch helfen, dem Fehler auf die Spur zu kommen.

In die erste Zeile der Ergebnisdatei (Name und Pfad lassen sich anpassen, siehe Zeile "sOutFile = ...") wird die sich aus dem Umkehren und Umwandeln der Binärdaten ergebende Dezimalzahlenreihe geschrieben, in die zweite Zeile das Endergebnis.

Anmerkung: Dein kurzes Beispiel habe ich so interpretiert, dass die entstehenden Dezimalzahlen jeweils durch Leerstellen voneinander getrennt sein sollen.

Die abgebildete Fehlermeldung deutet darauf hin, dass eine der Dezimalzahlen nicht korrekt ist (im Sinne von "nicht als Zahl erkennbar" und damit vom falschen Typ). Das müsste sich jetzt in der Ergebnisdatei verifizieren lassen.

Neue Version:
'DeCrypt.vbs  
sOutFile = "C:\DeCryptErgebnis.txt"  
Set fso=WScript.CreateObject("Scripting.FileSystemObject")  
Set oInFile = fso.OpenTextFile(WScript.Arguments(0),1)
sTemp = ""  
Do While Not oInFile.AtEndOfStream
    BZahl = oInFile.ReadLine
    If Len(BZahl) <> 8 Then
        oInFile.Close
        MsgBox "Eingabedaten fehlerhaft!"  
        WScript.Quit(1)
    End If
    DZahl = 0
    For i = 1 to 8
        DZahl = DZahl + CInt(Mid(BZahl, i, 1)) * 2^(i-1)
    Next
    sTemp = sTemp & Chr(DZahl)
Loop
oInFile.Close
Set oOutFile = fso.OpenTextFile(sOutFile, 2, True)
oOutFile.Write sTemp & vbCrLF
aErg = Split(sTemp, " ")  
sErg = ""  
For i = 0 To UBound(aErg)
    sErg = sErg & Chr(aErg(i))
Next
oOutFile.Write sErg
oOutFile.Close

Bitte um Rückmeldung!
bastla
Member: Biber
Biber Nov 23, 2006 at 19:27:47 (UTC)
Goto Top
Ich denke, bastla hat einmal zu viel um die Ecke gedacht....

'DeCryptBiberVariante.vbs  
Set fso=WScript.CreateObject("Scripting.FileSystemObject")  
Set oFile = fso.OpenTextFile(WScript.Arguments(0),1)
sTemp = ""  

Do While Not oFile.AtEndOfStream
    BZahl = oFile.ReadLine
    If Len(BZahl) <> 8 Then
        oFile.Close
        MsgBox "Eingabedaten fehlerhaft!"  
        WScript.Quit(1)
    End If
    DZahl = 0
    For i = 1 to 8
        DZahl = DZahl + CInt(Mid(BZahl, 9-i, 1)) * 2^(i-1)
    Next
    sTemp = sTemp & Chr(DZahl)
Loop
oFile.Close
WScript.Echo sTemp

Ich habe zum Test einen halbseitigen Text in der vortex-Seite konvertieren lassen, die Binärwerte per Batch in einzelne Zeilen Schreiben lassen und mit bastla's modifiziertem Skript wieder retour gewandelt.

Gruß
Biber

P.S. Mit native Batch geht es nicht, da die von M$ in der Hilfe versprochene "Set /a"-Variante für Binärzahlen schlicht und einfach nicht implementiert ist.
>set /a 0b00010110
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.
>set /?
.....
d.h. außerhalb eines Befehlsskripts ausgeführt wird, dann zeigt er
den endgültigen Wert des Ausdrucks an. Der Zuordnungsoperator erfordert
eine Umgebungsvariable auf der linken Seite des Operators. Nummerische Werte
stellen immer Dezimalzahlen dar, es sei denn, sie haben ein Präfix 0x für
hexadezimale Zahlen, <b>0b für binäre Zahlen </b>oder 0 für oktale Zahlen. Damit
stellt 0x12 dieselbe Zahl wie 18 oder 022 dar. Beachten Sie, dass die oktale
Schreibweise verwirrend sein kann: So sind 08 und 09 keine gültigen Zahlen,
da 8 und 9 keine erlaubten oktalen Ziffern sind.
P.P.S. Auf der angegebenen Seite wird BTW auf die ascii_conv.js-Implementierung verwiesen. Und die Jungs und Mädels konvertieren ja auch ganz zu Fuss mit handgemalten Tabellen. So etwas geht natürlich auch per Batch...
Aber da müsste man/frau ja bekloppt sein..
bastla's Weg über Algorithmus und minimal die chr()-Funktion ist der Richtige.
Anhang:
Der Ur-Text, den ich auf der vortex-Seite konvertiert habe:
Die sieben Zwerge (für Realisten) 
Es waren einmal sieben Zwerge, die lebten hinter den sieben Bergen. Tag 
für Tag suchten sie im Bergwerk nach Gold. Jeder der Zwerge war 
rechtschaffen, fleißig und achtete den Anderen. 
Wenn einer von Ihnen müde wurde, ruhte er sich aus, ohne daß die Anderen 
erzürnten. Wenn es einem von Ihnen an etwas mangelte, so gaben die 
Anderen bereitwillig und gerne. Abends wenn das Tagwerk geschaffen war, 
aßen sie einträchtig ihr Brot und gingen zu Bett. Am siebten Tage jedoch 
ruhten sie. 
Doch eines Tages meinte einer von Ihnen, daß sie so recht nicht wüßten, 
wieviel denn geschafft sei und begann, die Goldklumpen zu zählen, die 
sie Tag für Tag aus dem Bergwerk schleppten. Und weil er so mit Zählen 
beschäftigt war, schufteten die Anderen für Ihn mit. Bald nahm ihn seine 
neue Arbeit so in Anspruch, daß er nur noch zählte und die Hacke für 
immer beiseite legte. 
Der Anfang der 01000100.txt
01000100
01101001
01100101
00100000
01110011
01101001
01100101
01100010
01100101
01101110
00100000
01011010
01110111
01100101
01110010
01100111
01100101
00100000
00101000
01100110
10000001
01110010
00100000
01010010
01100101
01100001
01101100
01101001
01110011
01110100
01100101
01101110
00101001
00100000
01000101
01110011

>cscript //nologo .\Decrypt1.vbs 01000100.txt
Die sieben Zwerge (für Realisten) Es waren einm
Member: bastla
bastla Nov 23, 2006 at 19:39:00 (UTC)
Goto Top
@Biber
Ich denke, bastla hat einmal zu viel um die Ecke gedacht....
Ich dementiere auf das Entschiedenste, gedacht (oder vielleicht gar recherchiert) zu haben.
Mein Script ist einfach nur eine Umsetzung des von Paul3 beschriebenen Algorithmus (wobei die Schritte "Spiegeln" und "bin2dec" in einem Aufwaschen erledigt werden).

Grüße
bastla
Member: Biber
Biber Nov 23, 2006 at 19:42:21 (UTC)
Goto Top
@bastla
Dann hab ich wohl den verkehrten Algorithmus...
Meine Beispieldaten hab ich oben gepostet...face-wink

wobei die Schritte "Spiegeln" und "bin2dec" in einem Aufwaschen erledigt werden
Ja, hab ich die denn mehrfach aufgewaschen??? *tztz
Grüße
Biber
Member: bastla
bastla Nov 23, 2006 at 19:50:12 (UTC)
Goto Top
@Biber
Vielleicht können wir uns einfach darauf einigen, dass Paul3 den falschen Algorithmus hat face-wink
Für den allerdings müsste gelten, wie Du gern sagst: Works as designed.

Grüße
bastla
Member: Biber
Biber Nov 23, 2006 at 19:59:12 (UTC)
Goto Top
*lacht*
...das lass ich gelten...
Aber gespiegelt hab ich schon...

DZahl = DZahl + CInt(Mid(BZahl, 9-i, 1)) * 2^(i-1)

..statt

DZahl = DZahl + CInt(Mid(BZahl, i, 1)) * 2^(i-1)

Grüße
Biber
Member: Paul3
Paul3 Nov 23, 2006 at 20:01:08 (UTC)
Goto Top
Hallo Bastla,

genau so habe ich mir das vorgestellt, gute Arbeit. Nur gibt es da immer noch ein kleines Problem. Wenn ich die BinDat.txt (2300 Zeilen) jetzt über die DeCrypt.vbs ziehe kommt auch ein Fehler - der gleiche wie oben nur mit Zeile 25.

In der DeCryptErgebnis.txt werden trotz des Fehlers aber alle Dezimalzahlen angezeigt, dafür fehlt aber der Text (Endergebnis).

Habe die Zahlen mit obigen Tool (...ascii_conv.html) überprüft, scheint soweit hinzuhauen. Aber mit dem Fehler ist trotzdem komisch...

Kann man eigentlich das ganze auch umgedreht machen, also Quellcode (Text) in Binäre Zahlen umwandeln? Also wie hier im beispiel, nur eben andersrum...
Member: bastla
bastla Nov 23, 2006 at 20:07:28 (UTC)
Goto Top
@Biber
Ich würde meinen, Du hättest "zurückgespiegelt":
Für i=1 wird demnach Bit (9-i)=8 mit 2^(i-1)=0 multipliziert - wie gesagt, ich hatte beide Vorgänge kombiniert und deshalb nicht 2^(8-i) geschrieben, wie ich das im "Normalfall" machen würde.

Grüße
bastla
Member: Biber
Biber Nov 23, 2006 at 20:09:17 (UTC)
Goto Top
@Paul3
Kann nicht sein...
Die von bastla gepostete erste Version kracht ab, weil bei seiner Konvertierung nur mit einer Wahrscheinlichkeit von 0,43%% überhaupt Leerzeichen enthalten sein können in dem "sText", der später bei den Leerzeichen gesplittet werden soll [ aErg = Split(sTemp, " ") ]

Siehe die Diskussion der letzten halben Stunde.

Die andere Frage - die Konvertierung in beliebige Richtung: http://www.vortex.prodigynet.co.uk/misc/ascii_conv.js anschauen.

Gruß
Biber
Member: bastla
bastla Nov 23, 2006 at 20:24:01 (UTC)
Goto Top
@Biber
0,43 % wäre ja gar nicht so ohne - wenn Du das mal in Promille umrechnest face-wink

@Paul3
Hast Du inzwischen Biber's Variante versucht - die entspricht der Vorgangsweise auf der von Dir genannten Webseite.

Grüße
bastla
Member: Paul3
Paul3 Nov 23, 2006 at 20:34:14 (UTC)
Goto Top
@Biber

Hallo,

also ich bin ja kein Profi (wie du vielleicht) aber die zweite hat ja funktioniert - bis auf den Fehler der gekommen ist. Wie ist das also möglich?

Und, die Zahlen in deiner 01000100.txt sind aber auch nicht korrekt - oder liege ich falsch!?

Auszug:

Die sieben Zwerge (für Realisten)

-->

68 105 101 32 115 105 101 98 101 110 32 90 119 101 114 103 101 32 40 102 129 114 32 82 101 97 108 105 115 116 101 110 41

--->

00110110 00111000 00100000 00110001 00110000 00110101 00100000 00110001 00110000 00110001 00100000 00110011 00110010 00100000 00110001 00110001 00110101 00100000 00110001 00110000 00110101 00100000 00110001 00110000 00110001 00100000 00111001 00111000 00100000 00110001 00110000 00110001 00100000 00110001 00110001 00110000 00100000 00110011 00110010 00100000 00111001 00110000 00100000 00110001 00110001 00111001 00100000 00110001 00110000 00110001 00100000 00110001 00110001 00110100 00100000 00110001 00110000 00110011 00100000 00110001 00110000 00110001 00100000 00110011 00110010 00100000 00110100 00110000 00100000 00110001 00110000 00110010 00100000 00110001 00110010 00111001 00100000 00110001 00110001 00110100 00100000 00110011 00110010 00100000 00111000 00110010 00100000 00110001 00110000 00110001 00100000 00111001 00110111 00100000 00110001 00110000 00111000 00100000 00110001 00110000 00110101 00100000 00110001 00110001 00110101 00100000 00110001 00110001 00110110 00100000 00110001 00110000 00110001 00100000 00110001 00110001 00110000 00100000 00110100 00110001

--->

dann noch spiegeln:

01101100 00011100 00000100 usw...

Wenn du dir die letzten drei Zahlen mal näher anschaust: ...100 ! ;)
Member: Biber
Biber Nov 23, 2006 at 20:35:04 (UTC)
Goto Top
...das ist ja ein heiterer Thread hier... face-wink

@bastla
Noch mal zum Hin- und Her- und Doppeltspiegeln:

Wenn ich in "unseren" Code ganz ganz doll abspecke...
'DeCrypt2.vbs  
BZahl = WScript.Arguments(0)
sTemp = ""  
DZahl = 0
For i = 1 to 8 ' step -1  
    DZahl = DZahl + CInt(Mid(BZahl, 9-i, 1)) * 2^(i-1)
    WScript.echo "Mid(" & Bzahl& "(" & 9-i & "),1) " &  CInt(Mid(BZahl, 9-i, 1)) * 2^(i-1) & " Gesamt: " & DZahl  
Next
sTemp = sTemp & Chr(DZahl)
WScript.Echo sTemp
...dann nimmt der zum Testen EINE Binär-Zahl.

Ich lasse mir auf der vortex.Seite (die sind neutral) das "A" umwandeln:
A---> 01000001
So, und nu' am Cmd-Prompt:
>cscript //nologo .\Decrypt2.vbs 01000001
Mid(01000001(8),1) 1 Gesamt: 1
Mid(01000001(7),1) 0 Gesamt: 1
Mid(01000001(6),1) 0 Gesamt: 1
Mid(01000001(5),1) 0 Gesamt: 1
Mid(01000001(4),1) 0 Gesamt: 1
Mid(01000001(3),1) 0 Gesamt: 1
Mid(01000001(2),1) 64 Gesamt: 65
Mid(01000001(1),1) 0 Gesamt: 65
A

Da is' nix mehrfach oder doppelt oder redundant gespiegelt!..oder doch?
Wie herum hättest Du denn das "A" umgerechnet?

Grüße
Biber,
...der dafür nicht richtig "Promille" schreiben kann...
Member: Paul3
Paul3 Nov 23, 2006 at 20:39:54 (UTC)
Goto Top
@Paul3
Hast Du inzwischen Biber's Variante versucht
- die entspricht der Vorgangsweise auf der
von Dir genannten Webseite.

@bastla

Nee, noch nicht probiert. Bin ich irgendwie nicht so richtig mitgekommen... Kann das mal einer für nen Newbie erklären...
Member: Biber
Biber Nov 23, 2006 at 20:50:28 (UTC)
Goto Top
sorry, ich seh es nicht... auch nicht auf der vortex-Seite.

Die ersten zwei Schritte dort habe ich genauso

ASCII-Text: "Die sieb"

Dez: 68, 105, 101, 32, 115, 105, 101, 98

Hex: 44, 69, 65, 20, 73, 69, 65, 62

"Binär"
01000100, 01101001, 01100101, 00100000,
01110011, 01101001, 01100101, 01100010


Und nix, was ich spiegeln oder auswaschen muss....
Die Binär-Werte, die bei Dir im Posting stehen, kann ich nicht nachvollziehen.
Aber ich hol mir erstmal ein Käffchen...

Biber

[Edit] Aaaaaaaaaaaaaaaaaaaahhhhhhh... Deine Binärzahlen in der Datei (im Eröffnungsposting) müssen gespiegelt werden... die auf der Vortex-Seite nicht...
Nu' hab ich's verstanden...
[/Edit]
Member: bastla
bastla Nov 23, 2006 at 20:54:14 (UTC)
Goto Top
@Biber
DZahl = DZahl + CInt(Mid(BZahl, 9-i, 1)) * 2^(i-1)
Da is' nix mehrfach oder doppelt oder redundant gespiegelt!..oder doch?
Damit rechnest Du das achte Bit mit dem Faktor 2^0, was völlig richtig ist (also gar nicht oder eben doch doppelt gespiegelt); ich hatte den Faktor 2^0 für das erste Bit verwendet, also tatsächlich gespiegelt - aber nach derart vielen Bit und den entsprechenden Promillen wohl auch schon egal face-wink
Wie herum hättest Du denn das "A" umgerechnet?
01000001 -> 10000010 = 128 + 2 = 130

bastla
Member: bastla
bastla Nov 23, 2006 at 20:56:44 (UTC)
Goto Top
@Paul3
Warum eigentlich willst Du spiegeln? Soll das zusätzlich eine Art "Verschlüsselung" werden?

bastla
Member: Paul3
Paul3 Nov 23, 2006 at 20:59:50 (UTC)
Goto Top
@ Biber

Ok, pass auf...

1. "Die sieb" eingeben!

2. Jetzt bei decimal ASCII die Zahlen kopieren - also "68 105 101 32 115 105 101 98".

3. Jetzt ganz oben bei "Enter a string..." hinein kopieren - Calculate.

4.Jetzt unten die Binär Zahlen entnehmen: "00110110 00111000 00100000 00110001 00110000 00110101 00100000 00110001 00110000 00110001 00100000 00110011 00110010 00100000 00110001 00110001 00110101 00100000 00110001 00110000 00110101 00100000 00110001 00110000 00110001 00100000 00111001 00111000"

5. Diese dann noch Spiegeln - also "00110110" wird zu "01101100" usw.

Dann hast du's... oder auch nicht?! ;)
Member: Paul3
Paul3 Nov 23, 2006 at 21:07:55 (UTC)
Goto Top
@Paul3
Warum eigentlich willst Du spiegeln?
Soll das zusätzlich eine Art
"Verschlüsselung" werden?

Um ehrlich zu sein versuche ich schon seit Tagen einen Code zu knacken der diese Schema beinhaltet. Und da ich einfach nicht mehr weiter komme habe ich mir halt gedacht ich suche mir Hilfe.

Hätte auch nie gedacht das das hier so schnell geht... Bin euch echt dankbar dafür! face-smile

Hattest du das eigentlich schon gelesen:

Kann man eigentlich das ganze auch umgedreht machen, also Quellcode (Text) in Binäre Zahlen umwandeln? Also wie hier im beispiel, nur eben andersrum... (Erster Post nur von unten nach oben!)
Member: bastla
bastla Nov 23, 2006 at 21:19:58 (UTC)
Goto Top
@Paul3
Solange die Konvertierung in die eine Richtung nicht klappt, mag ich es nicht in die andere probieren ...
Ich habe meine letzte Fassung von oben nochmals etwas abgeändert, so dass alle richtig erkannten Zeichen (bis zum Fehler) ebenfalls in die Ergebnisdatei geschrieben werden (sollten).

'DeCrypt0.3.vbs  
sOutFile = "C:\DeCryptErgebnis.txt"  
Set fso=WScript.CreateObject("Scripting.FileSystemObject")  
Set oInFile = fso.OpenTextFile(WScript.Arguments(0),1)
sTemp = ""  
Do While Not oInFile.AtEndOfStream
    BZahl = oInFile.ReadLine
    If Len(BZahl) <> 8 Then
        oInFile.Close
        MsgBox "Eingabedaten fehlerhaft!"  
        WScript.Quit(1)
    End If
    DZahl = 0
    For i = 1 to 8
        DZahl = DZahl + CInt(Mid(BZahl, i, 1)) * 2^(i-1)
    Next
    sTemp = sTemp & Chr(DZahl)
Loop
oInFile.Close
Set oOutFile = fso.OpenTextFile(sOutFile, 2, True)
oOutFile.Write sTemp & vbCrLF
aErg = Split(sTemp, " ")  
For i = 0 To UBound(aErg)
    oOutFile.Write Chr(aErg(i))
Next
oOutFile.Close

Wenn Du noch ein "On Error Resume Next" an den Anfang stellst, werden Fehler einfach ignoriert und der Ablauf fortgesetzt - das würde ich aber erst versuchen, wenn die Analyse des Fehlers mit den zusätzlichen Daten nix gebracht hat.

Grüße
bastla
Member: Biber
Biber Nov 23, 2006 at 21:52:06 (UTC)
Goto Top
...also dann würde ich zum Fehler-Lokalisieren statt:
oOutFile.Write Chr(aErg(i))
--...schreiben:
....
For i = 0 To UBound(aErg)
    j = int( aErg(i))
    if (j >32 and j <=255) then
       oOutFile.Write Chr(j)
    else
       oOutFile.Write "[+ Chr(" & j & ")] + "  
       wscript.echo aErg(i)     & " Nicht erwartet: chr(" & j &")"   
     end if
Next

Denn das lässt doch auf einen falschen suboptimalen Algorithmus schließen.
Member: bastla
bastla Nov 23, 2006 at 21:56:03 (UTC)
Goto Top
Hallo Paul3!

Hab's mir anders überlegt - hier der EnCoder:
'EnCrypt.vbs  
sOutFile = "D:\ADM\EnCryptErgebnis.txt"  
Set fso=WScript.CreateObject("Scripting.FileSystemObject")  
Set oInFile = fso.OpenTextFile(WScript.Arguments(0),1)
sTemp = oInFile.ReadAll
oInFile.Close
sAscii = CStr(Asc(Left(sTemp, 1)))
iAnz = Len(sTemp)
For i = 2 To iAnz
	sAscii = sAscii & " " & CStr(Asc(Mid(sTemp, i, 1)))  
Next
sErg = ""  
iAnz = Len(sAscii)
For i = 1 To iAnz
	DZahl = Asc(Mid(sAscii, i, 1))
	sBZahl = ""  
	For j = 7 To 0 Step -1
		iBit = Int(DZahl / 2^j)
		sBZahl = CStr(iBit) & sBZahl
		DZahl = DZahl - iBit * 2^j
	Next
	sErg = sErg & sBZahl
	If i <> iAnz Then
		sErg = sErg & vbCrLF
	End If
Next
Set oOutFile = fso.OpenTextFile(sOutFile, 2, True)
'oOutFile.Write sTemp & vbCrLF & sAscii & vbCrLF  
oOutFile.Write sErg
oOutFile.Close
MsgBox "Done."  

Grüße
bastla
Member: Paul3
Paul3 Nov 23, 2006 at 21:56:52 (UTC)
Goto Top
Mit dem neuen Script (0.3) kommt der gleiche Fehler wieder, nur das dieses mal Zeile 25 da steht.

Dafür stehen aber jetzt Dezimalzahlen und Text (Endergebnis) in der DeCryptErgebnis.txt!

Also scheint ja alles so zu funktionieren das man damit arbeiten kann... Naja, bis auf den Fehler. Aber verstehe sowieso nicht so richtig warum der jetzt noch kommt!

Was denkst du?
Member: bastla
bastla Nov 23, 2006 at 22:00:25 (UTC)
Goto Top
@Biber
Ist sicher für's Debugging die bessere Variante; ich hatte auch daran gedacht, nach jedem einzelnen Char die Datei zu schließen und danach mit "Append" wieder zu öffnen, da ich mir nicht sicher bin, ob VBS puffert.

bastla
Member: bastla
bastla Nov 23, 2006 at 22:06:07 (UTC)
Goto Top
@Paul3

Der Fehler muss eigentlich immer noch kommen, da ich den gleichen Algorithmus benutze, nur schon früher Daten in die Datei stelle - daher kannst Du den fehlerfreien Teil des Ergebnisses sehen.

Biber hat oben einen für die Fehlersuche besser geeigneten Programmteil reingestellt - versuch's mal damit bzw mit dem "On Error Resume Next".

Grüße
bastla
Member: Biber
Biber Nov 23, 2006 at 22:07:22 (UTC)
Goto Top
Aber verstehe sowieso nicht so richtig warum der jetzt noch kommt!

Na, was sind denn die letzten paar Dezimalzahlen in der "Endergebnis.txt"?

Und wie hört bei dir diese Input-Datei auf (die letzten 10 Zeilen)?

Da muss ja irgendetwas anders sein als bei der Zeile 45 oder 89....

Gruß
Biber
Member: Paul3
Paul3 Nov 23, 2006 at 22:08:16 (UTC)
Goto Top
Was hast du dir anders überlegt!?
Member: bastla
bastla Nov 23, 2006 at 22:11:17 (UTC)
Goto Top
Doch auch das Script zum EnCodieren (also für die umgekehrte Richtung) zu schreiben - steht oben

bastla
Member: Paul3
Paul3 Nov 23, 2006 at 22:28:22 (UTC)
Goto Top
@bastla

Also mit "On Error Resume Next" im DeCrypt0.3.vbs Script kommt schon mal kein Fehler mehr. Aber irgendetwas haut trotzdem nicht hin...

Habe gerade das EnCrypt.vbs Script probiert mit den entschlüsselten Daten von DeCrypt0.3.vbs.

Und habe jetzt festgestellt das ein Binär Code ganz am Schluss fehlt: 00000100

PS.: Mit Bibers Snipplet muss ich noch probieren...

@Biber

Die letzten 10 Dezimalstellen der Entschlüsselten Datei:

99 108 92 39 41 59 39 59 47 47

Die letzten 10 Zeilen der (original) Verschlüsselung sind:

10101100
10011100
00000100
00101100
11101100
00000100
00101100
11101100
00000100
Member: Paul3
Paul3 Nov 23, 2006 at 22:33:35 (UTC)
Goto Top
Es kommt der Hinweis (Fehler):

32 Nicht erwartet: chr(32)

18x zum wegklicken...

Sorry, mein Fehler - DeCryptErgebnis.txt wird natürlich erstellt!

Und überall wo ein leezeichen ist wird das eingefügt:

[+ Chr(32)] +

Weist wie ich meine!?
Member: bastla
bastla Nov 23, 2006 at 22:38:10 (UTC)
Goto Top
@Paul3
Also mit "On Error Resume Next" im DeCrypt0.3.vbs Script kommt schon mal kein
Fehler mehr.
Womit Du den Zweck dieser Anweisung erklärt hast ... face-wink

Ergibt denn das, was vom umgewandelten Text (am Ende der Ergebnisdatei) zu sehen ist, überhaupt einen Sinn? Falls ja, dann muss man wohl annehmen, dass die Ausgangsdaten einen Fehler enthalten, an dem das Script hängen bleibt, ansonsten gehen wir die Sache falsch an.

Grüße
bastla
Member: bastla
bastla Nov 23, 2006 at 22:41:42 (UTC)
Goto Top
@Paul3

Als letzte Zeile muss weiterhin "oOutFile.Close" verwendet werden.

bastla
Member: Biber
Biber Nov 23, 2006 at 22:48:08 (UTC)
Goto Top
...o mann/frau.... ist das peinlich... so lange auf die paar Zeilen geguckt..

Es muss natürlich heißen...
For i = 0 To UBound(aErg)-1
und nicht
For i = 0 To UBound(aErg)

Da haben auch meine Debugzeilen nichts geholfen....

Jetzt sollte es fliegen.

Schönen Abend
Biber
[Edit] Und den hab ich grad erst gelesen:
Es kommt der Hinweis (Fehler):
32 Nicht erwartet: chr(32)
18x zum wegklicken - und es wird keine DeCryptErgebnis.txt erstellt!

Mein Fehler. Chr(32) ist ja durchaus erlaubt. Das ist das Leerzeichen selbst.
Also die ganze kleine Debugschleife dann:
...
For i = 0 To UBound(aErg)-1
    j = int( aErg(i))
    if (j >=32 and j <=255) then
       oOutFile.Write Chr(j)
    else
       oOutFile.Write "[+ Chr(" & j & ")] + "  
       wscript.echo aErg(i)     & " Nicht erwartet: chr(" & j &")"          
    end if
Next
....
[/Edit]
[EditEdit] Hat bastla auch schon gepostet, hab ich grad gesehen....[/EditEdit]
Member: bastla
bastla Nov 23, 2006 at 22:50:11 (UTC)
Goto Top
... und ändere
if (j >32 and j <=255) then
auf
if (j >= 32 and j <=255) then

bastla
Member: Paul3
Paul3 Nov 23, 2006 at 22:50:37 (UTC)
Goto Top
@Paul3

Als letzte Zeile muss weiterhin
"oOutFile.Close" verwendet werden.

bastla

War mein Fehler... siehe oben^
Member: bastla
bastla Nov 23, 2006 at 23:02:16 (UTC)
Goto Top
@Biber
...o mann/frau.... ist das peinlich...
... Du hast es wenigstens nicht verbrochen face-sad

Jetzt sollte es fliegen.
... und zwar raus!

Ich mag nimmer ...

Gute Nacht allerseits
bastla
Member: Paul3
Paul3 Nov 23, 2006 at 23:05:02 (UTC)
Goto Top
@ Bastla

Also so wie ich das sehe ist alle korrekt bis auf die letzte Binär Zahl!

Habe jetzt mal in der Encodierten (Original) Datei paar Werte geändert und dann wieder Codiert. Erst hat es nicht funktioniert, dann habe ich in der letzten Zeile die fehlende Binärzahl 00000100 hinzugefügt und schon hats funktioniert! *freu*

Ist irgendwie ne komische Sache mit den Bits und Byts... ;)
Member: Biber
Biber Nov 23, 2006 at 23:13:13 (UTC)
Goto Top
Ist irgendwie ne komische Sache mit den Bits und Byts
komisch im Sinne von lustig oder komisch im Sinne von merkwürdig? *gg

Na, egal... wenn das Problem gelöst ist, mach bitte einen Haken dran.

Ich möchte das asap schließen, ehe die Frühaufsteher gleich kommen und noch nachfragen wollen...

Nur Psycho Dad macht gern solche Kaugummithreads...

Gute Nacht
Biber
Member: Paul3
Paul3 Nov 23, 2006 at 23:43:51 (UTC)
Goto Top
For i = 0 To UBound(aErg)-1
j = int( aErg(i))
if (j >=32 and j <=255) then
oOutFile.Write Chr(j)
else
oOutFile.Write "[+ Chr("
& j & ")] + "
wscript.echo aErg(i) & "
Nicht erwartet: chr(" & j
&")"
end if
Next

Spitze! Ohne ein Mucken (Fehler) entschlüsselt...

Nur mit dem 00000100 komme ich noch nicht so richtig klar. Habe ja erst gedacht das ist ein Leerzeichen. Wenn ich das hinten, also am Ende setze (bevor ich Codiere) werden mir dann aber zwei Binär Zeilen zu viel erstellt.

00000100
11001100
01001100


Edit: Habe gerade mal ausprobiert ob es auch so funktioniert... Jep, tut es!

back-to-topAlso recht herzlichen dank an euch beide! Ihr habt mir wirklich sehr geholfen...


Gruß Paul3

PS.: Wenn ich mal was für euch tun kann, immer raus damit.
PS2.: Wünsche auch ne GN8