Skip to main content

LiveModuleCatalog

Struct LiveModuleCatalog 

Source
pub struct LiveModuleCatalog { /* private fields */ }
Expand description

A module catalog built from a live Metasploit RPC listing (module.exploits, module.auxiliary, module.post).

Unlike the static offline catalogs, the source of truth here is the connected instance: a module is only ever suggested if it actually exists on that instance, so names that do not exist (e.g. a hypothetical auxiliary/scanner/http/nginx_version) can never be recommended.

Banner/title matching is derived from the module names themselves — the significant tokens of each module’s leaf name are matched against the banner text — so no module names are hardcoded here.

Implementations§

Source§

impl LiveModuleCatalog

Source

pub fn from_modules(modules: Vec<MSFModule>) -> Self

Source

pub fn len(&self) -> usize

Source

pub fn is_empty(&self) -> bool

Source

pub fn contains(&self, full_name: &str) -> bool

Source

pub fn all(&self) -> &[MSFModule]

Source

pub fn suggest_for_banner(&self, banner: &str) -> Vec<ModuleSuggestion>

Suggest modules for a service banner. Confidence is high because the match is against the banner observed for a live service.

Source

pub fn suggest_for_title( &self, title: &str, details: &str, ) -> Vec<ModuleSuggestion>

Suggest modules for a finding title/details pair. Confidence is medium because the match is against free text rather than a live banner.

Source

pub fn modules_for_cve(&self, cve: &str) -> Vec<MSFModule>

Modules known for a CVE.

The listing responses carry names only (no references), so the offline catalog is used as the candidate source and every candidate is filtered through the live names. Modules whose name embeds the CVE (e.g. exploit/windows/rdp/cve_2019_0708_bluekeep) are surfaced directly from the listing even when they are absent from the offline catalog.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more