Formatting & refactor & stats

main
E. Almqvist 2 years ago
parent c8bbbfbe8b
commit 066b74cb37
  1. 11
      src/ipv4.rs
  2. 22
      src/scanner.rs

@ -43,8 +43,7 @@ impl IPv4 {
Self { id, ip }
}
pub fn to_ipaddr(self: &mut Self) -> Result<IpAddr> {
// TODO: remove unneeded Result returns
fn to_ipaddr(self: &mut Self) -> Result<IpAddr> {
if let [a, b, c, d] = self.ip[0..4] {
Ok(IpAddr::V4(Ipv4Addr::new(a, b, c, d)))
} else {
@ -52,9 +51,9 @@ impl IPv4 {
}
}
pub fn to_socketaddr(self: &mut Self, port: u16) -> Result<SocketAddr> {
let ip_addr = self.to_ipaddr()?;
Ok(SocketAddr::new(ip_addr, port))
pub fn to_socketaddr(self: &mut Self, port: u16) -> SocketAddr {
let ip_addr = self.to_ipaddr().unwrap_or_else(|err| panic!("{}", err));
SocketAddr::new(ip_addr, port)
}
}
@ -82,7 +81,7 @@ impl IPv4Range {
pub fn from_cidr(cidr_string: String, id_ignore: Option<Vec<u32>>) -> Self {
let cidr = Ipv4Cidr::from_str(cidr_string).unwrap();
let (from, to) = (cidr.first(), cidr.last());
let (from, to) = (cidr.first(), cidr.last());
Self::new(from, to, id_ignore)
}

@ -5,14 +5,18 @@ use std::net::TcpStream;
use std::thread::JoinHandle;
use std::{panic, thread};
static mut TCP_SCANS_ISSUED: u64 = 0;
fn tcp_scan(mut target: IPv4, target_port: u16) -> bool {
debug!("Starting scan on {:?}", target);
let dest = target
.to_socketaddr(target_port)
.unwrap_or_else(|e| panic!("{}", e));
let dest = target.to_socketaddr(target_port);
let timeout = Duration::new(1, 0);
unsafe {
TCP_SCANS_ISSUED += 1;
}
if let Ok(_res) = TcpStream::connect_timeout(&dest, timeout) {
println!("{:?}", dest);
true
@ -31,7 +35,9 @@ fn create_scan_thread(ip_range: IPv4Range, target_port: u16) -> JoinHandle<Vec<(
ip_range.into_iter().for_each(|id| {
let target = IPv4::new(id as u64);
let result = tcp_scan(target, target_port);
results.push((id, result));
if result {
results.push((id, result));
}
});
results
@ -130,6 +136,12 @@ pub fn start_scan(range: IPv4Range, target_port: u16, num_threads: u64) -> Vec<S
results.append(&mut worker_results);
}
println!("Scan finished with {} result(s).", results.len());
unsafe {
println!(
"Scan finished with {} result(s) with a total of {} scans.",
results.len(),
TCP_SCANS_ISSUED
);
}
results
}

Loading…
Cancel
Save