nsrlsvr
nsrlsvr is a tool to facilitate looking up data in NIST’s National Software Reference Library Reference Data Set.
What’s that?
It’s a database of about 50 million MD5 hashes, representing every file known to NIST.
Why do I care?
If you deal with a lot of unknown files it can be useful to separate them into “stuff NIST already knows about, ergo it’s commonplace” and “stuff NIST doesn’t know about, so maybe it’s interesting”.
You can use a tool like hashdeep to generate MD5 hashes of large filesystems and feed the output into a tool like nsrllookup, which will in turn go off and query an nsrlsvr instance to see what’s what.
Why would I want to run my own?
Great question, especially since nsrllookup comes out-of-the-box ready to work with the freely-accessible nsrllookup.com server.
There are two use cases for standing up your own nsrlsvr instance:
- You’re doing such high volumes that you’re concerned I’ll block your IP on nsrllookup.com, or
- You have your own list of MD5 hashes which you want to filter for.
If either of those two describes you, read on!
What you’ll need
- A UNIX operating system
- A Rust development environment (1.65 or later, please)
- The GNU Autotools
How to install
- Download the latest development release of
nsrlsvr tar xzf [downloaded-file]to uncompress itcdinto the directory you uncompressed it toautoreconf && automake --copy --add-missingto initialize the build system./configure && maketo build nsrlsvrsudo make installto install it to/usr/local/bin.- Build your dataset (see below)
- Start nsrlsvr with
nsrlsvrand you’re off to the races. Any nsrllookup client can now use you as a hash server.