Top-Themen

Aktuelle Themen (A bis Z)

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 Binär Code in Text umwandeln

Mitglied: Paul3

Paul3 (Level 1) - Jetzt verbinden

23.11.2006, aktualisiert 24.11.2006, 15974 Aufrufe, 40 Kommentare

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
40 Antworten
Mitglied: bastla
23.11.2006 um 16:00 Uhr
Hallo Paul3 und willkommen im Forum!

Wenn Du nicht auf Batch bestehst, würde das folgende Deine Aufgabe lösen:
01.
'DeCrypt.vbs
02.
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
03.
Set oFile = fso.OpenTextFile(WScript.Arguments(0),1)
04.
sTemp = ""
05.
Do While Not oFile.AtEndOfStream
06.
	BZahl = oFile.ReadLine
07.
	If Len(BZahl) <> 8 Then
08.
		oFile.Close
09.
		MsgBox "Eingabedaten fehlerhaft!"
10.
		WScript.Quit(1)
11.
	End If
12.
	DZahl = 0
13.
	For i = 1 to 8
14.
		DZahl = DZahl + CInt(Mid(BZahl, i, 1)) * 2^(i-1)
15.
	Next
16.
	sTemp = sTemp & Chr(DZahl)
17.
Loop
18.
oFile.Close
19.
aErg = Split(sTemp, " ")
20.
sErg = ""
21.
For i = 0 To UBound(aErg)
22.
	sErg = sErg & Chr(aErg(i))
23.
Next
24.
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:
01.
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]
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 19:14 Uhr
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?
Bitte warten ..
Mitglied: bastla
23.11.2006 um 19:42 Uhr
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:
01.
'DeCrypt.vbs
02.
sOutFile = "C:\DeCryptErgebnis.txt"
03.
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
04.
Set oInFile = fso.OpenTextFile(WScript.Arguments(0),1)
05.
sTemp = ""
06.
Do While Not oInFile.AtEndOfStream
07.
    BZahl = oInFile.ReadLine
08.
    If Len(BZahl) <> 8 Then
09.
        oInFile.Close
10.
        MsgBox "Eingabedaten fehlerhaft!"
11.
        WScript.Quit(1)
12.
    End If
13.
    DZahl = 0
14.
    For i = 1 to 8
15.
        DZahl = DZahl + CInt(Mid(BZahl, i, 1)) * 2^(i-1)
16.
    Next
17.
    sTemp = sTemp & Chr(DZahl)
18.
Loop
19.
oInFile.Close
20.
Set oOutFile = fso.OpenTextFile(sOutFile, 2, True)
21.
oOutFile.Write sTemp & vbCrLF
22.
aErg = Split(sTemp, " ")
23.
sErg = ""
24.
For i = 0 To UBound(aErg)
25.
    sErg = sErg & Chr(aErg(i))
26.
Next
27.
oOutFile.Write sErg
28.
oOutFile.Close
Bitte um Rückmeldung!
bastla
Bitte warten ..
Mitglied: Biber
23.11.2006 um 20:27 Uhr
Ich denke, bastla hat einmal zu viel um die Ecke gedacht....

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

06.
Do While Not oFile.AtEndOfStream
07.
    BZahl = oFile.ReadLine
08.
    If Len(BZahl) <> 8 Then
09.
        oFile.Close
10.
        MsgBox "Eingabedaten fehlerhaft!"
11.
        WScript.Quit(1)
12.
    End If
13.
    DZahl = 0
14.
    For i = 1 to 8
15.
        DZahl = DZahl + CInt(Mid(BZahl, 9-i, 1)) * 2^(i-1)
16.
    Next
17.
    sTemp = sTemp & Chr(DZahl)
18.
Loop
19.
oFile.Close
20.
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.
01.
>set /a 0b00010110
02.
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17),
03.
hexadezimale (0x11) oder oktale (021) Zahlen.
04.
>set /?
05.
.....
06.
d.h. außerhalb eines Befehlsskripts ausgeführt wird, dann zeigt er
07.
den endgültigen Wert des Ausdrucks an. Der Zuordnungsoperator erfordert
08.
eine Umgebungsvariable auf der linken Seite des Operators. Nummerische Werte
09.
stellen immer Dezimalzahlen dar, es sei denn, sie haben ein Präfix 0x für
10.
hexadezimale Zahlen, <b>0b für binäre Zahlen </b>oder 0 für oktale Zahlen. Damit
11.
stellt 0x12 dieselbe Zahl wie 18 oder 022 dar. Beachten Sie, dass die oktale
12.
Schreibweise verwirrend sein kann: So sind 08 und 09 keine gültigen Zahlen,
13.
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:
01.
Die sieben Zwerge (für Realisten) 
02.
Es waren einmal sieben Zwerge, die lebten hinter den sieben Bergen. Tag 
03.
für Tag suchten sie im Bergwerk nach Gold. Jeder der Zwerge war 
04.
rechtschaffen, fleißig und achtete den Anderen. 
05.
Wenn einer von Ihnen müde wurde, ruhte er sich aus, ohne daß die Anderen 
06.
erzürnten. Wenn es einem von Ihnen an etwas mangelte, so gaben die 
07.
Anderen bereitwillig und gerne. Abends wenn das Tagwerk geschaffen war, 
08.
aßen sie einträchtig ihr Brot und gingen zu Bett. Am siebten Tage jedoch 
09.
ruhten sie. 
10.
Doch eines Tages meinte einer von Ihnen, daß sie so recht nicht wüßten, 
11.
wieviel denn geschafft sei und begann, die Goldklumpen zu zählen, die 
12.
sie Tag für Tag aus dem Bergwerk schleppten. Und weil er so mit Zählen 
13.
beschäftigt war, schufteten die Anderen für Ihn mit. Bald nahm ihn seine 
14.
neue Arbeit so in Anspruch, daß er nur noch zählte und die Hacke für 
15.
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

01.
>cscript //nologo .\Decrypt1.vbs 01000100.txt
02.
Die sieben Zwerge (für Realisten) Es waren einm
Bitte warten ..
Mitglied: bastla
23.11.2006 um 20:39 Uhr
@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
Bitte warten ..
Mitglied: Biber
23.11.2006 um 20:42 Uhr
@bastla
Dann hab ich wohl den verkehrten Algorithmus...
Meine Beispieldaten hab ich oben gepostet...

wobei die Schritte "Spiegeln" und "bin2dec" in einem Aufwaschen erledigt werden
Ja, hab ich die denn mehrfach aufgewaschen??? *tztz
Grüße
Biber
Bitte warten ..
Mitglied: bastla
23.11.2006 um 20:50 Uhr
@Biber
Vielleicht können wir uns einfach darauf einigen, dass Paul3 den falschen Algorithmus hat
Für den allerdings müsste gelten, wie Du gern sagst: Works as designed.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
23.11.2006 um 20:59 Uhr
*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
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 21:01 Uhr
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...
Bitte warten ..
Mitglied: bastla
23.11.2006 um 21:07 Uhr
@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
Bitte warten ..
Mitglied: Biber
23.11.2006 um 21:09 Uhr
@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
Bitte warten ..
Mitglied: bastla
23.11.2006 um 21:24 Uhr
@Biber
0,43 % wäre ja gar nicht so ohne - wenn Du das mal in Promille umrechnest

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

Grüße
bastla
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 21:34 Uhr
@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 ! ;)
Bitte warten ..
Mitglied: Biber
23.11.2006 um 21:35 Uhr
...das ist ja ein heiterer Thread hier...

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

Wenn ich in "unseren" Code ganz ganz doll abspecke...
01.
'DeCrypt2.vbs
02.
BZahl = WScript.Arguments(0)
03.
sTemp = ""
04.
DZahl = 0
05.
For i = 1 to 8 ' step -1
06.
    DZahl = DZahl + CInt(Mid(BZahl, 9-i, 1)) * 2^(i-1)
07.
    WScript.echo "Mid(" & Bzahl& "(" & 9-i & "),1) " &  CInt(Mid(BZahl, 9-i, 1)) * 2^(i-1) & " Gesamt: " & DZahl
08.
Next
09.
sTemp = sTemp & Chr(DZahl)
10.
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:
01.
>cscript //nologo .\Decrypt2.vbs 01000001
02.
Mid(01000001(8),1) 1 Gesamt: 1
03.
Mid(01000001(7),1) 0 Gesamt: 1
04.
Mid(01000001(6),1) 0 Gesamt: 1
05.
Mid(01000001(5),1) 0 Gesamt: 1
06.
Mid(01000001(4),1) 0 Gesamt: 1
07.
Mid(01000001(3),1) 0 Gesamt: 1
08.
Mid(01000001(2),1) 64 Gesamt: 65
09.
Mid(01000001(1),1) 0 Gesamt: 65
10.
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...
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 21:39 Uhr
@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...
Bitte warten ..
Mitglied: Biber
23.11.2006 um 21:50 Uhr
....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]
Bitte warten ..
Mitglied: bastla
23.11.2006 um 21:54 Uhr
@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
Wie herum hättest Du denn das "A" umgerechnet?
01000001 -> 10000010 = 128 + 2 = 130

bastla
Bitte warten ..
Mitglied: bastla
23.11.2006 um 21:56 Uhr
@Paul3
Warum eigentlich willst Du spiegeln? Soll das zusätzlich eine Art "Verschlüsselung" werden?

bastla
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 21:59 Uhr
@ 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?! ;)
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 22:07 Uhr
@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!

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!)
Bitte warten ..
Mitglied: bastla
23.11.2006 um 22:19 Uhr
@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).

01.
'DeCrypt0.3.vbs
02.
sOutFile = "C:\DeCryptErgebnis.txt"
03.
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
04.
Set oInFile = fso.OpenTextFile(WScript.Arguments(0),1)
05.
sTemp = ""
06.
Do While Not oInFile.AtEndOfStream
07.
    BZahl = oInFile.ReadLine
08.
    If Len(BZahl) <> 8 Then
09.
        oInFile.Close
10.
        MsgBox "Eingabedaten fehlerhaft!"
11.
        WScript.Quit(1)
12.
    End If
13.
    DZahl = 0
14.
    For i = 1 to 8
15.
        DZahl = DZahl + CInt(Mid(BZahl, i, 1)) * 2^(i-1)
16.
    Next
17.
    sTemp = sTemp & Chr(DZahl)
18.
Loop
19.
oInFile.Close
20.
Set oOutFile = fso.OpenTextFile(sOutFile, 2, True)
21.
oOutFile.Write sTemp & vbCrLF
22.
aErg = Split(sTemp, " ")
23.
For i = 0 To UBound(aErg)
24.
    oOutFile.Write Chr(aErg(i))
25.
Next
26.
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
Bitte warten ..
Mitglied: Biber
23.11.2006 um 22:52 Uhr
...also dann würde ich zum Fehler-Lokalisieren statt:
oOutFile.Write Chr(aErg(i))
--...schreiben:
01.
....
02.
For i = 0 To UBound(aErg)
03.
    j = int( aErg(i))
04.
    if (j >32 and j <=255) then
05.
       oOutFile.Write Chr(j)
06.
    else
07.
       oOutFile.Write "[+ Chr(" & j & ")] + "
08.
       wscript.echo aErg(i)     & " Nicht erwartet: chr(" & j &")" 
09.
     end if
10.
Next
Denn das lässt doch auf einen falschen suboptimalen Algorithmus schließen.
Bitte warten ..
Mitglied: bastla
23.11.2006 um 22:56 Uhr
Hallo Paul3!

Hab's mir anders überlegt - hier der EnCoder:
01.
'EnCrypt.vbs
02.
sOutFile = "D:\ADM\EnCryptErgebnis.txt"
03.
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
04.
Set oInFile = fso.OpenTextFile(WScript.Arguments(0),1)
05.
sTemp = oInFile.ReadAll
06.
oInFile.Close
07.
sAscii = CStr(Asc(Left(sTemp, 1)))
08.
iAnz = Len(sTemp)
09.
For i = 2 To iAnz
10.
	sAscii = sAscii & " " & CStr(Asc(Mid(sTemp, i, 1)))
11.
Next
12.
sErg = ""
13.
iAnz = Len(sAscii)
14.
For i = 1 To iAnz
15.
	DZahl = Asc(Mid(sAscii, i, 1))
16.
	sBZahl = ""
17.
	For j = 7 To 0 Step -1
18.
		iBit = Int(DZahl / 2^j)
19.
		sBZahl = CStr(iBit) & sBZahl
20.
		DZahl = DZahl - iBit * 2^j
21.
	Next
22.
	sErg = sErg & sBZahl
23.
	If i <> iAnz Then
24.
		sErg = sErg & vbCrLF
25.
	End If
26.
Next
27.
Set oOutFile = fso.OpenTextFile(sOutFile, 2, True)
28.
'oOutFile.Write sTemp & vbCrLF & sAscii & vbCrLF
29.
oOutFile.Write sErg
30.
oOutFile.Close
31.
MsgBox "Done."
Grüße
bastla
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 22:56 Uhr
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?
Bitte warten ..
Mitglied: bastla
23.11.2006 um 23:00 Uhr
@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
Bitte warten ..
Mitglied: bastla
23.11.2006 um 23:06 Uhr
@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
Bitte warten ..
Mitglied: Biber
23.11.2006 um 23:07 Uhr
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
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 23:08 Uhr
Was hast du dir anders überlegt!?
Bitte warten ..
Mitglied: bastla
23.11.2006 um 23:11 Uhr
Doch auch das Script zum EnCodieren (also für die umgekehrte Richtung) zu schreiben - steht da oben

bastla
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 23:28 Uhr
@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
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 23:33 Uhr
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!?
Bitte warten ..
Mitglied: bastla
23.11.2006 um 23:38 Uhr
@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 ...

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
Bitte warten ..
Mitglied: bastla
23.11.2006 um 23:41 Uhr
@Paul3

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

bastla
Bitte warten ..
Mitglied: Biber
23.11.2006 um 23:48 Uhr
...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:
01.
...
02.
For i = 0 To UBound(aErg)-1
03.
    j = int( aErg(i))
04.
    if (j >=32 and j <=255) then
05.
       oOutFile.Write Chr(j)
06.
    else
07.
       oOutFile.Write "[+ Chr(" & j & ")] + "
08.
       wscript.echo aErg(i)     & " Nicht erwartet: chr(" & j &")"        
09.
    end if
10.
Next
11.
....
[/Edit]
[EditEdit] Hat bastla auch schon gepostet, hab ich grad gesehen....[/EditEdit]
Bitte warten ..
Mitglied: bastla
23.11.2006 um 23:50 Uhr
... und ändere
01.
if (j >32 and j <=255) then
auf
01.
if (j >= 32 and j <=255) then
bastla
Bitte warten ..
Mitglied: Paul3
23.11.2006 um 23:50 Uhr
@Paul3

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

bastla

War mein Fehler... siehe oben^
Bitte warten ..
Mitglied: bastla
24.11.2006 um 00:02 Uhr
@Biber
...o mann/frau.... ist das peinlich...
... Du hast es wenigstens nicht verbrochen

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

Ich mag nimmer ...

Gute Nacht allerseits
bastla
Bitte warten ..
Mitglied: Paul3
24.11.2006 um 00:05 Uhr
@ 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... ;)
Bitte warten ..
Mitglied: Biber
24.11.2006 um 00:13 Uhr
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
Bitte warten ..
Mitglied: Paul3
24.11.2006 um 00:43 Uhr
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!

Also 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
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Text in Zahlen umwandeln
Tipp von logischeMicrosoft Office

Beim Import von Daten aus anderen Anwendungen kommt es häufig vor, dass Zahlen als Textwerte in der Excel-Tabelle erscheinen. ...

Datenbanken
MSSQL Text in Zahl umwandeln
gelöst Frage von EricAG3Datenbanken1 Kommentar

Hallo zusammen, folgende Tabelle sei gegeben. Menge 5,5 2,5 - 2,5 Das Feld Menge ist vom varchar. Ich möchte ...

Datenbanken

Excel-Spalte mit rtf Steuerzeichen umwandeln in "normalen" Text

Frage von FrankAsDatenbanken6 Kommentare

Ich habe eine Export-Funktion in einem ERP benutzt, um Daten nach Excel zu exportieren. Dabei wurde eine Spalte mit ...

Backup

Binar Logs nicht mehr aktuell auf dem Slave-Server (MySQL-Replikation)

Frage von WintektivBackup12 Kommentare

Hallo zusammen, ich hab das Problem auf meinen Slave-Server, dass der aktuell bei der mysql.00005.bin Datei ist und der ...

Neue Wissensbeiträge
Humor (lol)
Und wie seid Ihr gegen Cyberattacken gewappnet?
Information von DerWoWusste vor 1 TagHumor (lol)5 Kommentare

aber wo ist der Hammer? :-)

Sicherheit
Ein weiterer Microsoft-Stirnklatscher
Information von DerWoWusste vor 2 TagenSicherheit7 Kommentare

Habe gerade einen Artikel zu einem Sicherheitsproblem gefunden, welches mir zu seiner Zeit (gepatcht 2015) wohl durchgerutscht ist. Es ...

Windows 10
Upgradepfade Windows 10 LTSC
Erfahrungsbericht von Datenreise vor 2 TagenWindows 10

Nur eine kurze Info, für diejenigen, die es interessiert, da es hierzu im Netz aus nachvollziehbaren Gründen nicht allzu ...

Administrator.de Feedback
Wartungsarbeiten heute Nacht (Update)
Information von Frank vor 2 TagenAdministrator.de Feedback10 Kommentare

Hallo User, durch Umbauarbeiten in unserem Rechenzentrum (am Backbone) kann es heute Nacht (14-15.01.2019) zu kurzen Ausfällen unserer Seite ...

Heiß diskutierte Inhalte
Microsoft
SFirm 4.0 auf Terminalserver startet für jeden angemeldeten Benutzer diverse Dienste
Frage von Frank84Microsoft25 Kommentare

Hallo zusammen, wir verwenden Sfirm 4.0 auf einem Terminalserver (der SQL Server ist auf einem separaten Server), das Problem ...

Windows 10
Windows 10 - kein Boot mehr nach Domänenaustritt
gelöst Frage von Ghost108Windows 1025 Kommentare

Hallo zusammen, habe hier eine Windows 10 Maschine, die ich gerne aus der Domäne austreten lassen möchte. Nach Austritt ...

Windows 10
VM wächst schnell von 14 auf 35 GB an - warum?
Frage von degudejungWindows 1018 Kommentare

Hallo, ich bin ein Freund schlanker VMs und setze daher gerne mit dem Erscheinen einer neuen Win10 Version - ...

Internet
Google-Suchergebnisse, Schnelleinblendung, woher kommt der Inhalt?
gelöst Frage von departure69Internet17 Kommentare

Hallo. Ich bin der Systembetreuer einer kleinen Gemeinde in Süddeutschland. Wir betreiben auch eine Leihbücherei. Eine Kundin hat letzten ...