#![forbid(unsafe_code)]
#![cfg_attr(
not(test),
deny(
clippy::unwrap_used,
clippy::expect_used,
clippy::todo,
clippy::unimplemented,
clippy::panic
)
)]
#![allow(
clippy::module_name_repetitions,
clippy::must_use_candidate,
clippy::missing_errors_doc
)]
pub mod accuracy;
pub mod config;
pub mod ports;
pub use ports::{resolve_ports, EPHEMERAL_PORT_COUNT, EPHEMERAL_PORT_START};
pub mod hashing;
pub mod domain;
pub mod error;
pub mod finding;
pub mod net;
pub mod ratelimit;
pub(crate) mod scanclient_bridge;
pub mod scanner;
pub mod target;
pub mod testkit;
pub mod text;
pub mod transport;
pub mod dedup;
pub use accuracy::{calculate_fuzzy_hash, generate_dom_fingerprint, ResponseBaseline};
pub use config::{
ApiKeys, Config, CrawlConfig, ModuleConfig, OutputConfig, OutputFormat, PortMode,
};
pub use error::Error;
pub use finding::{make_finding, try_push_finding, Evidence, Finding, FindingKind, Severity};
pub use hashing::{mmh3_x86_32, shodan_favicon_hash};
pub use net::connect_tcp;
pub use ratelimit::{
build_client, get_with_backoff, read_response_limited, send_with_backoff, HostRateLimiter,
};
pub use scanclient::reqwest;
pub use scanner::{ScanInput, Scanner};
pub use target::{
DiscoveredForm, DiscoveredParam, DiscoverySource, DomainTarget, HostTarget, NetworkTarget,
ParamLocation, ParamSource, Protocol, ServiceTarget, Target, TechCategory, Technology,
WebAssetTarget,
};
pub use text::{xml_escape, xml_unescape};
pub use transport::ScanClient;