July 2024 · 7 min read

Curating 200 Security Tools

Kali has 600+ tools. Half are unmaintained. We ship 200, and every one is tested on every release.

Selection criteria

Why we dropped 40 tools

In the v1.0 to v2.0 transition, we dropped 40 tools that failed our criteria. Examples:

Automated testing

Every tool has a smoke test that runs in CI:

// test-tools.ltl
tools
    |> map(|t| (t.name, run_smoke_test(t)))
    |> partition(|(_, result)| result.is_ok())
    |> match {
        (passed, failed) => {
            println("{passed |> len()} passed, {failed |> len()} failed")
            failed |> each(|(name, err)| println("  FAIL: {name}: {err}"))
        }
    }

Community input

Tool requests go through GitHub issues. If a tool meets our criteria and gets 5+ upvotes, we add it to the next release.

Category breakdown

Our 200 tools are organized into 10 categories. Here's the full breakdown with representative tools:

Version pinning strategy

Not all tools should be bleeding-edge. We use a three-tier version strategy:

Tool wrapper system

Every tool in NullSec has a Lateralus wrapper that provides structured I/O. Instead of parsing text output, you get typed data:

// Without wrapper (traditional approach):
let raw = shell("nmap -sV -oX - 10.0.0.1")
let hosts = parse_nmap_xml(raw)  // fragile XML parsing

// With NullSec wrapper (Lateralus-native):
let hosts = nmap_scan("10.0.0.1", flags: "-sV")
// Returns Vec<Host> with typed fields:
// hosts[0].ip        : String
// hosts[0].ports     : Vec<Port>
// hosts[0].ports[0].number  : Int
// hosts[0].ports[0].service : String
// hosts[0].ports[0].version : String

The wrappers handle argument building, output parsing, error handling, and logging. They're maintained in a separate repository (nullsec-tool-wrappers) and versioned independently from the tools themselves.

Deprecation process

When a tool is dropped, we don't just remove it. The deprecation process spans two releases:

This gives users two full release cycles to update their scripts and workflows. We also publish a migration guide for each deprecated tool showing how to replicate its functionality with the replacement.

Lateralus is built by bad-antics. Follow development on GitHub or try the playground.