SYMBOL INDEX (627 symbols across 94 files) FILE: c2/migrations/20250614124105_agent_table.sql type agents (line 2) | CREATE TABLE agents ( FILE: c2/migrations/20250614132037_tasks.sql type tasks (line 2) | CREATE TABLE tasks ( FILE: c2/migrations/20250615070633_flesh_table.sql type idx_tasks_incomplete (line 10) | CREATE INDEX idx_tasks_incomplete FILE: c2/migrations/20250616171233_ch_col.sql type idx_tasks_incomplete (line 30) | CREATE INDEX idx_tasks_incomplete FILE: c2/migrations/20250619055731_results_table.sql type completed_tasks (line 2) | CREATE TABLE completed_tasks ( FILE: c2/migrations/20250622075242_agent_staging.sql type agent_staging (line 2) | CREATE TABLE agent_staging ( FILE: c2/migrations/20250622154423_operator_table.sql type operators (line 2) | CREATE TABLE operators ( FILE: c2/migrations/20251215120000_completed_tasks_pending_idx.sql type idx_completed_tasks_agent_pending (line 2) | CREATE INDEX IF NOT EXISTS idx_completed_tasks_agent_pending FILE: c2/src/admin_task_dispatch/dispatch_table.rs function admin_dispatch (line 21) | pub async fn admin_dispatch( FILE: c2/src/admin_task_dispatch/execute.rs function dotex (line 15) | pub async fn dotex( type InternalName (line 41) | type InternalName = String; type SpawnInject (line 44) | pub enum SpawnInject { function spawn_inject_with_network_resource (line 50) | pub async fn spawn_inject_with_network_resource( FILE: c2/src/admin_task_dispatch/implant_builder.rs constant FULLY_QUAL_PATH_TO_FILE_BUILD (line 28) | const FULLY_QUAL_PATH_TO_FILE_BUILD: &str = "/app/profiles/tmp"; function build_all_bins (line 33) | pub async fn build_all_bins( function write_loader_to_tmp (line 114) | async fn write_loader_to_tmp( function compile_loader (line 215) | async fn compile_loader( function compile_agent (line 293) | pub async fn compile_agent( function post_process_pe_on_disk (line 421) | pub async fn post_process_pe_on_disk(dest: &Path, data: &NewAgentStaging... function write_implant_to_tmp_folder (line 473) | pub async fn write_implant_to_tmp_folder<'a>( function validate_extension (line 617) | fn validate_extension(name: &String, expected_type: StageType) -> String { function stage_new_agent_error_printer (line 657) | async fn stage_new_agent_error_printer( function stage_file_upload_from_users_disk (line 672) | pub async fn stage_file_upload_from_users_disk( FILE: c2/src/admin_task_dispatch/mod.rs function remove_dir (line 24) | async fn remove_dir(save_path: impl AsRef) -> Result<(), String> { function remove_file (line 34) | async fn remove_file(file_path: impl AsRef) -> Result<(), String> { function list_agents (line 44) | async fn list_agents(state: State>) -> Option { function task_agent (line 70) | async fn task_agent>( function task_agent_sleep (line 89) | async fn task_agent_sleep(time: i64, uid: String, state: State Option { function list_staged_resources (line 155) | async fn list_staged_resources(state: State>) -> Option>, agent_name:... type StageError (line 205) | enum StageError { function add_api_endpoint_for_staged_resource (line 222) | async fn add_api_endpoint_for_staged_resource( function is_download_staging_url_error (line 241) | async fn is_download_staging_url_error( function drop_file_handler (line 278) | async fn drop_file_handler( function export_completed_tasks_to_json (line 321) | async fn export_completed_tasks_to_json(uid: String, state: State Vec { type AgentHandle (line 63) | type AgentHandle = Arc>; type AgentList (line 67) | pub struct AgentList { method default (line 73) | pub fn default() -> Self { method snapshot_handles (line 79) | async fn snapshot_handles(&self) -> Vec { method snapshot_agents (line 84) | pub async fn snapshot_agents(&self) -> Vec { method mark_agents_stale (line 98) | pub async fn mark_agents_stale(&self) { method get_agent_and_tasks_by_header (line 121) | pub async fn get_agent_and_tasks_by_header( method contains_agent_by_id (line 225) | pub async fn contains_agent_by_id(&self, id: &str) -> bool { method remove_agent (line 230) | pub async fn remove_agent(&self, id: &str) { function extract_agent_id (line 241) | pub fn extract_agent_id(headers: &HeaderMap) -> Result { function handle_kill_command (line 256) | pub async fn handle_kill_command( function calculate_max_time_till_stale (line 279) | async fn calculate_max_time_till_stale(sleep: u64) -> i64 { FILE: c2/src/api/admin_routes.rs function handle_admin_commands_on_agent (line 28) | pub async fn handle_admin_commands_on_agent( function handle_admin_commands_without_agent (line 38) | pub async fn handle_admin_commands_without_agent( function poll_agent_notifications (line 47) | pub async fn poll_agent_notifications( function build_all_binaries_handler (line 66) | pub async fn build_all_binaries_handler( function admin_login (line 103) | pub async fn admin_login( function is_adm_logged_in (line 189) | pub async fn is_adm_logged_in() -> Response { function logout (line 193) | pub async fn logout() -> Response { function admin_upload (line 197) | pub async fn admin_upload( FILE: c2/src/api/agent_get.rs function handle_agent_get (line 19) | pub async fn handle_agent_get(state: State>, request: Requ... function handle_agent_get_with_path (line 42) | pub async fn handle_agent_get_with_path( FILE: c2/src/api/agent_post.rs function agent_post_handler_with_path (line 25) | pub async fn agent_post_handler_with_path( function agent_post_handler (line 59) | pub async fn agent_post_handler( function handle_agent_post_standard (line 85) | async fn handle_agent_post_standard( function receive_exfil (line 208) | async fn receive_exfil(mut mp: Multipart) -> Result bool { FILE: c2/src/app_state.rs type AppState (line 23) | pub struct AppState { method from (line 106) | pub async fn from(db_pool: Db, profile: Profile) -> Self { method track_sessions (line 135) | pub fn track_sessions(&self) { method create_session_key (line 150) | pub async fn create_session_key(&self) -> String { method has_session (line 172) | pub async fn has_session(&self, key: &str) -> bool { method remove_session (line 182) | pub async fn remove_session(&self, key: &str) { type DownloadEndpointData (line 36) | pub struct DownloadEndpointData { method new (line 43) | pub fn new(file_name: &str, internal_name: &str, xor_key: Option) ... type Endpoints (line 53) | pub struct Endpoints { method find_format_download_endpoint (line 67) | pub fn find_format_download_endpoint(&self, needle: &str) -> Option Res... function detect_stale_agents (line 195) | pub async fn detect_stale_agents(state: Arc) { FILE: c2/src/db.rs constant MAX_DB_CONNECTIONS (line 20) | const MAX_DB_CONNECTIONS: u32 = 30; constant DB_ACQUIRE_TIMEOUT_SECS (line 21) | const DB_ACQUIRE_TIMEOUT_SECS: u64 = 3; constant DB_STATEMENT_TIMEOUT_MS (line 22) | const DB_STATEMENT_TIMEOUT_MS: u64 = 30_000; type Db (line 25) | pub struct Db { method new (line 31) | pub async fn new() -> Self { method get_agent_with_tasks_by_id (line 75) | pub async fn get_agent_with_tasks_by_id( method get_tasks_for_agent_by_uid (line 113) | pub async fn get_tasks_for_agent_by_uid( method insert_new_agent (line 171) | pub async fn insert_new_agent( method add_task_for_agent_by_id (line 198) | pub async fn add_task_for_agent_by_id( method update_agent_sleep_time (line 221) | pub async fn update_agent_sleep_time( method mark_task_completed (line 240) | pub async fn mark_task_completed(&self, task: &Task) -> Result<(), sql... method add_completed_task (line 257) | pub async fn add_completed_task(&self, task: &Task, agent_id: &str) ->... method agent_has_pending_notifications (line 279) | pub async fn agent_has_pending_notifications(&self, uid: &String) -> R... method pull_notifications_for_agent (line 306) | pub async fn pull_notifications_for_agent( method update_agent_checkin_time (line 349) | pub async fn update_agent_checkin_time(&self, agent: &mut Agent) -> Re... method add_staged_agent (line 385) | pub async fn add_staged_agent(&self, data: &NewAgentStaging) -> Result... method delete_staged_resource_by_uri (line 415) | pub async fn delete_staged_resource_by_uri( method get_agent_related_db_cfg (line 452) | pub async fn get_agent_related_db_cfg( method lookup_operator (line 509) | pub async fn lookup_operator( method add_operator (line 532) | pub async fn add_operator( method get_staged_agent_data (line 560) | pub async fn get_staged_agent_data(&self) -> Result Result... FILE: c2/src/exfil.rs function handle_exfiltrated_file (line 10) | pub async fn handle_exfiltrated_file(task: &mut Task) { function handle_exfiltrated_file_stream (line 92) | pub async fn handle_exfiltrated_file_stream(task: &mut Task) { FILE: c2/src/logging.rs function log_download_accessed (line 8) | pub async fn log_download_accessed(uri: &str, addr: &str) { function log_page_accessed_no_auth (line 17) | pub async fn log_page_accessed_no_auth(uri: &str, addr: &str) { function log_page_accessed_auth (line 32) | pub async fn log_page_accessed_auth(uri: &str, addr: &str) { function log_admin_login_attempt (line 47) | pub async fn log_admin_login_attempt(username: &str, password: &str, ip:... function log_error (line 80) | pub fn log_error(message: &str) { function log_error_async (line 87) | pub async fn log_error_async(message: &str) { function log (line 98) | async fn log(path: &PathBuf, message: &str, addr: Option<&str>) { function log_sync (line 112) | fn log_sync(path: &PathBuf, message: &str, addr: Option<&str>) { function construct_msg (line 125) | fn construct_msg(ip: Option<&str>, message: &str) -> String { function print_success (line 166) | pub fn print_success(msg: impl Display) { function print_info (line 170) | pub fn print_info(msg: impl Display) { function print_failed (line 174) | pub fn print_failed(msg: impl Display) { FILE: c2/src/main.rs constant NUM_GIGS (line 54) | const NUM_GIGS: usize = 100; constant MAX_POST_BODY_SZ (line 55) | const MAX_POST_BODY_SZ: usize = NUM_GIGS * 1024 * 1024 * 1024; constant AUTH_COOKIE_NAME (line 57) | const AUTH_COOKIE_NAME: &str = "session"; constant COOKIE_TTL (line 58) | const COOKIE_TTL: Duration = Duration::from_hours(12); constant FILE_STORE_PATH (line 62) | const FILE_STORE_PATH: &str = "/data/staged_files"; constant EXFIL_PATH (line 63) | const EXFIL_PATH: &str = "/data/loot"; constant LOG_PATH (line 64) | const LOG_PATH: &str = "/data/logs"; constant DB_EXPORT_PATH (line 65) | const DB_EXPORT_PATH: &str = "/data/exports"; constant ACCESS_LOG (line 66) | const ACCESS_LOG: &str = "access.log"; constant DOWNLOAD (line 67) | const DOWNLOAD: &str = "downloads.log"; constant LOGIN_LOG (line 68) | const LOGIN_LOG: &str = "login.log"; constant ERROR_LOG (line 69) | const ERROR_LOG: &str = "error.log"; constant TOOLS_PATH (line 70) | const TOOLS_PATH: &str = "/tools"; constant WOFS_PATH (line 71) | const WOFS_PATH: &str = "/wofs_static"; function main (line 74) | async fn main() -> Result<(), Box> { function construct_listener_addr (line 102) | fn construct_listener_addr() -> String { function init_server_state (line 112) | async fn init_server_state() -> Arc { function build_routes (line 139) | fn build_routes(state: Arc) -> Router { function ensure_dirs_and_files (line 226) | fn ensure_dirs_and_files() { function handle_panic (line 240) | fn handle_panic(err: Box) -> Response>) -> Vec<... function prepare_response_packet (line 54) | async fn prepare_response_packet(task: Task) -> Vec { function from_task_id_bytes (line 80) | fn from_task_id_bytes(id: i32) -> Vec { function serve_file (line 90) | pub async fn serve_file(filename: &String, xor_key: Option) -> Respo... FILE: c2/src/pe_utils/mod.rs type PeScrubError (line 18) | pub enum PeScrubError { function timestomp_binary_compile_date (line 46) | pub async fn timestomp_binary_compile_date( function str_to_epoch (line 106) | fn str_to_epoch(dt_str: &str) -> Result { function scrub_strings (line 123) | pub async fn scrub_strings( function commit_files (line 181) | async fn commit_files(file: &mut File, buf: &mut Vec) -> Result<(), ... FILE: c2/src/pe_utils/types.rs type IMAGE_FILE_HEADER (line 3) | pub struct IMAGE_FILE_HEADER { type IMAGE_FILE_MACHINE (line 15) | pub struct IMAGE_FILE_MACHINE(pub u16); type IMAGE_FILE_CHARACTERISTICS (line 19) | pub struct IMAGE_FILE_CHARACTERISTICS(pub u16); type IMAGE_NT_HEADERS64 (line 23) | pub struct IMAGE_NT_HEADERS64 { type IMAGE_DOS_HEADER (line 31) | pub struct IMAGE_DOS_HEADER { type IMAGE_OPTIONAL_HEADER64 (line 55) | pub struct IMAGE_OPTIONAL_HEADER64 { type IMAGE_OPTIONAL_HEADER_MAGIC (line 90) | pub struct IMAGE_OPTIONAL_HEADER_MAGIC(pub u16); type IMAGE_DLL_CHARACTERISTICS (line 94) | pub struct IMAGE_DLL_CHARACTERISTICS(pub u16); type IMAGE_SUBSYSTEM (line 98) | pub struct IMAGE_SUBSYSTEM(pub u16); type IMAGE_DATA_DIRECTORY (line 102) | pub struct IMAGE_DATA_DIRECTORY { type IMAGE_EXPORT_DIRECTORY (line 109) | pub struct IMAGE_EXPORT_DIRECTORY { FILE: c2/src/profiles.rs type Profile (line 13) | pub struct Profile { method as_staged_agent (line 68) | pub fn as_staged_agent( type Server (line 19) | pub struct Server { type Network (line 24) | pub struct Network { type Implant (line 35) | pub struct Implant { type AntiSandbox (line 48) | pub struct AntiSandbox { type Evasion (line 54) | pub struct Evasion { function parse_profile (line 178) | pub async fn parse_profile() -> io::Result { function add_listeners_from_profiles (line 229) | pub fn add_listeners_from_profiles(existing: &mut HashSet, p: &P... function add_tokens_from_profiles (line 244) | pub fn add_tokens_from_profiles(existing: &mut HashSet, p: &Prof... function read_profile (line 255) | async fn read_profile(path: &Path) -> io::Result { type ParsedExportStrings (line 280) | pub struct ParsedExportStrings { method empty (line 287) | fn empty() -> Self { method from (line 295) | fn from(plain_only: String, machine_code: String, export_proxy: String... function parse_exports_to_string_for_env (line 306) | pub fn parse_exports_to_string_for_env(exports: &Exports) -> ParsedExpor... function validate_wof_dirs (line 343) | fn validate_wof_dirs(wofs: &Vec) -> Result<(), String> { FILE: client/src/controller/build_profiles.rs function trigger_download (line 13) | pub fn trigger_download(filename: &str, bytes: &[u8]) { FILE: client/src/controller/dashboard.rs function update_connected_agents (line 19) | pub fn update_connected_agents( FILE: client/src/controller/mod.rs type BodyClass (line 11) | pub enum BodyClass { function wyrm_chat_history_browser_key (line 17) | pub fn wyrm_chat_history_browser_key(uid: &str) -> String { function apply_body_class (line 25) | pub fn apply_body_class(target: BodyClass) { function is_logged_in (line 40) | pub async fn is_logged_in() -> bool { function get_item_from_browser_store (line 45) | pub fn get_item_from_browser_store(key: &str) -> anyhow::Result function store_item_in_browser_store (line 68) | pub fn store_item_in_browser_store(key: &str, item: &T) ->... function delete_item_in_browser_store (line 84) | pub fn delete_item_in_browser_store(key: &str) { FILE: client/src/main.rs function main (line 16) | fn main() { function App (line 24) | fn App() -> impl IntoView { FILE: client/src/models/dashboard.rs type AgentC2MemoryNotifications (line 27) | pub type AgentC2MemoryNotifications = (String, bool, Option); type Agent (line 32) | pub struct Agent { method from (line 45) | pub fn from( method from_messages (line 63) | pub fn from_messages( type TabConsoleMessages (line 86) | pub struct TabConsoleMessages { method non_agent_message (line 99) | pub fn non_agent_message(event: String, message: String) -> Self { method from (line 122) | fn from(notification_data: NotificationForAgent) -> Self { type NotificationForAgent (line 112) | pub struct NotificationForAgent { function command_to_string (line 151) | fn command_to_string(cmd: &Command) -> String { type FormatOutput (line 186) | pub trait FormatOutput { method format_console_output (line 187) | fn format_console_output(&self) -> Vec; method format_console_output (line 191) | fn format_console_output(&self) -> Vec { function print_client_error (line 570) | fn print_client_error(msg: &str) -> String { type StripCannon (line 574) | trait StripCannon { method try_strip_prefix (line 575) | fn try_strip_prefix(&self) -> String; method try_strip_prefix (line 583) | fn try_strip_prefix(&self) -> String { function print_wyrm_result_string (line 595) | fn print_wyrm_result_string(encoded_data: &String) -> Vec { type ActiveTabs (line 614) | pub struct ActiveTabs { method from_store (line 622) | pub fn from_store() -> Self { method save_to_store (line 627) | pub fn save_to_store(&self) -> anyhow::Result<()> { method add_tab (line 634) | pub fn add_tab(&mut self, name: &str) { method remove_tab (line 642) | pub fn remove_tab(&mut self, name: &str) { type AgentIdSplit (line 654) | pub enum AgentIdSplit { function get_info_from_agent_id (line 661) | pub fn get_info_from_agent_id<'a>(haystack: &'a str, needle: AgentIdSpli... function get_agent_tab_name (line 681) | pub fn get_agent_tab_name(haystack: &str) -> Option { function resolve_tab_to_agent_id (line 699) | pub fn resolve_tab_to_agent_id( FILE: client/src/models/mod.rs type LoginData (line 6) | pub struct LoginData { constant C2_STORAGE_KEY (line 12) | pub const C2_STORAGE_KEY: &str = "WYRM_C2_ADDR"; constant TAB_STORAGE_KEY (line 13) | pub const TAB_STORAGE_KEY: &str = "WYRM_C2_TABS"; FILE: client/src/net.rs type IsTaskingAgent (line 14) | pub enum IsTaskingAgent { method has_agent_id (line 26) | pub fn has_agent_id(&self) -> Result<(), IsTaskingAgentErr> { type IsTaskingAgentErr (line 20) | pub enum IsTaskingAgentErr { type C2Url (line 35) | pub enum C2Url { method get (line 47) | fn get(&self) -> anyhow::Result { function api_request (line 70) | pub async fn api_request( function prepare_body_data (line 119) | fn prepare_body_data(input: AdminCommand, creds: Option<(String, String)... function make_post (line 133) | async fn make_post(c2_url: &str, body: Value) -> Result bool { FILE: client/src/pages/build_profiles.rs function BuildProfilesPage (line 11) | pub fn BuildProfilesPage() -> impl IntoView { FILE: client/src/pages/dashboard.rs function Dashboard (line 26) | pub fn Dashboard() -> impl IntoView { function ConnectedAgents (line 49) | fn ConnectedAgents(tabs: RwSignal) -> impl IntoView { function MiddleTabBar (line 164) | fn MiddleTabBar() -> impl IntoView { function MessagePanel (line 242) | fn MessagePanel() -> impl IntoView { function CommandInput (line 393) | fn CommandInput() -> impl IntoView { FILE: client/src/pages/file_upload.rs function FileUploadPage (line 16) | pub fn FileUploadPage() -> impl IntoView { FILE: client/src/pages/logged_in_headers.rs function LoggedInHeaders (line 12) | pub fn LoggedInHeaders() -> impl IntoView { function extract_path (line 113) | fn extract_path() -> Option { function create_url_path_signal (line 126) | fn create_url_path_signal() -> RwSignal { FILE: client/src/pages/login.rs function Login (line 12) | pub fn Login() -> impl IntoView { FILE: client/src/pages/logout.rs function Logout (line 9) | pub fn Logout() -> impl IntoView { FILE: client/src/pages/staged_resources.rs type StagedResourcesRowInner (line 11) | pub struct StagedResourcesRowInner { function StagedResourcesPage (line 18) | pub fn StagedResourcesPage() -> impl IntoView { FILE: client/src/tasks/task_dispatch.rs type TaskingError (line 20) | pub enum TaskingError { type DispatchResult (line 34) | pub type DispatchResult = Result>, TaskingError>; function dispatch_task (line 37) | pub async fn dispatch_task(input: String, agent: IsTaskingAgent) -> Disp... function dispatcher (line 66) | async fn dispatcher(tokens: Vec<&str>, raw_input: String, agent: IsTaski... FILE: client/src/tasks/task_impl.rs type TaskDispatchError (line 25) | pub enum TaskDispatchError { function list_processes (line 36) | pub async fn list_processes(agent: &IsTaskingAgent) -> DispatchResult { function change_directory (line 51) | pub async fn change_directory(new_dir: &[&str], agent: &IsTaskingAgent) ... function kill_agent (line 68) | pub async fn kill_agent(agent: &IsTaskingAgent) -> DispatchResult { function kill_process (line 83) | pub async fn kill_process(agent: &IsTaskingAgent, pid: &&str) -> Dispatc... function copy_file (line 111) | pub async fn copy_file(raw_input: String, agent: &IsTaskingAgent) -> Dis... function move_file (line 144) | pub async fn move_file(raw_input: String, agent: &IsTaskingAgent) -> Dis... type FileOperationTarget (line 172) | pub enum FileOperationTarget { function remove_file (line 177) | pub async fn remove_file( function pull_file (line 220) | pub async fn pull_file(target: String, agent: &IsTaskingAgent) -> Dispat... function remove_agent (line 248) | pub async fn remove_agent(agent: &IsTaskingAgent) -> DispatchResult { function unknown_command (line 270) | pub fn unknown_command() -> DispatchResult { function set_sleep (line 286) | pub async fn set_sleep(sleep_time: &str, agent: &IsTaskingAgent) -> Disp... function clear_terminal (line 321) | pub async fn clear_terminal(agent: &IsTaskingAgent) -> DispatchResult { function pwd (line 345) | pub async fn pwd(agent: &IsTaskingAgent) -> DispatchResult { function export_db (line 353) | pub async fn export_db(agent: &IsTaskingAgent) -> DispatchResult { function dir_listing (line 361) | pub async fn dir_listing(agent: &IsTaskingAgent) -> DispatchResult { function show_server_time (line 369) | pub async fn show_server_time() -> DispatchResult { function pillage (line 399) | pub async fn pillage(agent: &IsTaskingAgent) -> DispatchResult { function show_help (line 415) | pub async fn show_help(agent: &IsTaskingAgent) -> DispatchResult { function show_help_for_command (line 471) | pub async fn show_help_for_command(agent: &IsTaskingAgent, command: &str... function run_powershell_command (line 545) | pub async fn run_powershell_command(args: &[&str], agent: &IsTaskingAgen... function file_dropper (line 569) | pub async fn file_dropper(args: &[&str], agent: &IsTaskingAgent) -> Disp... type RegOperationDelQuery (line 623) | pub enum RegOperationDelQuery { function reg_query_del (line 631) | pub async fn reg_query_del( function reg_add (line 701) | pub async fn reg_add(inputs: String, agent: &IsTaskingAgent) -> Dispatch... function dotex (line 763) | pub async fn dotex(inputs: String, agent: &IsTaskingAgent) -> DispatchRe... function whoami (line 799) | pub async fn whoami(agent: &IsTaskingAgent) -> DispatchResult { function spawn (line 807) | pub async fn spawn(raw_input: String, agent: &IsTaskingAgent) -> Dispatc... function run_static_wof (line 830) | pub async fn run_static_wof(agent: &IsTaskingAgent, raw_input: String) -... function inject (line 873) | pub async fn inject(agent: &IsTaskingAgent, raw_input: String) -> Dispat... FILE: client/src/tasks/utils.rs function split_string_slices_to_n (line 31) | pub fn split_string_slices_to_n( type DiscardFirst (line 96) | pub enum DiscardFirst { function tokens_with_no_quotes (line 107) | fn tokens_with_no_quotes() { function tokens_with_quotes_space (line 124) | fn tokens_with_quotes_space() { function tokens_with_quotes (line 138) | fn tokens_with_quotes() { function tokens_bad_count (line 152) | fn tokens_bad_count() { function validate_reg_type (line 161) | pub fn validate_reg_type(input: &str, reg_type: RegType) -> Result<(), (... FILE: implant/build.rs function main (line 10) | fn main() { function write_exports_to_build_dir (line 44) | fn write_exports_to_build_dir() { function build_static_wofs (line 101) | fn build_static_wofs() { function add_symbols (line 163) | fn add_symbols(src: &Path, ffi_builder: &mut String, lookup_builder: &mu... type ArgsPerFolder (line 175) | struct ArgsPerFolder { function parse_wof_directories (line 198) | fn parse_wof_directories() -> std::io::Result>> { function dump_symbols (line 258) | fn dump_symbols(lib: &Path) -> Option> { FILE: implant/src/anti_sandbox/memory.rs constant MIN_ACCEPTABLE_MEMORY (line 5) | const MIN_ACCEPTABLE_MEMORY: u64 = 4000000; function validate_ram_sz_or_panic (line 10) | pub fn validate_ram_sz_or_panic() { FILE: implant/src/anti_sandbox/mod.rs function anti_sandbox (line 9) | pub fn anti_sandbox() { FILE: implant/src/anti_sandbox/trig.rs constant MAX_WAIT_TIME_SECONDS (line 14) | const MAX_WAIT_TIME_SECONDS: u64 = 5 * 60; function trig_mouse_movements (line 29) | pub fn trig_mouse_movements() { function get_pos (line 105) | fn get_pos(point: &mut POINT, live_timer: &(Instant, Duration)) { FILE: implant/src/comms.rs constant MAX_RESPONSE_SZ_BYTES (line 33) | const MAX_RESPONSE_SZ_BYTES: u64 = 1024 * 1024 * 500; function construct_c2_url (line 36) | pub fn construct_c2_url(implant: &Wyrm) -> String { function comms_http_check_in (line 77) | pub fn comms_http_check_in(implant: &mut Wyrm) -> Result, ureq... function http_get (line 131) | fn http_get( function http_post_tasks (line 149) | fn http_post_tasks( function generate_generic_headers (line 185) | fn generate_generic_headers(implant_id: &str, security_token: &str, ua: ... function read_body_with_limit (line 194) | fn read_body_with_limit(response: &mut Response) -> Result... function decode_tasks_stream (line 211) | pub fn decode_tasks_stream(byte_response: &[u8]) -> Vec { function configuration_connection (line 232) | pub fn configuration_connection(implant: &mut Wyrm) -> Result,... function download_file_with_uri_in_memory (line 279) | pub fn download_file_with_uri_in_memory(uri: &str, wyrm: &Wyrm) -> Resul... function upload_file_as_stream (line 290) | pub fn upload_file_as_stream(implant: &Wyrm, ef: &ExfiltratedFile) { function generate_http_agent (line 349) | fn generate_http_agent(implant: &Wyrm) -> Agent { FILE: implant/src/entry.rs function start_wyrm (line 25) | pub fn start_wyrm() { function on_start_evasion (line 56) | fn on_start_evasion() { function first_check_in (line 69) | pub fn first_check_in(implant: &mut Wyrm) { FILE: implant/src/evasion/amsi.rs function evade_amsi (line 24) | pub fn evade_amsi() -> bool { function amsi_patch_ntdll (line 49) | fn amsi_patch_ntdll() { function amsi_veh_squared (line 87) | fn amsi_veh_squared() -> bool { FILE: implant/src/evasion/etw.rs function etw_bypass (line 12) | pub(super) fn etw_bypass() { function evade_etw_current_process_overwrite_ntdll (line 25) | fn evade_etw_current_process_overwrite_ntdll() -> Result<(), ExportResol... FILE: implant/src/evasion/mod.rs function run_evasion (line 7) | pub fn run_evasion() { FILE: implant/src/evasion/veh.rs function veh_handler (line 15) | pub(super) unsafe extern "system" fn veh_handler(p_ep: *mut EXCEPTION_PO... function addr_of_amsi_scan_buf (line 67) | pub(super) fn addr_of_amsi_scan_buf() -> Option<*const c_void> { FILE: implant/src/execute/dotnet.rs type DotnetError (line 28) | pub enum DotnetError { method to_string (line 44) | fn to_string(&self) -> String { constant GUID_META_HOST (line 111) | const GUID_META_HOST: GUID = GUID { constant GUID_RIID (line 118) | const GUID_RIID: GUID = GUID { constant GUID_RNTIME_INFO (line 125) | const GUID_RNTIME_INFO: GUID = GUID { constant GUID_COR_RUNTIME (line 132) | const GUID_COR_RUNTIME: GUID = GUID { constant GUID_APP_DOMAIN (line 139) | const GUID_APP_DOMAIN: GUID = GUID { function execute_dotnet_current_process (line 150) | pub fn execute_dotnet_current_process(metadata: &Option) -> Wyrm... function execute_dotnet_assembly (line 175) | fn execute_dotnet_assembly(buf: &[u8], args: &[String]) -> Result Result<*mut SAFEARRAY, DotnetError> { function args_to_safe_array (line 291) | fn args_to_safe_array(args: &[String]) -> Result<*mut SAFEARRAY, DotnetE... function create_safe_array (line 329) | fn create_safe_array(buf: &[u8]) -> Result<*mut SAFEARRAY, DotnetError> { function create_clr_instance (line 350) | fn create_clr_instance() -> Result<*mut ICLRMetaHost, DotnetError> { function get_runtime_v4 (line 362) | fn get_runtime_v4(meta: *mut ICLRMetaHost) -> Result<*mut ICLRRuntimeInf... function get_cor_runtime_host (line 376) | fn get_cor_runtime_host( function start_runtime (line 390) | fn start_runtime(host: *mut ICorRuntimeHost) -> Result<(), DotnetError> { function get_default_appdomain (line 401) | fn get_default_appdomain(host: *mut ICorRuntimeHost) -> Result<*mut _App... FILE: implant/src/execute/ffi.rs type IUnknownVtbl (line 12) | pub struct IUnknownVtbl { type IUnknown (line 23) | pub struct IUnknown { type ICLRMetaHostVtbl (line 28) | pub struct ICLRMetaHostVtbl { type ICLRMetaHost (line 46) | pub struct ICLRMetaHost { type ICorRuntimeHost (line 51) | pub struct ICorRuntimeHost { type ICorRuntimeHostVtbl (line 56) | pub struct ICorRuntimeHostVtbl { type ICLRRuntimeInfo (line 117) | pub struct ICLRRuntimeInfo { type ICLRRuntimeInfoVtbl (line 122) | pub struct ICLRRuntimeInfoVtbl { type _AppDomain (line 184) | pub struct _AppDomain { type _AppDomainVtbl (line 189) | pub struct _AppDomainVtbl { type _Assembly (line 267) | pub struct _Assembly { type _AssemblyVtbl (line 272) | pub struct _AssemblyVtbl { type _MethodInfo (line 335) | pub struct _MethodInfo { type _MethodInfoVtbl (line 340) | pub struct _MethodInfoVtbl { FILE: implant/src/lib.rs function DllMain (line 33) | unsafe extern "system" fn DllMain(_hmod_instance: HINSTANCE, dw_reason: ... function Start (line 45) | unsafe extern "system" fn Start() { FILE: implant/src/main.rs function main (line 25) | fn main() { FILE: implant/src/main_svc.rs function ServiceMain (line 56) | pub unsafe extern "system" fn ServiceMain(_: u32, _: *mut PWSTR) { function svc_start (line 60) | fn svc_start() { function service_handler (line 76) | unsafe extern "system" fn service_handler(control: u32) { function main (line 86) | fn main() { FILE: implant/src/native/accounts.rs function get_logged_in_username (line 33) | pub fn get_logged_in_username() -> Option { type ProcessIntegrityLevel (line 58) | pub enum ProcessIntegrityLevel { method fmt (line 68) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function get_process_integrity_level (line 80) | pub fn get_process_integrity_level() -> Option { function whoami (line 147) | pub fn whoami() -> Option { function format_token_permissions (line 248) | fn format_token_permissions(h_tok: *mut c_void) -> WyrmResult { function luid_to_name (line 299) | fn luid_to_name(luid: &LUID) -> String { function attrs_to_state (line 324) | fn attrs_to_state(attrs: u32) -> &'static str { function lookup_account_sid_w (line 336) | fn lookup_account_sid_w(psid: PSID) -> Result<(String, String), u32> { FILE: implant/src/native/filesystem.rs function pillage (line 18) | pub fn pillage() -> Option { function get_file_listings_from_dir_and_subdirs (line 36) | fn get_file_listings_from_dir_and_subdirs( function dir_listing (line 98) | pub fn dir_listing(cwd: &Path) -> Option> { type MoveCopyAction (line 140) | pub enum MoveCopyAction { function move_or_copy_file (line 148) | pub fn move_or_copy_file( function rm_from_fs (line 217) | pub fn rm_from_fs( function drop_file_to_disk (line 259) | pub fn drop_file_to_disk( function change_directory (line 302) | pub fn change_directory( type PathParseType (line 353) | pub enum PathParseType { function parse_path (line 360) | pub fn parse_path( function pull_file (line 464) | pub fn pull_file( FILE: implant/src/native/processes.rs function running_process_details (line 31) | pub fn running_process_details() -> Option { function get_pids (line 45) | fn get_pids() -> Result, u32> { function lookup_process_name (line 93) | fn lookup_process_name(handle: HANDLE, pid: u32) -> String { function lookup_process_owner_name (line 121) | fn lookup_process_owner_name(pid: u32) -> String { function kill_process (line 247) | pub fn kill_process(pid: &Task) -> Option> { function enum_all_processes (line 279) | fn enum_all_processes() -> Option> { FILE: implant/src/native/registry.rs function reg_query (line 14) | pub fn reg_query(raw_input: &Option) -> Option { function reg_del (line 45) | pub fn reg_del(raw_input: &Option) -> Option { function reg_add (line 72) | pub fn reg_add(raw_input: &Option) -> Option { function query_key_plus_value (line 177) | fn query_key_plus_value(path: String, value: String) -> Option Option> { function value_to_string (line 283) | fn value_to_string(data: &Value) -> String { function val_u32_to_str (line 295) | fn val_u32_to_str(value: &Value) -> String { function val_u64_to_str (line 299) | fn val_u64_to_str(value: &Value) -> String { function val_bytes_to_str (line 303) | fn val_bytes_to_str(value: &Value) -> String { function val_string_to_str (line 316) | fn val_string_to_str(value: &[u8]) -> String { function strip_hive (line 325) | fn strip_hive<'a>(path: &'a str) -> Result<&'a str, RegistryError> { function extract_hive_from_str (line 335) | fn extract_hive_from_str<'a>(path: &'a str) -> Result<&'a Key, RegistryE... type RegistryError (line 356) | pub enum RegistryError { function get_key_strip_hive (line 360) | fn get_key_strip_hive<'a>(path: &'a str) -> Option<(&'a Key, &'a str)> { function delete_key (line 376) | fn delete_key(path: String) -> Option> { function delete_reg_value (line 399) | fn delete_reg_value(path: String, value: String) -> Option, implant: &Wyrm) -> Optio... FILE: implant/src/spawn_inject/early_cascade.rs function early_cascade_spawn_child (line 29) | pub(super) fn early_cascade_spawn_child(mut buf: Vec, spawn_as: &str... function execute_early_cascade (line 174) | fn execute_early_cascade( function write_image_rw (line 241) | fn write_image_rw(h_process: HANDLE, buf: &mut Vec) -> Result<*const... function encode_system_ptr (line 285) | fn encode_system_ptr(ptr: *const c_void) -> *const c_void { FILE: implant/src/spawn_inject/injection.rs function virgin_inject (line 23) | pub fn virgin_inject(buf: &[u8], pid: u32) -> WyrmResult { FILE: implant/src/spawn_inject/mod.rs type SpawnMethod (line 10) | pub enum SpawnMethod { type InjectMethod (line 14) | pub enum InjectMethod { type Inject (line 19) | pub struct Inject; method inject_wyrm (line 22) | pub fn inject_wyrm(buf: &[u8], method: InjectMethod, pid: u32) -> Wyrm... type Spawn (line 29) | pub struct Spawn; method spawn_child (line 32) | pub fn spawn_child(buf: Vec, method: SpawnMethod, spawn_as: &str) ... FILE: implant/src/stubs/rdi.rs type VirtualAlloc (line 43) | type VirtualAlloc = unsafe extern "system" fn( type LoadLibraryA (line 50) | type LoadLibraryA = unsafe extern "system" fn(PCSTR) -> HMODULE; type VirtualProtect (line 52) | type VirtualProtect = unsafe extern "system" fn( type GetProcAddress (line 59) | type GetProcAddress = unsafe extern "system" fn(HMODULE, PCSTR) -> FARPROC; type FlushInstructionCache (line 61) | type FlushInstructionCache = type GetCurrentProcess (line 64) | type GetCurrentProcess = unsafe extern "system" fn() -> HANDLE; type RdiExports (line 68) | struct RdiExports { method new (line 84) | fn new() -> Option { type RdiErrorCodes (line 144) | enum RdiErrorCodes { function Load (line 156) | pub unsafe extern "system" fn Load(image_base: *mut c_void) -> u32 { function relocate_and_commit (line 259) | fn relocate_and_commit( function process_relocations (line 335) | fn process_relocations( function patch_iat (line 412) | fn patch_iat( function get_addr_as_rva (line 486) | fn get_addr_as_rva(base_ptr: *mut u8, offset: usize) -> *mut T { function write_payload (line 491) | fn write_payload( function nostd_patch_etw_current_process (line 533) | fn nostd_patch_etw_current_process(exports: &RdiExports) { function calculate_image_base (line 565) | fn calculate_image_base() -> Option<*mut c_void> { function is_valid_pe_base (line 585) | fn is_valid_pe_base(addr: usize) -> bool { FILE: implant/src/stubs/shim.rs type ShimHardReturnErrors (line 11) | enum ShimHardReturnErrors { type NtQueueApcThread (line 18) | type NtQueueApcThread = unsafe extern "system" fn( function Shim (line 30) | pub extern "system" fn Shim() -> u32 { FILE: implant/src/utils/allocate.rs type ProcessHeapAlloc (line 6) | pub struct ProcessHeapAlloc; method alloc (line 9) | unsafe fn alloc(&self, layout: Layout) -> *mut u8 { method alloc_zeroed (line 12) | unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { method dealloc (line 15) | unsafe fn dealloc(&self, ptr: *mut u8, _layout: Layout) { method realloc (line 20) | unsafe fn realloc(&self, ptr: *mut u8, _layout: Layout, new_size: usize)... FILE: implant/src/utils/comptime.rs type SleepSeconds (line 7) | pub type SleepSeconds = u64; type ApiEndpoint (line 8) | pub type ApiEndpoint = Vec; type SecurityToken (line 9) | pub type SecurityToken = String; type Useragent (line 10) | pub type Useragent = String; type Port (line 11) | pub type Port = u16; type URL (line 12) | pub type URL = String; type AgentNameByOperator (line 13) | pub type AgentNameByOperator = String; type Jitter (line 14) | pub type Jitter = u64; type WinGlobalMutex (line 15) | pub type WinGlobalMutex = String; type SpawnAs (line 16) | pub type SpawnAs = String; constant SPAWN_AS_IMAGE_FALLBACK (line 18) | const SPAWN_AS_IMAGE_FALLBACK: &str = "C:\\Windows\\System32\\svchost.exe"; function translate_build_artifacts (line 22) | pub fn translate_build_artifacts() -> ( FILE: implant/src/utils/console.rs function get_console_log (line 26) | pub fn get_console_log() -> &'static Mutex> { function init_agent_console (line 30) | pub fn init_agent_console() { function start_stdout_reader_thread (line 76) | fn start_stdout_reader_thread() { function thread_loop (line 80) | unsafe extern "system" fn thread_loop(_: *mut c_void) -> u32 { function print_success (line 134) | pub fn print_success(msg: impl Display) { function print_info (line 139) | pub fn print_info(msg: impl Display) { function print_failed (line 144) | pub fn print_failed(msg: impl Display) { FILE: implant/src/utils/export_comptime.rs function internal_dll_start (line 33) | pub fn internal_dll_start(start_type: StartType) { function start_in_os_thread_no_mutex_check (line 57) | fn start_in_os_thread_no_mutex_check() { function runpoline (line 68) | unsafe extern "system" fn runpoline(_p1: *mut c_void) -> u32 { function start_in_os_thread_mutex_check (line 74) | fn start_in_os_thread_mutex_check() { function check_mutex (line 84) | fn check_mutex() -> Option<()> { type StartType (line 103) | pub enum StartType { FILE: implant/src/utils/pe_stomp.rs function stomp_pe_header_bytes (line 5) | pub fn stomp_pe_header_bytes(buf: &mut Vec) { FILE: implant/src/utils/proxy.rs type ProxyConfig (line 18) | pub struct ProxyConfig { type ProxyError (line 23) | pub enum ProxyError { function resolve_web_proxy (line 33) | pub fn resolve_web_proxy(implant: &Wyrm) -> Result, ... function global_free (line 227) | fn global_free(p: *mut c_void) { function winhttp_proxy_to_url (line 233) | fn winhttp_proxy_to_url(raw: &str, target_is_https: bool) -> Option [u8; MAX_PATH as usize] { FILE: implant/src/utils/svc_controls.rs function update_service_status (line 24) | pub unsafe fn update_service_status(h_status: SERVICE_STATUS_HANDLE, sta... function stop_svc_and_exit (line 42) | pub fn stop_svc_and_exit() -> ! { FILE: implant/src/utils/time_utils.rs function epoch_now (line 3) | pub fn epoch_now() -> i64 { FILE: implant/src/wofs/mod.rs type FfiShape (line 9) | type FfiShape = unsafe extern "C" fn(*const c_void) -> i32; function get_wof_fn_ptr (line 11) | fn get_wof_fn_ptr(needle: &str) -> Option { function call_static_wof_no_arg (line 24) | pub fn call_static_wof_no_arg(fn_name: &str) -> WyrmResult { function call_static_wof_with_arg (line 39) | pub fn call_static_wof_with_arg(fn_name: &str, arg: &str) -> WyrmResult<... FILE: implant/src/wyrm.rs type RetriesBeforeExit (line 61) | pub struct RetriesBeforeExit { type Wyrm (line 68) | pub struct Wyrm { method new (line 98) | pub fn new() -> Self { method get_tasks_http (line 160) | pub fn get_tasks_http(&mut self) { method dispatch_tasks (line 177) | pub fn dispatch_tasks(&mut self) { method update_sleep_time (line 410) | fn update_sleep_time(&mut self, time_as_string: Option) { method push_completed_task (line 450) | pub fn push_completed_task(&mut self, task: &Task, data: Option) method update_implant_sleep_time (line 502) | fn update_implant_sleep_time(&mut self, task: Task) { method conduct_first_run_recon (line 518) | pub fn conduct_first_run_recon(&mut self) { method try_get_proxy (line 563) | pub fn try_get_proxy(&self) -> Option { type C2Config (line 86) | pub struct C2Config { function build_implant_id (line 574) | fn build_implant_id() -> String { function get_hostname (line 620) | pub fn get_hostname() -> String { function calculate_sleep_seconds (line 633) | pub fn calculate_sleep_seconds(wyrm: &Wyrm) -> u64 { type WyrmMutex (line 674) | struct WyrmMutex { method new (line 687) | fn new(mtx_name: &str) -> Option { method drop (line 745) | fn drop(&mut self) { FILE: loader/build.rs constant ENCRYPTION_KEY (line 9) | const ENCRYPTION_KEY: u8 = 0x90; function main (line 11) | fn main() { function prepare_wyrm_dll (line 36) | fn prepare_wyrm_dll() { function write_exports_to_build_dir (line 72) | fn write_exports_to_build_dir() { FILE: loader/src/export_comptime.rs function internal_dll_start (line 31) | pub fn internal_dll_start(start_type: StartType) { function start_in_os_thread_no_mutex_check (line 46) | fn start_in_os_thread_no_mutex_check() { function start_in_os_thread_mutex_check (line 57) | fn start_in_os_thread_mutex_check() { function runpoline (line 66) | unsafe extern "system" fn runpoline(_p1: *mut c_void) -> u32 { type StartType (line 73) | pub enum StartType { function check_mutex (line 79) | fn check_mutex() -> Option<()> { FILE: loader/src/injector.rs constant DLL_BYTES (line 16) | const DLL_BYTES: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/rdll_... constant ENCRYPTION_KEY (line 17) | const ENCRYPTION_KEY: u8 = 0x90; function inject_current_process (line 20) | pub fn inject_current_process() { function find_export_address (line 71) | fn find_export_address( function rva_from_file (line 121) | unsafe fn rva_from_file( FILE: loader/src/lib.rs function panic (line 14) | fn panic(_info: &core::panic::PanicInfo) -> ! { function DllMain (line 20) | unsafe extern "system" fn DllMain(_hmod_instance: HINSTANCE, dw_reason: ... FILE: loader/src/main.rs function panic (line 11) | fn panic(_info: &core::panic::PanicInfo) -> ! { function main (line 16) | pub extern "C" fn main() -> i32 { FILE: loader/src/main_svc.rs function panic (line 24) | fn panic(_info: &core::panic::PanicInfo) -> ! { function get_service_name_wide (line 30) | fn get_service_name_wide() -> [u16; 256] { function ServiceMain (line 49) | pub unsafe extern "system" fn ServiceMain(_: u32, _: *mut PWSTR) { function svc_start (line 53) | fn svc_start() { function service_handler (line 68) | unsafe extern "system" fn service_handler(control: u32) { function main (line 76) | pub extern "C" fn main() -> i32 { function update_service_status (line 96) | pub unsafe fn update_service_status(h_status: SERVICE_STATUS_HANDLE, sta... FILE: loader/src/utils.rs function generate_mutex_name (line 9) | pub fn generate_mutex_name(mutex: &str) -> [u8; MAX_PATH as usize] { FILE: shared/src/lib.rs type StagedResourceDataNoSqlx (line 9) | pub struct StagedResourceDataNoSqlx { FILE: shared/src/net.rs constant NET_XOR_KEY (line 5) | const NET_XOR_KEY: u8 = 0x3d; constant STR_CRYPT_XOR_KEY (line 6) | pub const STR_CRYPT_XOR_KEY: u8 = 0x1f; constant ADMIN_AUTH_SEPARATOR (line 8) | pub const ADMIN_AUTH_SEPARATOR: &str = "=authdivider="; constant ADMIN_ENDPOINT (line 9) | pub const ADMIN_ENDPOINT: &str = "admin"; constant ADMIN_LOGIN_ENDPOINT (line 10) | pub const ADMIN_LOGIN_ENDPOINT: &str = "admin_login"; constant NOTIFICATION_CHECK_AGENT_ENDPOINT (line 12) | pub const NOTIFICATION_CHECK_AGENT_ENDPOINT: &str = "check_notifs"; constant ADMIN_HEALTH_CHECK_ENDPOINT (line 14) | pub const ADMIN_HEALTH_CHECK_ENDPOINT: &str = "/adm/is_logged_in"; type CompletedTasks (line 16) | pub type CompletedTasks = Vec>; type TasksNetworkStream (line 17) | pub type TasksNetworkStream = Vec>; type AdminLoginPacket (line 20) | pub struct AdminLoginPacket { type XorEncode (line 25) | pub trait XorEncode { method xor_network_stream (line 26) | fn xor_network_stream(self) -> Self; method xor_network_stream (line 30) | fn xor_network_stream(mut self) -> Self { function encode_u16buf_to_u8buf (line 39) | pub fn encode_u16buf_to_u8buf(input: &[u16]) -> Vec { function decode_u8buf_to_u16buf (line 51) | pub fn decode_u8buf_to_u16buf(input: &[u8]) -> Vec { function decode_http_response (line 64) | pub fn decode_http_response(byte_response: &[u8]) -> Task { FILE: shared/src/stomped_structs.rs type Process (line 13) | pub struct Process { type RegQueryResult (line 26) | pub struct RegQueryResult { type Error (line 34) | type Error = Vec; method try_from (line 36) | fn try_from(value: &str) -> Result> { method client_print_formatted (line 61) | pub fn client_print_formatted(&self) -> Vec { FILE: shared/src/task_types.rs type FileCopyInner (line 5) | pub type FileCopyInner = (String, String); type BuildAllBins (line 9) | pub type BuildAllBins = (String, String, String); type RegQueryInner (line 11) | pub type RegQueryInner = (String, Option); type RegType (line 14) | pub enum RegType { type RegAddInner (line 29) | pub type RegAddInner = (String, String, String, RegType); type DotExDataForImplant (line 33) | pub type DotExDataForImplant = (Vec, Vec); FILE: shared/src/tasks.rs type Command (line 22) | pub enum Command { method into (line 142) | fn into(self) -> u32 { method from_u32 (line 148) | pub fn from_u32(id: u32) -> Self { method to_u16_tuple_le (line 153) | pub fn to_u16_tuple_le(&self) -> (u16, u16) { method is_autocomplete (line 161) | pub fn is_autocomplete(&self) -> bool { type FileDropMetadata (line 66) | pub struct FileDropMetadata { method into (line 75) | fn into(self) -> String { method from (line 116) | fn from(value: &str) -> Self { constant DELIM_FILE_DROP_METADATA (line 72) | pub const DELIM_FILE_DROP_METADATA: &str = ","; method fmt (line 171) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type DotExInner (line 208) | pub struct DotExInner { method from (line 233) | pub fn from(tool_path: String, args: Vec) -> Self { type InjectInnerForAdmin (line 216) | pub struct InjectInnerForAdmin { type InjectInnerForPayload (line 225) | pub struct InjectInnerForPayload { type AdminCommand (line 239) | pub enum AdminCommand { type Task (line 282) | pub struct Task { method from (line 290) | pub fn from(id: i32, command: Command, metadata: Option) -> Se... method deserialise_metadata (line 301) | pub fn deserialise_metadata<'a, T: Deserialize<'a>>( method fmt (line 313) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type FirstRunData (line 328) | pub struct FirstRunData { function tasks_contains_kill_agent (line 349) | pub fn tasks_contains_kill_agent(tasks: &T) -> bool type WyrmResult (line 357) | pub enum WyrmResult { method fmt (line 363) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method default (line 372) | fn default() -> Self { function unwrap (line 382) | pub fn unwrap(self) -> T { function is_err (line 389) | pub fn is_err(&self) -> bool { function is_empty (line 400) | pub fn is_empty(&self) -> bool { type NewAgentStaging (line 414) | pub struct NewAgentStaging { method from_staged_file_metadata (line 447) | pub fn from_staged_file_metadata(staging_endpoint: &str, download_name... type StageType (line 477) | pub enum StageType { method fmt (line 485) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type FileUploadStagingFromClient (line 497) | pub struct FileUploadStagingFromClient { type PowershellOutput (line 505) | pub struct PowershellOutput { type ExfiltratedFile (line 514) | pub struct ExfiltratedFile { method new (line 524) | pub fn new(hostname: String, file_path: String, file_data: Vec) ->... type BaBData (line 534) | pub struct BaBData { method from (line 539) | pub fn from(implant_key: String) -> Self { type Exports (line 546) | pub type Exports = Option>; type ExportConfig (line 549) | pub struct ExportConfig { type StringStomp (line 558) | pub struct StringStomp { method from (line 569) | pub fn from(string_stomp: &Option) -> Option { FILE: shared_c2_client/src/lib.rs constant ADMIN_AUTH_SEPARATOR (line 6) | pub const ADMIN_AUTH_SEPARATOR: &str = "=authdivider="; type NotificationsForAgents (line 9) | pub type NotificationsForAgents = Vec; type AgentC2MemoryNotifications (line 15) | pub type AgentC2MemoryNotifications = (String, bool, Option); type NotificationForAgent (line 20) | pub struct NotificationForAgent { function command_to_string (line 30) | pub fn command_to_string(cmd: &Command) -> String { type MitreTTP (line 66) | pub struct MitreTTP<'a> { function from (line 74) | pub fn from( type MapToMitre (line 89) | pub trait MapToMitre<'a> { method map_to_mitre (line 90) | fn map_to_mitre(&'a self) -> MitreTTP<'a>; method map_to_mitre (line 94) | fn map_to_mitre(&'a self) -> MitreTTP<'a> { type TaskExport (line 264) | pub struct TaskExport<'a> { function new (line 270) | pub fn new(task: &'a Task, mitre: MitreTTP<'a>) -> Self { type StagedResourceData (line 276) | pub struct StagedResourceData { FILE: shared_no_std/src/export_resolver.rs type ExportResolveError (line 22) | pub enum ExportResolveError { function get_module_base (line 36) | fn get_module_base(module_name: &str) -> Option { function to_lowercase_ascii (line 109) | fn to_lowercase_ascii(c: u8) -> u8 { function strings_equal_ignore_case (line 114) | fn strings_equal_ignore_case(a: &[u8], b: &[u8]) -> bool { function resolve_address (line 140) | pub fn resolve_address( function get_rva (line 232) | fn get_rva(base_ptr: *mut u8, offset: usize) -> *mut T { function find_export_address (line 237) | pub fn find_export_address( function rva_from_file (line 282) | unsafe fn rva_from_file( type ExportError (line 313) | pub enum ExportError { function find_export_from_unmapped_file (line 321) | pub fn find_export_from_unmapped_file( function calculate_memory_delta (line 379) | pub fn calculate_memory_delta(buf_start_address: usize, fn_ptr_address: ... function find_entrypoint_from_unmapped_image (line 389) | pub fn find_entrypoint_from_unmapped_image( FILE: shared_no_std/src/memory.rs constant G_PFNSE_DLLLOADED_PATTERN (line 9) | const G_PFNSE_DLLLOADED_PATTERN: &[u8] = &[ constant G_SHIMS_ENABLED_PATTERN (line 21) | const G_SHIMS_ENABLED_PATTERN: &[u8] = &[ type ShimErrors (line 27) | pub enum ShimErrors { function locate_shim_pointers (line 36) | pub fn locate_shim_pointers() -> Result { type EarlyCascadePointers (line 101) | pub struct EarlyCascadePointers { function scan_module_for_byte_pattern (line 119) | pub fn scan_module_for_byte_pattern(