Is there a Windows equivalent of the Unix "strings" command?
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:
Working 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.