Ich suchte nach einem Reverse Hexdump und fand xxd erwähnt. Es scheint jedoch nicht einfach zu funktionieren:
xxd -r hexdumpfile > binaryfile
Ich habe dann den Unterschied zwischen den Ausgaben von xxd infile
und verglichen hexdump infile
und drei Unterschiede festgestellt:
- xxd Ausgabe hat einen Doppelpunkt nach der Adresse
- Bei der xxd-Ausgabe sind die Positionen in den Daten umgekehrt (z. B. wird
5a42
bei der Hexdump-Ausgabe die425a
xxd-Ausgabe). - Nach jeder Zeile stehen einige zusätzliche Zeichen
Ich habe nur die hexadezimale Version bestimmter Dateien auf einem Server. Wie kann ich die Binärdaten mit xxd korrekt zurückerhalten?
linux
conversion
hexdump
xxd
Tanon
quelle
quelle
hexdump
können Sie die Endianness auswählen, die in der Ausgabe verwendet wird, was dies vereinfachen könnte. (Warum jetzt? Fand Ihre Frage hilfreich für etwas, das nichts damit zuAntworten:
Es gibt keinen Befehl, von dem ich weiß, dass er die Konvertierung durchführt, aber er kann leicht in ein paar Schritte unterteilt werden:
hexdump
Ausgabe mitsed
xxd
5a42
wird425a
) unter Verwendung vondd
Hier ist der vollständige Befehl:
quelle
Diese Antwort ist ein Cross-Post von https://stackoverflow.com/a/52834021/6770384
Sie können die Konvertierung in einem
sed
Befehl durchführen. Es reicht aus,:
die Adresse nach der Adresse hinzuzufügen und die Endianness zu ändern (Umschaltenab12
auf12ab
).Bekannte Fehler (siehe Kommentarbereich)
hexdump
mit a bearbeitet wurden*
.quelle
hexdump
kann wiederholte Teile mit a verbergen*
. Dieser Befehl kann diese Teile auch nicht korrekt wiederherstellen. Beispiel:yes | head -n100 | hexdump | sed -E 's/ /: /;s/ (..)(..)/ \2\1/g' | xxd -r
Gibt nur 8y
statt 100 aus. Um diese Probleme zu beheben, ist mehr als dieser Einzeiler erforderlich. Vielleicht füge ich in Zukunft ein weiteres Skript hinzu.*
tipp, wusste es nicht!