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

Binär Code in Text umwandeln

Frage Entwicklung Batch & Shell

Mitglied: Paul3

Paul3 (Level 1) - Jetzt verbinden

23.11.2006, aktualisiert 24.11.2006, 14203 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 ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Microsoft Office
gelöst Wie kann man die Standard-Schriftart bei einfügen von Text in Word 2013 festlegen? (3)

Frage von Rene1976 zum Thema Microsoft Office ...

Erkennung und -Abwehr
Port 7547 SOAP Remote Code Execution Attack Against DSL Modems Internet Storm Center (5)

Link von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Batch & Shell
gelöst Findstr - code für schwieriger Abfrage gesucht (9)

Frage von reissaus73 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...