keyhog-scanner 0.5.40

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) -> Vec<String> {
    let chunk = Chunk {
        data: text.into(),
        metadata: ChunkMetadata {
            source_type: "probe".into(),
            ..Default::default()
        },
    };
    scanner
        .scan(&chunk)
        .into_iter()
        .map(|m| m.credential.as_ref().to_string())
        .collect()
}

fn main() {
    let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
    d.pop();
    d.pop();
    d.push("detectors");
    let scanner = CompiledScanner::compile(load_detectors(&d).unwrap()).unwrap();

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