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:

  1. xxd-Ausgabe hat einen Doppelpunkt nach der Adresse
  2. xxd ausgang hat die positionen in den daten umgekehrt (zum beispiel, 5a42 in hexdump ausgang wird 425a in xxd ausgang)
  3. 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?

Author: Gaff, 2011-07-26

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:

  1. Adressen aus hexdump Ausgabe mit sed
  2. Konvertieren in binär mit xxd
  3. Endian-Konvertierung (zum Beispiel wird 5a42 zu 425a) mit dd

Hier ist der vollständige Befehl:

sed 's/^[0-9]*//' hexdump | xxd -r -p | dd conv=swab of=binaryfile
 8
Author: Tim,
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 hexdumped mit einem *.
 1
Author: Socowi,
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