keyhog-scanner 0.5.50

keyhog-scanner: high-performance SIMD-accelerated secret detection engine
Documentation
use keyhog_core::{load_detectors, Chunk, ChunkMetadata};
use keyhog_scanner::CompiledScanner;
use std::path::PathBuf;

fn scan(scanner: &CompiledScanner, text: &str) -> keyhog_scanner::Result<Vec<String>> {
    let chunk = Chunk {
        data: text.into(),
        metadata: ChunkMetadata {
            source_type: "probe".into(),
            ..Default::default()
        },
    };
    Ok(scanner
        .scan(&chunk)?
        .into_iter()
        .map(|m| m.credential.as_ref().to_string())
        .collect())
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
    d.pop();
    d.pop();
    d.push("detectors");
    let scanner = CompiledScanner::compile(load_detectors(&d)?)?;

    for text in [
        "STEAM_API_KEY=15eb9b9185146a3ab266d4e7ba0c5aba",
        "CREDENTIAL_PAYLOAD=STEAM_API_KEY=15eb9b9185146a3ab266d4e7ba0c5aba\n",
        "split_io_api_key=YWJjZGVmZ2hpamtsbW5vcA==",
    ] {
        println!("{text:?} => {:?}", scan(&scanner, text)?);
    }
    Ok(())
}