hexdump vs xxd-format Differenz
Ich habe nach einem umgekehrten Hexdump gesucht und xxdump gefunden. Es scheint jedoch nicht einfach zu funktionieren mit:
xxd -r hexdumpfile > binaryfile
Ich habe dann die Differenz zwischen den Ausgaben von xxd infile
und hexdump infile
verglichen und drei Unterschiede gefunden:
- xxd-Ausgabe hat einen Doppelpunkt nach der Adresse
- xxd ausgang hat die positionen in den daten umgekehrt (zum beispiel,
5a42
in hexdump ausgang wird425a
in xxd ausgang) - Es gibt einige zusätzliche Zeichen nach jede Zeile
Ich habe nur die Hexdumped-Version bestimmter Dateien auf einem Server. Wie kann ich die Binärdaten mit xxd korrekt zurückerhalten?
2 answers
Es gibt keinen Befehl, von dem ich weiß, dass er die Konvertierung durchführen wird, aber er kann leicht in ein paar Schritte unterteilt werden:
- Adressen aus
hexdump
Ausgabe mitsed
- Konvertieren in binär mit
xxd
- Endian-Konvertierung (zum Beispiel wird
5a42
zu425a
) mitdd
Hier ist der vollständige Befehl:
sed 's/^[0-9]*//' hexdump | xxd -r -p | dd conv=swab of=binaryfile
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-09-18 22:09:26
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 genügt, das :
nach der Adresse hinzuzufügen und die Endianness zu ändern (ab12
auf 12ab
umschalten).
sed -E 's/ /: /;s/ (..)(..)/ \2\1/g;$d' dump | xxd -r
Bekannte Fehler (siehe Kommentarbereich)
- Ein nachfolgendes Nullbyte wird hinzugefügt, wenn die Originaldatei eine ungerade Länge hatte (z. B. 1, 3, 5, 7, ..., byte lang).
- Wiederholung von Abschnitten des Originals die Datei wird nicht korrekt wiederhergestellt, wenn sie
hexdump
ed mit einem*
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-04-06 09:31:38