134

I have this binary file on my Linux system...

 udit@udit-Dabba ~ $ cat file.enc
 Salted__s�bO��<0�F���Jw!���]�:`C�LKȆ�l

Using the hexdump command, I see its information like this:

 udit@udit-Dabba ~ $ hexdump -C file.enc
 00000000  53 61 6c 74 65 64 5f 5f  1b 73 a1 62 4f 15 be f6  |Salted__.s.bO...|
 00000010  3c 30 cc 46 ee 10 13 11  84 bf 4a 77 21 a4 84 99  |<0.F......Jw!...|
 00000020  0e 5d ef 11 18 3a 60 43  a0 4c 4b 1e c8 86 e6 6c  |.]...:`C.LK....l|
 00000030

Now I am given a file on some other system whose contents are like this:

 53 61 6c 74 65 64 5f 5f  1b 73 a1 62 4f 15 be f6
 3c 30 cc 46 ee 10 13 11  84 bf 4a 77 21 a4 84 99
 0e 5d ef 11 18 3a 60 43  a0 4c 4b 1e c8 86 e6 6c

And I need to find out that same exact binary information from this hexdump.

How can I proceed for that?

If there isn't any switch for that then C code will also work fine.

(But a Linux command with some switch is preferable)

Limitation:

The binary information in the file is output of an encryption algorithm, so contents should exactly match...

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Udit Gupta
  • 3,162
  • 11
  • 43
  • 71

1 Answers1

228

As @user786653 suggested, use the xxd(1) program:

xxd -r -p input.txt output.bin
Adam Rosenfield
  • 390,455
  • 97
  • 512
  • 589
  • 18
    to add use `echo "hex" | xxd -r -p - ` to take input from piped standard out – Amanpreet Jan 23 '18 at 08:55
  • 7
    Can also be used to get binary hashes - like `echo something | sha256sum | xxd -r -p -` – xdevs23 May 10 '18 at 10:02
  • 3
    To explain the flags: https://explainshell.com/explain?cmd=xxd+-r+-p – Alexander Oct 28 '21 at 00:08
  • 3
    Note that `xxd` uses very old fashioned argument processing, so all of the following behave differently: `xxd -rp` `xxd -pr` `xxd -r -p`. Only the last of the three works for this use case. – Michael Firth Mar 10 '22 at 16:13
  • @Amanpreet no need to do that because the man page says that `If no infile is given, standard input is read.` – phuclv Jun 12 '23 at 06:45