Saya memiliki file biner yang dapat saya kirim netcat
:
$ nc -l localhost 8181 < my.dat
File ini berisi ini:
$ xxd my.dat
0000000: 0006 3030 3030 4e43 ..0000NC
Yang benar-benar ingin saya lakukan adalah mengirim string hex secara langsung. Saya sudah mencoba ini:
$ echo '0006303030304e43' | nc -l localhost 8181
Namun, perintah di atas hanya mengirim string ascii langsung ke nc
.
md5sum ../it/manifest.json | awk '{print $1}' | xxd -r -p | hd
Di sini solusinya tanpa
xxd
atauperl
:Jika
echo
built - in dari shell Anda mendukungnya (bash
danzsh
lakukan, tetapi tidakdash
), Anda hanya perlu menggunakan backslash kanan lolos:Jika Anda memiliki
/bin/echo
dari GNU coreutils (hampir standar pada sistem Linux) atau dari busybox Anda dapat menggunakannya juga.Dengan
sed
Anda dapat menghasilkan pola lolos:Gabungan:
sumber
echo
denganprintf
menghapus dugaan berfungsi jika gema mendukung fitur yang diperluas atau tidak.printf "$(echo '0006303030304e43' | sed -e 's/../\\x&/g')" | nc -l localhost 8181
.Jika sudah
xxd
, itu mudah: dapat dikonversi ke dan dari heksadesimal.Saya tidak berpikir ada cara yang masuk akal (dan cukup cepat) untuk mengkonversi heksadesimal menjadi biner hanya menggunakan alat POSIX. Ini bisa dilakukan dengan cukup mudah di Perl. Skrip berikut mengonversi heksadesimal menjadi biner, mengabaikan karakter input apa pun yang bukan digit heksadesimal. Ia mengeluh jika saluran input berisi angka ganjil heksadesimal.
Jika Anda benar-benar harus tetap berpegang pada POSIX (mis. Pada perangkat yang disematkan), saya sarankan menggunakan Base64 daripada hexadecimal. Anda dapat menggunakan uudecode untuk mendekode Base64. Input harus memiliki format tajuk dan garis akhir yang dihasilkan oleh uuencode , tidak boleh berupa Base64 mentah.
sumber
Mirip dengan ini: https://stackoverflow.com/questions/1604765/linux-shell-scripting-hex-string-to-bytes/47253233#47253233
Saya menulis sebuah alat yang melakukan berbagai transformasi dari stdin dan memuntahkan hasilnya ke stdout.
cryptocli dd
hanya akan melakukan transformasi dan tidak ada yang lain.Akan bekerja untukmu.
Alat ini open source, Anda dapat menemukannya di sini: https://github.com/tehmoon/cryptocli
Sunting:
Anda juga dapat menyandikan langsung ke hex menggunakan alat saya:
sumber
616263
hubungannya dengan pertanyaan ini? Silakan gunakan data dari pertanyaan. (2) Bisakah Anda menjelaskan cara kerjanya? Harap jangan merespons dalam komentar, edit jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap.