Dotnist.Client 1.2.0

dotnet add package Dotnist.Client --version 1.2.0
                    
NuGet\Install-Package Dotnist.Client -Version 1.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Dotnist.Client" Version="1.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Dotnist.Client" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="Dotnist.Client" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Dotnist.Client --version 1.2.0
                    
#r "nuget: Dotnist.Client, 1.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Dotnist.Client@1.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Dotnist.Client&version=1.2.0
                    
Install as a Cake Addin
#tool nuget:?package=Dotnist.Client&version=1.2.0
                    
Install as a Cake Tool

Dotnist

Like deNIST except dotnet. Intended to help identify NIST files in ediscovery processing. Maintained by Elemental Discovery.

NIST List

The underlying NIST list comes from the National Software Reference Library and is formally known as the Reference Data Set.

Components

This project consists of a variety of components:

  • The Dotnist library, which does lookups against a provided sqlite database.
  • The Dotnist.Grpc gRPC server, which is bundled into the dotnist-grpc container image (db included).
  • The Dotnist.Client client library, which is just a package that directly provides the generated gRPC client library. You could alternately copy the dotnist.proto file directly, which is what you would need to do for other languages.

Dotnist and Dotnist.Client are available as NuGet packages. The dotnist-grpc container is available both on Docker Hub and in this repository's Github Container Registry.

Usage

For usage, look at the tests and the dotnist.proto file.

RDS Database

The 'minimal' modern RDS database is comically large at >170 GB after extraction, so we have a manual workflow to shrink the database into just a single package reference for each unique Sha256 hash, discarding the filename and other hash types from the database as well. The library is designed to work with both a full database and the flattened database, but the Docker container bundles this handmade flattened database.

Versions

Version RDS Release
1.0.x 2025-06-01
1.1.x 2025-09-01
1.2.x 2025-12-01

Quarterly Updates

In order to apply the quarterly RDS patches:

  1. Download the NSRL provided .sql patch for the modern minimal dataset.
  2. Use update-database.sh to apply the patch to a complete (non-flattened) sqlite database.
  3. Use flatten-sqlite.sh to generate a flattened database.
  4. Use build-db-image.sh to bundle the new flattened database and push it to GHCR.

After that the build process that runs in Github Actions will be able to use the updated .db file.

TODO

Some hypothetical improvements that aren't worth the time at the moment:

  • Running tests in CI is a hassle since you need the database, one option would be to run the tests in a docker container.
  • A version of this that works against a NIST list stored in a regular hosted database.
  • I didn't bother to configure the image builds to run during pull requests, like you would normally want in a development workflow.

If anyone else finds this library useful definitely feel free to reach out! I'd be curious about what you are working on.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.0 65 1/28/2026
1.2.0-pull-9-merge.2 26 1/28/2026
1.1.3-pull-9-merge.2 29 1/28/2026
1.1.2 391 11/19/2025
1.1.1 189 10/30/2025
1.1.1-pull-8-merge.2 133 10/30/2025
1.1.0 177 10/30/2025
1.0.8-pull-7-merge.2 141 10/30/2025
1.0.7 188 8/8/2025
1.0.7-pull-6-merge.3 135 8/8/2025
1.0.6 151 7/13/2025
1.0.6-pull-5-merge.2 91 7/13/2025
1.0.5 103 7/11/2025
1.0.4 119 7/11/2025
1.0.3 128 7/11/2025
1.0.3-pull-4-merge.2 83 7/11/2025
1.0.2 173 7/10/2025
1.0.2-pull-3-merge.2 134 7/10/2025
1.0.1 172 7/10/2025
1.0.1-pull-2-merge.3 129 7/10/2025