strings in Unix and Linux extracts printable strings from a binary file. Is there a version of this for Windows? I couldn't find one.
5 Answers
Not (AFAIK) built in, but there is one available from SysInternals (live link). The SysInternals strings isn't a straight port of the Unix tool; it was written to find Unicode strings as well as ASCII:
1Working on NT and Win2K means that executables and object files will many times have embedded UNICODE strings that you cannot easily see with a standard ASCII strings or grep programs.
I believe MinGW contains a Windows version of GNU binutils, which in turn contains the strings program. You could try that.
A quick simple solution:
more < FILE_PATH.exe | findstr "."
This will print all strings from any kind of file ( with a little extra junk ), separated by a new line.
What actually happens is more < FILE_PATH.exe prints an ascii view of FILE_PATH.exe into the console, and the findstr "." filters out anything that isn't a string ( define a minimum length by adding more '.' e.g. findstr "....." will filter for only strings of length 5+ ).
strings -n 4 FILE_PATH => more < FILE_PATH | findstr "...."
strings -n 8 FILE_PATH => more < FILE_PATH | findstr "........"
And of course you can use findstr to make a more exact filter ( see findstr /? )
The Sysinternals tool Strings is a Windows console program which can extract ASCII And Unicode strings from binary files.
3For a GUI-oriented alternative try 'Extract Text' in this utility collection by Juan M. Aguirregabiria. Quick and easy to use with persistent customization of which characters to match as strings. Probably doesn't support Unicode though.
Softpedia link included in case the link above dies