[package]
edition = "2021"
rust-version = "1.75"
name = "forensicnomicon-cli"
version = "0.1.3"
authors = ["Albert Hui <albert@securityronin.com>"]
build = false
exclude = [
".github/",
"target/",
"wix/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "4n6query"
description = "4n6query — DFIR lookup tool: query LOL/LOFL binaries, abusable sites, and 6,548 forensic artifacts from the command line"
homepage = "https://github.com/SecurityRonin/forensicnomicon"
documentation = "https://docs.rs/forensicnomicon"
readme = "README.md"
keywords = [
"dfir",
"forensics",
"lolbins",
"mitre-attack",
"soc",
]
categories = ["command-line-utilities"]
license = "Apache-2.0"
repository = "https://github.com/SecurityRonin/forensicnomicon"
[package.metadata.deb]
maintainer = "SecurityRonin <security-ronin@users.noreply.github.com>"
section = "utils"
priority = "optional"
extended-description = """
4n6query is the DFIR query CLI for the forensicnomicon catalog.
Look up any binary (certutil.exe, osascript, curl), abusable domain (raw.githubusercontent.com), MITRE technique (T1547.001), or keyword (userassist, prefetch) across 6,548 enriched forensic artifacts, all six LOL/LOFL datasets (Windows/macOS/Linux), and 54 abusable sites.
Also ships as 4q — the short alias for interactive use."""
assets = [
[
"target/release/4n6query",
"usr/bin/4n6query",
"755",
],
[
"../../dist/4q",
"usr/bin/4q",
"755",
],
]
[[bin]]
name = "4n6query"
path = "src/main.rs"
[[test]]
name = "cli_integration"
path = "tests/cli_integration.rs"
[dependencies.clap]
version = "4"
features = ["derive"]
[dependencies.crossterm]
version = "0.28"
[dependencies.dirs]
version = "5"
[dependencies.forensicnomicon]
version = "1.0"
features = ["serde"]
[dependencies.ratatui]
version = "0.29"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.toml]
version = "0.8"
[dev-dependencies.assert_cmd]
version = "2"
[dev-dependencies.predicates]
version = "3"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.case_sensitive_file_extension_comparisons]
level = "allow"
priority = 1
[lints.clippy.cast_possible_truncation]
level = "allow"
priority = 1
[lints.clippy.cast_possible_wrap]
level = "allow"
priority = 1
[lints.clippy.cast_precision_loss]
level = "allow"
priority = 1
[lints.clippy.cast_sign_loss]
level = "allow"
priority = 1
[lints.clippy.correctness]
level = "deny"
priority = -1
[lints.clippy.doc_markdown]
level = "allow"
priority = 1
[lints.clippy.expect_used]
level = "deny"
priority = 0
[lints.clippy.items_after_statements]
level = "allow"
priority = 1
[lints.clippy.missing_errors_doc]
level = "allow"
priority = 1
[lints.clippy.missing_panics_doc]
level = "allow"
priority = 1
[lints.clippy.module_name_repetitions]
level = "allow"
priority = 1
[lints.clippy.must_use_candidate]
level = "allow"
priority = 1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.clippy.similar_names]
level = "allow"
priority = 1
[lints.clippy.suspicious]
level = "deny"
priority = -1
[lints.clippy.too_many_lines]
level = "allow"
priority = 1
[lints.clippy.unreadable_literal]
level = "allow"
priority = 1
[lints.clippy.unwrap_used]
level = "deny"
priority = 0
[lints.rust]
unsafe_code = "forbid"