Saya sedang mencari cara melakukan hexdump terbalik dan menemukan xxd disebutkan. Namun, tampaknya tidak bekerja dengan mudah:
xxd -r hexdumpfile > binaryfile
Saya kemudian membandingkan perbedaan antara keluaran xxd infile
dan hexdump infile
, dan menemukan tiga perbedaan:
- Output xxd memiliki titik dua setelah alamat
- output xxd memiliki posisi dalam data terbalik (misalnya,
5a42
dalam output hexdump menjadi425a
dalam output xxd) - Ada beberapa karakter tambahan setelah setiap baris
Saya hanya memiliki versi hexdumped file tertentu di server. Bagaimana saya bisa mendapatkan kembali data biner dengan benar menggunakan xxd?
linux
conversion
hexdump
xxd
tanon
sumber
sumber
hexdump
memungkinkan Anda untuk memilih endianness yang digunakan dalam outputnya, yang dapat membuat ini lebih sederhana. (Kenapa sekarang? Menemukan pertanyaan Anda bermanfaat untuk sesuatu yang tidak berhubungan.)Jawaban:
Tidak ada satu perintah pun yang saya tahu akan melakukan konversi, tetapi dapat dengan mudah dipecah menjadi beberapa langkah:
hexdump
output menggunakansed
xxd
5a42
menjadi425a
) menggunakandd
Inilah perintah lengkapnya:
sumber
Jawaban ini adalah pos silang dari https://stackoverflow.com/a/52834021/6770384
Anda dapat melakukan konversi dalam satu
sed
perintah. Cukup menambahkan:
alamat setelahnya dan mengubah endianness (beralihab12
ke12ab
).Bug yang Dikenal (lihat bagian komentar)
hexdump
menggunakan ed*
.sumber
hexdump
dapat menyembunyikan bagian yang berulang menggunakan a*
. Perintah ini juga tidak dapat mengembalikan bagian-bagian ini dengan benar. Contoh:yes | head -n100 | hexdump | sed -E 's/ /: /;s/ (..)(..)/ \2\1/g' | xxd -r
hanya mencetak 8 dany
bukannya 100. Memperbaiki hal-hal ini akan membutuhkan lebih dari satu-liner ini. Mungkin saya menambahkan skrip lain di masa depan.*
tipnya, tidak tahu!