Agent API_p9 - grisuno/LazyOwn GitHub Wiki

API (page 9 of 23)

Previous: API_p8.md

modules/LazyOwnExplorer.py

modules/adcs_attacks.py

Imported by: cli/commands/exploit_migrated.py

  • CertificateTemplate.esc_vulnerabilities (method) modules/adcs_attacks.py:35 def esc_vulnerabilities(self) -- Determine which ESC attack paths apply to this template.
  • ADCSCertipyWrapper.__init__ (method) modules/adcs_attacks.py:80 def __init__(self, certipy_path, timeout)
  • ADCSCertipyWrapper.find_certificate_authorities (method) modules/adcs_attacks.py:113 def find_certificate_authorities(self, username, password, domain, dc_ip, hashes) -- Enumerate certificate authorities in an Active Directory domain.
  • ADCSCertipyWrapper.enumerate_templates (method) modules/adcs_attacks.py:189 def enumerate_templates(self, username, password, domain, dc_ip, hashes) -- Enumerate vulnerable certificate templates.
  • ADCSCertipyWrapper.request_certificate_esc1 (method) modules/adcs_attacks.py:268 def request_certificate_esc1(self, username, password, domain, dc_ip, ca_name, template_name, target_user, output_file) -- ESC1: Request a certificate with a user-supplied subject alternative name.
  • ADCSCertipyWrapper.request_certificate_esc8 (method) modules/adcs_attacks.py:322 def request_certificate_esc8(self, username, password, domain, dc_ip, ca_server, template_name, output_file) -- ESC8: HTTP-based certificate enrollment (NTLM relay to AD CS).
  • ADCSCertipyWrapper.authenticate_with_certificate (method) modules/adcs_attacks.py:367 def authenticate_with_certificate(self, cert_file, domain, dc_ip, username) -- Authenticate to the domain using a certificate and retrieve NT hash.
  • ADCSCertipyWrapper.assess_vulnerability (method) modules/adcs_attacks.py:411 def assess_vulnerability(self, username, password, domain, dc_ip, hashes) -- Run a full AD CS vulnerability assessment.

modules/agent_runner.py

Depends on: core/logging.py, modules/ai_model.py, modules/llm_factory.py, modules/logging_config.py Imported by: modules/lazy_agent.py, modules/vulnbot.py, tests/test_lazy_streaming.py

modules/ai_exploit_chain.py

Depends on: modules/autonomous_exploit_engine.py Imported by: cli/commands/pwn.py, skills/lazyown_mcp.py

  • AIExploitChainer.__init__ (method) modules/ai_exploit_chain.py:259 def __init__(self)
  • AIExploitChainer.reason (method) modules/ai_exploit_chain.py:285 def reason(self, context) -- Analyze context failures and produce the next best exploit candidate.
  • AIExploitChainer.evaluate_failure (method) modules/ai_exploit_chain.py:306 def evaluate_failure(result) -- Classify the reason for an exploit failure by output pattern matching.
  • AIExploitChainer.select_next_strategy (method) modules/ai_exploit_chain.py:318 def select_next_strategy(self, context) -- Select the next strategy to attempt based on context and failures.
  • AIExploitChainer.estimate_confidence (method) modules/ai_exploit_chain.py:349 def estimate_confidence(self, strategy, profile) -- Estimate confidence (0.0-1.0) for a strategy against a target profile.
  • AIExploitChainer.build_chain_plan (method) modules/ai_exploit_chain.py:391 def build_chain_plan(self, context) -- Build a full multi-step exploitation plan following the kill chain.
  • AIExploitChainer.adapt_chain (method) modules/ai_exploit_chain.py:428 def adapt_chain(self, context, new_info) -- Adapt the chain plan based on newly discovered information.

modules/ai_fallback.py

Depends on: modules/llm_factory.py, modules/toposwarm_bridge.py Imported by: modules/recommender.py, modules/timeline_narrator.py

  • call (function) modules/ai_fallback.py:254 def call(prompt, system, api_key, max_tokens, temperature) -- Call Groq → fallback to Ollama → fallback to TopoSwarm local brain → error.

modules/ai_model.py

Depends on: core/logging.py, modules/llm_factory.py Imported by: contrib/legacy/lazyllmchat.py, modules/agent_runner.py, modules/llm_client.py, modules/llm_factory.py, modules/vulnbot.py, modules/yaml_generator.py

modules/amsi.c

  • LoadNtFunctions (function) modules/amsi.c:38 void LoadNtFunctions() -- Función para cargar las funciones dinámicamente
  • AMS1patch_OpenSession_jne (function) modules/amsi.c:66 void AMS1patch_OpenSession_jne(HANDLE hproc) -- Técnica de Saad, también conocido como @D1rkMtr (https://twitter.com/D1rkMtr/)...
  • AMS1patch_OpenSession_ret (function) modules/amsi.c:116 void AMS1patch_OpenSession_ret(HANDLE hproc)
  • AMS1patch_ScanBuffer_ret (function) modules/amsi.c:166 void AMS1patch_ScanBuffer_ret(HANDLE hproc)
  • AMS1patch_RastaMouse (function) modules/amsi.c:215 void AMS1patch_RastaMouse(HANDLE hproc)
  • AMS1patch_E_ACCESSDENIED (function) modules/amsi.c:274 void AMS1patch_E_ACCESSDENIED(HANDLE hproc)
  • AMS1patch_E_HANDLE (function) modules/amsi.c:326 void AMS1patch_E_HANDLE(HANDLE hproc)
  • AMS1patch_E_OUTOFMEMORY (function) modules/amsi.c:378 void AMS1patch_E_OUTOFMEMORY(HANDLE hproc)
  • main (function) modules/amsi.c:428 int main(int argc, char** argv)

modules/amt_auth_bypass.py

modules/apt_playbooks.py

Depends on: core/console.py, modules/atomic_resolver.py Imported by: cli/commands/command_and_control_migrated.py, cli/lazy_orchestrator.py, cli/recommendation_signals.py, modules/atomic_exploit_bridge.py, modules/operation.py, tests/test_atomic_loop.py

modules/asset_graph.py

Imported by: skills/autonomous_daemon.py, tests/test_autonomous_ops.py

  • asset_key (function) modules/asset_graph.py:28 def asset_key(asset_type, value, parent_key) -- Compute the stable deduplication key for an asset.
  • AssetGraph.__init__ (method) modules/asset_graph.py:73 def __init__(self, config) -- Initialize empty graphs and anchor indexes.
  • AssetGraph.upsert_asset (method) modules/asset_graph.py:82 def upsert_asset(self, asset_type, value, parent_key, company) -- Insert or refresh an asset and return the canonical node.
  • AssetGraph.add_node (method) modules/asset_graph.py:108 def add_node(self, task_id, kind, text, parent_id, payload) -- Append an exploration node to a task chain.
  • AssetGraph.add_fact (method) modules/asset_graph.py:123 def add_fact(self, task_id, text, parent_id, payload) -- Append a fact node to a task chain.
  • AssetGraph.add_finding (method) modules/asset_graph.py:128 def add_finding(self, task_id, text, parent_id, payload) -- Append a finding node to a task chain.
  • AssetGraph.anchor (method) modules/asset_graph.py:133 def anchor(self, exploration_id, key) -- Link an exploration node to an asset key.
  • AssetGraph.assets_for_node (method) modules/asset_graph.py:145 def assets_for_node(self, exploration_id) -- List assets anchored to one exploration node.
  • AssetGraph.nodes_for_asset (method) modules/asset_graph.py:151 def nodes_for_asset(self, key) -- List exploration nodes anchored to one asset.
  • AssetGraph.coverage (method) modules/asset_graph.py:157 def coverage(self, task_id) -- Report tested versus total assets for a task.
  • AssetGraph.mirror_to_campaign (method) modules/asset_graph.py:170 def mirror_to_campaign(self, db, world_model, workspace_id) -- Mirror graph assets into the campaign database and world model.
  • coverage_for (function) modules/asset_graph.py:214 def coverage_for(db, workspace_id, scope) -- Report tested scope assets versus total scope from the campaign db.

modules/atomic_cli.py

Depends on: core/console.py, core/hardening.py, core/logging.py, modules/atomic_resolver.py, utils.py Imported by: cli/commands/command_and_control_migrated.py

  • parse_atomic_line (function) modules/atomic_cli.py:37 def parse_atomic_line(line) -- Parse free-form CLI args into a structured request.
  • run_atomic_tests (function) modules/atomic_cli.py:185 def run_atomic_tests(params, line, shell) -- Execute the atomic_tests workflow (secure + agent-safe).
  • run_atomic_gen (function) modules/atomic_cli.py:325 def run_atomic_gen(params, line, shell) -- Generate test + cleanup scripts for one technique or GUID.

modules/atomic_enricher.py

Depends on: core/logging.py Imported by: skills/lazyown_groq_agents.py, skills/lazyown_mcp.py, skills/lazyown_parquet_db.py, tests/test_core_modules.py

  • enrich (function) modules/atomic_enricher.py:173 def enrich(force) -- Build enriched parquet.
  • load_enriched (function) modules/atomic_enricher.py:215 def load_enriched() -- Load enriched parquet, building it first if it doesn't exist.
  • query_atomic (function) modules/atomic_enricher.py:232 def query_atomic(keyword, mitre_id, platform, scope, has_prereqs, complexity, limit, include_command) -- Structured query over the enriched Atomic Red Team technique catalogue.

modules/atomic_exploit_bridge.py

Depends on: core/logging.py, core/safe_exec.py, modules/apt_playbooks.py, modules/atomic_resolver.py, modules/c2_surfaces.py, modules/intel_fusion.py, modules/killchain.py, modules/lazy_intel.py, modules/obs_parser.py, modules/world_model.py Imported by: cli/commands/command_and_control_migrated.py, modules/autonomous_exploit_engine.py, modules/c2_agent.py, skills/lazyown_mcp.py, tests/test_atomic_exploit_bridge.py, tests/test_c2_surfaces.py

modules/atomic_resolver.py

Depends on: core/logging.py, core/safe_exec.py Imported by: cli/commands/command_and_control_migrated.py, modules/apt_playbooks.py, modules/atomic_cli.py, modules/atomic_exploit_bridge.py, modules/ttpscope_bridge.py, skills/lazyown_mcp.py, tests/test_atomic_loop.py, tests/test_atomic_resolver.py

modules/attack_surface3d.py

Depends on: cli/surface_graph.py, modules/estorides_fusion.py, modules/finding_lifecycle.py, modules/intel_fusion.py Imported by: cli/commands/surface.py, lazyc2.py, tests/test_attack_surface3d.py

  • build_attack_graph (function) modules/attack_surface3d.py:147 def build_attack_graph(sessions_dir, payload_path, est_cap) -- Fuse surface scans with campaign intel into one C2-centred graph.
  • add_edge (function) modules/attack_surface3d.py:155 def add_edge(src, dst, kind, evidence, weight) -- Append one provenance-tagged relation between known nodes.
  • tag (function) modules/attack_surface3d.py:166 def tag(nid, source) -- Record a corroborating artefact on a node, deduped.
  • refresh_summary (function) modules/attack_surface3d.py:460 def refresh_summary(graph, sessions_dir) -- Score exposure into intel_summary.json for the autonomous loop.

modules/auto_pivot.py

Imported by: modules/autonomous_exploit_engine.py, skills/lazyown_mcp.py

modules/auto_purple.py

Depends on: core/config.py, core/logging.py, core/process.py, modules/detection_oracle.py Imported by: cli/commands/purple_team.py

modules/auto_registry.py

Depends on: modules/command_executor.py, modules/lazy_cli_bridge.py, modules/lazy_installer.py, modules/lazy_orchestrator_feedback.py, modules/orchestrator_config.py Imported by: cli/commands/command_and_control_migrated.py, cli/commands/lazyops.py, modules/command_executor.py, modules/custom_tools.py, modules/lazy_agent.py, modules/lazy_installer.py, modules/lazy_loop.py, modules/lazy_runner.py, modules/orchestrator_config.py, skills/lazyown_mcp.py, tests/test_atomic_loop.py, tests/test_auto_registry.py, tests/test_lazy_loop.py, tests/test_lazy_runner.py, tests/test_loop_auto_orchestrator.py

  • auto_verb_target (function) modules/auto_registry.py:66 def auto_verb_target(command) -- Return the target an auto <verb> <target> line carries, else ''.
  • verb_enabled (function) modules/auto_registry.py:296 def verb_enabled(name) -- Return whether one auto verb may be proposed or executed.
  • binary_available (function) modules/auto_registry.py:388 def binary_available(name) -- Return True when a command token can actually execute here.
  • missing_binary (function) modules/auto_registry.py:404 def missing_binary(command) -- Return the first binary a shell command needs but PATH lacks.
  • verb_gap (function) modules/auto_registry.py:416 def verb_gap(verb) -- Return a human reason when an automation verb cannot run, else ''.
  • verb_available (function) modules/auto_registry.py:428 def verb_available(verb) -- Return True when every binary an automation verb needs is installed.
  • service_tokens (function) modules/auto_registry.py:433 def service_tokens(service_text) -- Normalize a service asset value into matchable tokens.
  • iter_addon_triggers (function) modules/auto_registry.py:475 def iter_addon_triggers() -- Scan enabled lazyaddons for (name, trigger tokens) pairs.
  • iter_tool_triggers (function) modules/auto_registry.py:511 def iter_tool_triggers() -- Scan active pwntomate tools for (toolname, trigger tokens) pairs.
  • addon_hits_for (function) modules/auto_registry.py:534 def addon_hits_for(service_text, limit) -- Rank addon/tool names matching one service value.
  • propose_addon_intents (function) modules/auto_registry.py:560 def propose_addon_intents(service_texts, target, limit) -- Propose addon intents for discovered services.
  • is_routable_command (function) modules/auto_registry.py:586 def is_routable_command(line) -- Return True when the loop executor must route via the shell.
  • verbs (function) modules/auto_registry.py:604 def verbs() -- Return every canonical automation verb name.
  • is_shell_verb (function) modules/auto_registry.py:609 def is_shell_verb(token) -- Return True when token names a loop-routable shell verb.
  • build_command (function) modules/auto_registry.py:631 def build_command(verb, target) -- Build the shell command line for verb bound to target.
  • verbs_for (function) modules/auto_registry.py:642 def verbs_for(text) -- Return enabled verbs whose keywords appear in the text.
  • propose_intents (function) modules/auto_registry.py:648 def propose_intents(goal, target, finding_texts) -- Propose auto <verb> intent summaries for planner candidates.
  • steps_for (function) modules/auto_registry.py:733 def steps_for(text, target) -- Translate an intent summary into shell command lines, or None.
  • _TeeCapture.__init__ (method) modules/auto_registry.py:858 def __init__(self, observer)
  • _TeeCapture.write (method) modules/auto_registry.py:863 def write(self, data) -- Capture text and stream the chunk to the observer once.
  • execute_shell_verb (function) modules/auto_registry.py:876 def execute_shell_verb(shell, command, timeout_sec, on_output) -- Run a LazyOwn shell verb capturing stdout, with a hard timeout.
  • track_process (function) modules/auto_registry.py:986 def track_process(process) -- Register a live child process for global cancellation.
  • untrack_process (function) modules/auto_registry.py:991 def untrack_process(process) -- Drop a finished child process from the cancellation registry.
  • cancel_running_commands (function) modules/auto_registry.py:996 def cancel_running_commands() -- Kill every live streaming process group (operator Ctrl+C).
  • execute_streaming (function) modules/auto_registry.py:1019 def execute_streaming(command, on_output, timeout_sec) -- Run a bash command streaming lines while capturing the output.

modules/autonomous_exploit_engine.py

Depends on: core/defaults.py, core/safe_exec.py, modules/atomic_exploit_bridge.py, modules/auto_pivot.py, modules/db.py Imported by: cli/commands/pwn.py, cli/commands/session_ops.py, modules/ai_exploit_chain.py, skills/lazyown_mcp.py, tests/test_atomic_exploit_bridge.py, tests/test_phase1_data_gaps.py

modules/aws_attacks.py

Imported by: cli/commands/cloud_attacks.py

  • AWSAttackEngine.__init__ (method) modules/aws_attacks.py:91 def __init__(self, config)
  • AWSAttackEngine.enumerate_iam_permissions (method) modules/aws_attacks.py:95 def enumerate_iam_permissions(self) -- Enumerate IAM permissions for the current user/role.
  • AWSAttackEngine.lambda_backdoor (method) modules/aws_attacks.py:127 def lambda_backdoor(self, function_name) -- Plan a Lambda backdoor for privilege escalation.
  • AWSAttackEngine.sts_role_chain (method) modules/aws_attacks.py:155 def sts_role_chain(self, target_role_arn) -- Enumerate and exploit STS AssumeRole privilege escalation chains.
  • AWSAttackEngine.ec2_user_data_exfil (method) modules/aws_attacks.py:181 def ec2_user_data_exfil(self) -- Extract sensitive data from EC2 instance user data and metadata.
  • AWSAttackEngine.s3_enumeration (method) modules/aws_attacks.py:206 def s3_enumeration(self) -- Enumerate S3 buckets and their permissions.
  • AWSAttackEngine.cloudformation_drift (method) modules/aws_attacks.py:242 def cloudformation_drift(self) -- Exploit CloudFormation for privilege escalation.
  • AWSAttackEngine.ec2_ssm_session_abuse (method) modules/aws_attacks.py:274 def ec2_ssm_session_abuse(self) -- Abuse SSM to gain shell access to EC2 instances.
  • AWSAttackEngine.summary (method) modules/aws_attacks.py:293 def summary(self)

modules/backdoor/backdoor.c

Depends on: modules/backdoor/keylogger.h

modules/backdoor/keylogger.h

Imported by: modules/backdoor/backdoor.c

modules/backdoor/server.c

Imported by: cli/commands/dns_exfil.py, cli/commands/phishing_wizard.py, contrib/legacy/lazygalazy.py, contrib/legacy/lazyhttpreverseshell.py, lazyc2.py, modules/lazy_proxy.py, modules/lazyown_bprfuzzer.py, skills/hermes-lazyown/mcp_server.py, skills/lazyown_mcp.py, skills/lazyown_mcp_opencode.py, tests/test_lazy_proxy.py, utils.py

modules/beacon_config_builder.py

Depends on: core/config.py, core/logging.py, modules/c2_profile_engine.py, modules/sleep_obfuscation.py, modules/socks_proxy.py Imported by: cli/commands/bof_registry.py, tests/test_beacon_config_builder.py

modules/beacon_history.py

Depends on: core/logging.py Imported by: lazyc2.py, lazyc2/blueprints/api_v1.py, tests/test_api_v1.py, tests/test_beacon_history.py, tests/test_security_lazyc2.py

  • BeaconHistoryConfig.sessions_dir (method) modules/beacon_history.py:39 def sessions_dir(self) -- Return the resolved sessions directory under the base dir.
  • BeaconHistoryConfig.records_path (method) modules/beacon_history.py:43 def records_path(self, client_id) -- Resolve the history file path for a sanitised beacon client id.
  • sanitize_client_id (function) modules/beacon_history.py:70 def sanitize_client_id(client_id) -- Sanitise a beacon id to only URL/file-safe characters.
  • append_record (function) modules/beacon_history.py:82 def append_record(record, config) -- Append one beacon result record to the persistent JSONL history.
  • read_records (function) modules/beacon_history.py:116 def read_records(client_id, config) -- Read the ordered JSONL history for a beacon client id (oldest first).
  • records_path (function) modules/beacon_history.py:145 def records_path(client_id, config) -- Resolve the history file path for a beacon client id.

modules/bin2img.py

modules/bitm_engine.py

Imported by: cli/commands/bitm.py

  • bitm_start (function) modules/bitm_engine.py:257 def bitm_start(target_ip, gateway_ip, interface, lhost, lport, method, payloads) -- Start a Browser-in-the-Middle attack.
  • bitm_stop (function) modules/bitm_engine.py:481 def bitm_stop() -- Stop a running BitM attack and clean up iptables.
  • bitm_status (function) modules/bitm_engine.py:539 def bitm_status() -- Return the current BitM attack status.
  • bitm_inject (function) modules/bitm_engine.py:572 def bitm_inject(payload_name) -- Inject an additional JS payload into an active BitM session.
  • bitm_harvest_stats (function) modules/bitm_engine.py:607 def bitm_harvest_stats() -- Return statistics on harvested credentials from the active/past campaign.
  • bitm_cleanup (function) modules/bitm_engine.py:642 def bitm_cleanup() -- Force-kill all BitM processes and remove the state file.
  • main (function) modules/bitm_engine.py:661 def main() -- CLI entry point — display BitM status from command line.

modules/bof_registry.py

Depends on: cli/commands/enum.py, core/logging.py Imported by: cli/commands/bof_registry.py, tests/test_bof_registry.py

modules/c2_agent.py

Depends on: core/logging.py, lazyc2/security/services.py, modules/atomic_exploit_bridge.py Imported by: cli/commands/c2_session.py

  • client_id_for (function) modules/c2_agent.py:85 def client_id_for(target) -- Derive a stable, file-safe client id from a target IP.
  • validate_client_id (function) modules/c2_agent.py:91 def validate_client_id(raw) -- Validate a client id (alphanumerics, dash, underscore).
  • build_agent (function) modules/c2_agent.py:354 def build_agent(c2_url, client_id, aes_hex, route, sleep) -- Render the agent script for a target (pure function, no I/O).
  • read_aes_hex (function) modules/c2_agent.py:441 def read_aes_hex() -- Read the live C2 AES key hex (snapshotted, never generated).
  • deploy (function) modules/c2_agent.py:446 def deploy(target, c2_base, route, lhost, sleep) -- Deliver + launch the agent on target via a working shell primitive.
  • read_records (function) modules/c2_agent.py:517 def read_records(client_id, limit) -- Read the latest beacon records for a client (newest last).
  • wait_record (function) modules/c2_agent.py:534 def wait_record(client_id, command, since, timeout) -- Wait for a fresh record matching command (polls the JSONL log).
  • C2Server.__init__ (method) modules/c2_agent.py:551 def __init__(self, port, user, password)
  • C2Server.status (method) modules/c2_agent.py:568 def status(self) -- Report server liveness and listener reachability.
  • C2Server.start (method) modules/c2_agent.py:600 def start(self) -- Start lazyc2 headless (no-op when already running).
  • C2Server.stop (method) modules/c2_agent.py:631 def stop(self) -- Stop the headless server (SIGTERM, best-effort).
  • C2Server.ensure_http_listener (method) modules/c2_agent.py:654 def ensure_http_listener(self, http_port, auth) -- Add + start a plaintext lab listener via the C2 API (py2 agents lack TLS).

modules/c2_builder.py

Depends on: core/validators.py, modules/metrics.py, utils.py Imported by: cli/commands/command_and_control_migrated.py, tests/test_bdd_infra_range_report.py, tests/test_infra_disposable.py

  • C2Builder.__init__ (method) modules/c2_builder.py:395 def __init__(self, params, sessions_dir, cmd_fn, onecmd_fn, toastr_fn, c2_user, c2_pass)
  • C2Builder.run (method) modules/c2_builder.py:453 def run(self, line, choice, use_tunnel) -- Execute the full C2 build pipeline.

modules/c2_messaging_base.py

  • SecureSessionManager.__init__ (method) modules/c2_messaging_base.py:22 def __init__(self, max_failed_attempts, lockout_duration, rate_limit, session_timeout)
  • SecureSessionManager.register_failed_attempt (method) modules/c2_messaging_base.py:37 def register_failed_attempt(self, user_id) -- Record a failed authentication attempt for a user.
  • SecureSessionManager.check_lockout (method) modules/c2_messaging_base.py:46 def check_lockout(self, user_id) -- Check if a user is currently locked out due to failed attempts.
  • SecureSessionManager.check_rate_limit (method) modules/c2_messaging_base.py:61 def check_rate_limit(self, user_id) -- Check if a user has exceeded the command rate limit.
  • SecureSessionManager.create_session (method) modules/c2_messaging_base.py:79 def create_session(self, user_id, client_id) -- Create a new authenticated session for a user.
  • SecureSessionManager.validate_session (method) modules/c2_messaging_base.py:89 def validate_session(self, user_id) -- Check if a user session is still valid and refresh activity timestamp.
  • SecureSessionManager.set_client (method) modules/c2_messaging_base.py:106 def set_client(self, user_id, client_id) -- Assign a target C2 client to a user session.
  • SecureSessionManager.get_client (method) modules/c2_messaging_base.py:111 def get_client(self, user_id) -- Get the target C2 client assigned to a user session.
  • PayloadConfigAdapter.__init__ (method) modules/c2_messaging_base.py:124 def __init__(self, config_dict)
  • PayloadConfigAdapter.get (method) modules/c2_messaging_base.py:132 def get(self, key, default)

modules/c2_profile.py

Depends on: core/logging.py

  • C2Profile.jitter_delay (method) modules/c2_profile.py:101 def jitter_delay(self) -- Return the next sleep delay as a float in seconds.
  • C2Profile.get_uri (method) modules/c2_profile.py:117 def get_uri(self, method) -- Pick a random URI path from the appropriate HttpConfig.
  • C2Profile.build_headers (method) modules/c2_profile.py:128 def build_headers(self, method) -- Return the headers dict for the given HTTP method.
  • ProfileValidator.validate (method) modules/c2_profile.py:162 def validate(self, profile)
  • ProfileLoader.from_yaml (method) modules/c2_profile.py:200 def from_yaml(path) -- Load a C2Profile from a YAML file at path.
  • ProfileLoader.from_dict (method) modules/c2_profile.py:215 def from_dict(d) -- Construct a C2Profile from a plain Python dictionary.
  • ProfileLoader.to_dict (method) modules/c2_profile.py:254 def to_dict(profile) -- Convert a C2Profile to a plain Python dictionary.
  • ProfileLoader.save (method) modules/c2_profile.py:282 def save(profile, path) -- Serialise profile to a YAML file and return the written path.
  • ProfileRegistry.__init__ (method) modules/c2_profile.py:457 def __init__(self)
  • ProfileRegistry.register (method) modules/c2_profile.py:464 def register(self, name, profile) -- Register profile under name, overwriting any previous entry.
  • ProfileRegistry.get (method) modules/c2_profile.py:473 def get(self, name) -- Return the profile registered under name.
  • ProfileRegistry.list_names (method) modules/c2_profile.py:485 def list_names(self) -- Return a sorted list of all registered profile names.
  • ProfileRegistry.load_from_directory (method) modules/c2_profile.py:493 def load_from_directory(self, path) -- Scan path for *.yaml files and register each as a profile.
  • ProfileApplier.apply_to_response (method) modules/c2_profile.py:529 def apply_to_response(profile, response) -- Patch the headers of a Flask response object to match the profile.
  • ProfileApplier.apply_to_session (method) modules/c2_profile.py:554 def apply_to_session(profile, session) -- Configure a requests.Session to mimic the profile's HTTP GET behavior.
  • ProfileApplier.get_beacon_config (method) modules/c2_profile.py:567 def get_beacon_config(profile) -- Return a JSON-serialisable dict suitable for embedding in a beacon handshake response.
  • get_registry (function) modules/c2_profile.py:595 def get_registry() -- Return the module-level singleton ProfileRegistry.
  • get_profile (function) modules/c2_profile.py:620 def get_profile(name) -- Return the named profile from the module singleton registry.
  • list_profiles (function) modules/c2_profile.py:625 def list_profiles() -- Return a sorted list of all registered profile names.

Next: API_p10.md

⚠️ **GitHub.com Fallback** ⚠️