Bash: Hexadezimal Code suchen + ersetzen

GWFgamer

Ensign
Registriert
Juli 2006
Beiträge
167
Hallo liebe Community

ich hoffe ihr könnt mir Tipps zum oben genannten Thema geben!:)
Ich nutze Solaris und würde gerne eine Datei via Bash bearbeiten. Die Datei lässt sich nicht einfach via
Code:
cat
oder so in der Konsole anzeigen, daher wollte ich diese 'auf hexadezimaler Ebene' bearbeiten.

So jetzt müsste ich in der Datei via Konsole mehrere Hex-Sequenzen editieren. Ganz rechts in der Spalte, wo ab und zu auch mal Klartext steht (wenn ich die Datei mit einem HexEditor öffne), kann ich die zu ersetzenden Wörter oder Strings sehen und somit auch sehen, welche Abfolge von Hexadezimalzahlen betroffen sind. Ich habe es mit
Code:
sed 's/alt/neu/g' Eingabedatei >Ausgabedatei
hinbekommen, einzelne Hex.-Zahlen zu ändern. (Gibt vllt noch eine einfachere Möglichkeit?)

Und vor allem, gibt es die Möglichkeit, via Konsole in dieser Datei bestimmte bestimmt Hex-Sequenzen zu finden und diese zu ersetzten? Das ganze soll nicht manuell sondern per Kommando ablaufen, ich will nich irgendwie über den HexEditor das händisch machen ;) Es gibt 5 oder 6 verschiedene Sequenzen, die sich immer wieder wiederholen und ich würde die gerne mit meinen Änderungen die gesamte Datei überschreiben.

Falls ich was unklar formuliert hab gerne nachfragen, jetzt schonmal vielen Dank!!

:)
 
Zuletzt bearbeitet:
grundlegend zum selbst überlegen...das ganze kommt in eine Datei namens <filename>.sh

Code:
#!/bin/bash
sed 's/alt/neu/g' $1 $2

die datei kommt dann z.B nach /usr/bin und dann kannst du im terminal einfach mit "clean file1 file2" das aufrufen falls die datei "clean.sh" heißt

und beim regEx bei sed kannst du mit \x00 hex codes angeben.
 
Danke. Das hatte ich auch geplant, das in ein Script reinzuschreiben :)

Es geht mir vielmehr um die konkrete Umsetzung, da ich bisher immer nen bissle Probleme mit der schreibtweise hab ... so hats nicht funktioniert:

Code:
sed  's/\x5F\x56/\x55\x5D/g' Infile > Outfile

Leider funktioniert das nicht so richtig .. habs mit verschiedenen Schreibweisen versucht ...
 
Okaay, da es leider bisher nicht via Hex-Ersetzung funktioniert hat, versuche ich es jetzt auf einem anderen Weg.

Ich habe im Hex Editor gesehen, dass die speziellen Wörter, die ich ersetzen möchte, lesbar sind (rechts an der Seite).

Daher habe ich mit

Code:
sed 's/ALTES_WORT/NEUES_WORT/g' INPUTFILE > OUTPUTFILE

ersetzt. Hat soweit auch erstmal funktioniert, NEUES_WORT ist nun in der Datei zu finden. Allerdings ist die Datei an sich nun kleiner geworden (was nicht sein dürfte!). Ausserdem zeigt der HEX Editor die Datei nur mit Fehler an ... und das eigentliche Programm, welches fuer die Datei zuständig ist, lässt sich damit auch nicht füttern =(

Was ich vermute: Der sed Befehl hat beim ersetzen alle "00" Hex Charackter (sind im HExeditor nciht mehr zu sehen) entfernt! Das darf natürlich nciht so sein, wie kann man das umgehen? Dadurch lässt sich die Datei nicht mehr decodieren!

Vielen lieben Dank!
 
Zuletzt bearbeitet:
Zurück
Oben