Stringscope is a tool to display a list of the text strings contained in a binary file, i.e. the sequences of printable characters longer than a minimum threshold of 4 characters. The program, which is written in and runs under Medley Interlisp, is similar to the Unix tool strings
.
Download the file STRINGSCOPE
from the project repo, copy it to a file system location your Medley Interlisp installation has access to, and optionally compile the source by evaluating the following expression from the Lisp executive:
(TCOMPL 'STRINGSCOPE)
Provide these answers to the questions the compiler asks:
- listing? no
- redefine? yes
- save exprs? no
Finally, to load the program evaluate:
(FILESLOAD STRINGSCOPE)
Once Stringscope is loaded you can call the following functions and commands.
To run the program evaluate:
(STRINGSCOPE FILENAME MIN.LEN)
where FILENAME
is a file name and MIN.LEN
the optional minimum length printable character sequences must have. The default is 4 characters but is user-configurable by changing the global variable SSCOPE.MIN.LEN
.
STRINGSCOPE
prompts to create a window to display the output, which is scrollable. The output window has a prompt area attached to the top side and a menu to the right side. The prompt area serves for requesting input and displaying status messages, the menu contains the following items and subitems:
Info
: shows statistics about the stringsGet
: reads the strings of a new fileFind
: searches for strings matching a specified text (case insensitive)Sort
: sorts the strings in the following orderAscending
Descending
Min Len
: changes the minimum length strings must haveReset
: redisplays the strings read from the current fileExit
: quits the program
The function returns the output window if the file is processed with no issues, NIL
otherwise.
To make the program print the strings to the primary output stream call the function STRINGS
, which takes the same arguments as STRINGSCOPE
and the additional optional argument NEWWIN
:
(STRINGS FILENAME MIN.LEN NEWWIN)
If NEWWIN
is not NIL
, STRINGS
works exactly like STRINGSCOPE
and displays the output in a new window. Depending on the value of NEWWIN
, STRINGS
returns the primary output stream or the new window if the file is processed with no issues, NIL
otherwise.
STRINGS
is available also as an Executive command which accepts the same first two arguments and prints the output:
STRINGS FILENAME MIN.LEN
The function:
EXTRACT.STRINGS STREAM MIN.LEN
returns a list of the strings of at least MIN.LEN
characters read from STREAM
. The function assumes the input stream is already open.
See the list of releases for notes on the changes in each version.
Stringscope is developed by Paolo Amoroso.
This code is distributed under the MIT license, see the LICENSE
file.