# which hexdump
/usr/bin/hexdump
# rpm -qf /usr/bin/hexdump
util-linux-2.13-0.59.el5
# which xxd
/usr/bin/xxd
# rpm -qf /usr/bin/xxd
vim-common-7.0.109-7.el5
Ok, so lets compare the output format of the hex dump with these utilities. But first we need some test data, which I'm going to generate with 'openssl'. Conveniently, openssl can output the data in either hex (the default) or binary.
# echo -n 'value' | openssl dgst -sha1 -hmac "key"
57443a4c052350a44638835d64fd66822f813319
# echo -n 'value' | openssl dgst -sha1 -hmac "key" -binary > hash-file.bin
# ls -l hash-file.bin
-rw-r--r-- 1 root root 20 Jul 4 10:05 hash-file.bin
So we have our test data in a file called 'hash-file.bin'. It's 20 bytes long as it contains a 160 bit sha1 hash. Ok, let's try dumping that file and see what we get:
# hexdump hash-file.bin 0000000 4457 4c3a 2305 a450 3846 5d83 fd64 8266 0000010 812f 1933 0000014 # xxd hash-file.bin 0000000: 5744 3a4c 0523 50a4 4638 835d 64fd 6682 WD:L.#P.F8.]d.f. 0000010: 2f81 3319 /.3.
Um, interesting!
Note the default output is grouping the bytes into 16-bit values and there is a difference in how to interpret the endianness. Let's try customizing the output with some options:
# hexdump -C hash-file.bin 00000000 57 44 3a 4c 05 23 50 a4 46 38 83 5d 64 fd 66 82 |WD:L.#P.F8.]d.f.| 00000010 2f 81 33 19 |/.3.| 00000014 # xxd -g 1 hash-file.bin 0000000: 57 44 3a 4c 05 23 50 a4 46 38 83 5d 64 fd 66 82 WD:L.#P.F8.]d.f. 0000010: 2f 81 33 19 /.3. # xxd -p hash-file.bin 57443a4c052350a44638835d64fd66822f813319
So this is 'better' for seeing the byte sequence.
No comments:
Post a Comment