This is short guide on how to convert strings and decimal values to hexadecimal and vice-versa using simple Linux utilities such as xxd and printf.
- To convert a string to hexadecimal, you can use xxd in Linux.
For example: To convert a string “kali” to hexadecimal, you can use the below format.
extr3me@op3n:~$ echo -n kali | xxd 00000000: 6b61 6c69 kali
To group and display the output a single character at a time, use -c flag with argument 1.
extr3me@op3n:~$ echo -n kali | xxd -c1 00000000: 6b k 00000001: 61 a 00000002: 6c l 00000003: 69 i
This means the following:
00000000: 6b k <- k is a single character and its hexadecimal value is 6b 00000001: 61 a <- a is a single character and its hexadecimal value is 61 00000002: 6c l <- l is a single character and its hexadecimal value is 6c 00000003: 69 i <- i is a single character and its hexadecimal value is 69
2. Convert Hexadecimal value back to string:
extr3me@op3n:~$ echo -n "6b61 6c69" | xxd -r -p
kali
Dont worry about the spaces, it should still work.
extr3me@op3n:~$ echo -n "6b616c69" | xxd -r -p
kaliextr3me@op3n:~$
3. Convert decimal (number) to hexadecimal
-Lets say you want to convert number 12 to decimal value. To do so, you could use printf as shown below.
extr3me@op3n:~$ printf "%x\n" 12
c
From above output, the hexadecimal value for number 12 (aka decimal 12) is character c.
To find hexadecimal values for values from 1 to 255, you could run through it in a loop
for num in {1..255}; do printf "%x\n" $num ; done | less
Hope these help.
PS: Knowing hexadecimal does come in handy while learning/debugging different protocols.