pub const SUSPICIOUS_PORTS: &[u16] = &[
4444, 50050, 31337, 1337, 8888, 9999, 4445, 1234, 6666, 7777, 8080, 9001, 9030, 4899, 5900, 5985, 5986, 47001, ];
pub fn is_suspicious_port(port: u16) -> bool {
SUSPICIOUS_PORTS.contains(&port)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn detects_metasploit_default_4444() {
assert!(
is_suspicious_port(4444),
"4444 (Metasploit default) should be suspicious"
);
}
#[test]
fn detects_cobalt_strike_50050() {
assert!(
is_suspicious_port(50050),
"50050 (Cobalt Strike teamserver) should be suspicious"
);
}
#[test]
fn detects_eleet_31337() {
assert!(
is_suspicious_port(31337),
"31337 (eleet) should be suspicious"
);
}
#[test]
fn detects_tor_9001() {
assert!(
is_suspicious_port(9001),
"9001 (Tor relay) should be suspicious"
);
}
#[test]
fn detects_winrm_5985() {
assert!(
is_suspicious_port(5985),
"5985 (WinRM) should be suspicious"
);
}
#[test]
fn allows_port_80() {
assert!(
!is_suspicious_port(80),
"port 80 (HTTP) should not be suspicious"
);
}
#[test]
fn allows_port_443() {
assert!(
!is_suspicious_port(443),
"port 443 (HTTPS) should not be suspicious"
);
}
#[test]
fn port_zero_not_suspicious() {
assert!(!is_suspicious_port(0), "port 0 should not be flagged");
}
#[test]
fn port_65535_not_suspicious() {
assert!(
!is_suspicious_port(65535),
"port 65535 (max) should not be flagged by default"
);
}
#[test]
fn suspicious_ports_contains_4444() {
assert!(SUSPICIOUS_PORTS.contains(&4444));
}
#[test]
fn suspicious_ports_contains_9030() {
assert!(SUSPICIOUS_PORTS.contains(&9030), "9030 (Tor dir) missing");
}
#[test]
fn suspicious_ports_contains_radmin_4899() {
assert!(SUSPICIOUS_PORTS.contains(&4899), "4899 (Radmin) missing");
}
}