Is there any linux command to extracts all the ascii strings from an executable or other binary file? I suppose I could do it with a grep, but I remember hearing somewhere that such a command existed?
5 Answers
The command you are looking for is strings
Its name is quite self-explanatory, it retrieves any printable string from a given file.
man strings
gives:
STRINGS(1)
NAME
strings - find the printable strings in a object, or other binary, fileSYNOPSIS
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]
- 10,871
- 7
- 38
- 52
-
In some use cases, white space, including newlines, is considered "ascii". GNU `strings` option `-w` (`--include-all-whitespace`) might help in those cases. – Rainer Blome Jan 13 '22 at 12:48
-
1awesome! I didn't know such command existed. Now I can finally grep files containing a mixture of text and non-printable data. – user1593842 Jan 13 '22 at 17:51
The strings command is the way to go for this particular type of problems. Sometimes you also have to pipe it out to grep.
For example:
strings somebinaryfile | grep textuwanttofind
- 439
- 3
- 6
A problem with using strings is that you don't see surrounding non printables and you have to be careful with the minimum string length.
A problem using
od -c FILEor
hexdump -C FILEis that a sequence can be difficult to find if it wraps a line.
Something I like a lot for this is ZTreeWin running in WINE on Linux - you can do a lot with it but the searching in any file or editing binaries can be particularly useful.
The awesome ytree package is available for many Linux and Unix variants and has a good Hex dump view of any file but doesn't have the search that ZTreeWin (and its 16bit predecessor, XTree) have.
- 41
- 2
The od command can do this:
od -c *filename*
- 82,107
- 71
- 302
- 444
-
3yeah, that does extract the ASCII characters, but it's not really the strings, per se. I think that 'strings' is more useful for the majority of cases. – user5336 Aug 07 '09 at 15:07
-
Ya, didn't know about that command, but I do now! AlberT got my '+1' :-) – Kyle Brandt Aug 07 '09 at 15:20