I was working through my most recent class, Application Security, and one of the exercises required us to find a secret message hidden in an image. Now, I know you can do this manually with hexdump -C
. That output looks something like this:
This is fine unless your image is huge or your secret message has a bunch of garbage bytes mixed into it for extra secrets. So I was trying to look up a way to get it to just kick out the ASCII output on its own so I could use other tools like grep
to search through it, when I stumbled over a reference to the strings
command. What is the strings
command?
strings - find the printable strings in a object, or other binary, file
Well, OK then! Granted, when you read through the man page for it, it proclaims itself as a very simple string-finding algorithm, but good as a first easy pass.
Instead of the above hexdump
output, you get something like this:
B*M)M1,
a&%5
%PJ)
XJ)FO
KL\I!D
Y}RJ
Which is way more searchable, awk
able, etc.!
Take this image here:
Cute puppy, right? Yes, but it is also a puppy full of secrets.
Give it a try. Download it and then run:
strings secret_puppy.png
Find anything fun?
This method won’t find every hidden string in every secret image or binary file, but it’s a quick, easy command and much more useful than hexdump
for some things!