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(())
}