29 releases
new 0.7.4 | Feb 17, 2025 |
---|---|
0.7.1 | Jan 29, 2025 |
0.7.0 | Dec 12, 2024 |
0.6.9 | Nov 29, 2024 |
0.3.1-beta | Oct 27, 2020 |
#473 in Algorithms
593 downloads per month
195KB
8K
SLoC
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);
}
}
Dependencies
~10–22MB
~358K SLoC