Expand description
Twistrs is a domain name permutation and enumeration library that is built on top of async Rust.
The library is designed to be fast, modular and easy-to-use for clients.
The two primary structs to look into are Domain
and DomainMetadata
.
Additionally the module documentation for permutation and enumeration provides more granular details on how each module may be used indepedently.
domain permutation and enrichment asynchronously.
§Example
The following is a trivial example using Tokio mpsc.
use twistrs::enrich::DomainMetadata;
use twistrs::permutate::Domain;
use tokio::sync::mpsc;
#[tokio::main]
async fn main() {
let domain = Domain::new("google.com").unwrap();
let permutations = domain.addition();
let (tx, mut rx) = mpsc::channel(1000);
for permutation in permutations {
let domain_metadata = DomainMetadata::new(permutation.domain.fqdn.clone());
let mut tx = tx.clone();
tokio::spawn(async move {
if let Err(_) = tx.send((permutation.clone(), domain_metadata.dns_resolvable().await)).await {
println!("received dropped");
return;
}
drop(tx);
});
}
drop(tx);
while let Some(i) = rx.recv().await {
println!("{:?}", i);
}
}
Modules§
- The enrichment module exposes functionality to enrich a given domain with interesting metadata. Currently including:
- The permutation module exposes functionality around generating multiple valid variations of a given domain. Note that this module is only concerned with generating possible permutations of a given domain.