Full security platform with web dashboard, 16 Flask blueprints, 26 modules, autonomous AI agent, WebUSB hardware support, and Archon Android companion app. Includes Hash Toolkit, debug console, anti-stalkerware shield, Metasploit/RouterSploit integration, WireGuard VPN, OSINT reconnaissance, and multi-backend LLM support. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
14 KiB
AUTARCH Evolution Plan
From CLI Framework to Full-Stack Security Platform
Context
AUTARCH is currently a CLI-only Python security framework at /home/snake/dh_framework/ with 20+ modules across 6 categories (Defense, Offense, Counter, Analyze, OSINT, Simulate), LLM integration (llama.cpp/transformers/Claude), Metasploit RPC integration, and an OSINT sites database with 7,200+ sites.
There is also a UPnP port forwarding script at /home/snake/wg_setec/upnp-renew.sh (using miniupnpc) that forwards ports 443/TCP, 51820/UDP, 8080/TCP but has no cron job installed despite being intended to run every 12 hours.
The goal is to evolve AUTARCH into a portable, cross-platform security platform with a web dashboard, advanced OSINT search engine, Wireshark integration, UPnP management, and Docker packaging -- while preserving the existing CLI interface.
Phase 0: Backup & New Working Directory
What: Copy the codebase to ~/autarch, excluding models (9GB).
Steps:
mkdir ~/autarchrsync -av --exclude='models/' --exclude='snoop/' --exclude='__pycache__/' /home/snake/dh_framework/ ~/autarch/- Verify the copy:
ls ~/autarch/anddu -sh ~/autarch/ - Switch working directory to
~/autarch git initin the new directory for version control going forward
Files: No code changes. Pure copy operation.
Phase 1: UPnP Manager Integration
What: Integrate UPnP port forwarding management into AUTARCH with a config-driven approach and cron job management.
New files:
core/upnp.py-- UPnP manager class wrappingupnpc(miniupnpc CLI)modules/upnp_manager.py-- CLI menu module (CATEGORY: defense)
Changes to existing files:
core/config.py-- Add[upnp]config section with port mappings, internal IP, refresh intervalcore/menu.py-- No changes needed (module auto-discovered)
core/upnp.py design:
class UPnPManager:
def list_mappings() # upnpc -l
def add_mapping(internal_ip, internal_port, external_port, protocol, description)
def remove_mapping(external_port, protocol)
def refresh_all() # Re-add all configured mappings
def get_external_ip() # upnpc -e
def install_cron(interval_hours) # Write crontab entry
def uninstall_cron() # Remove crontab entry
def get_cron_status() # Check if cron is active
def load_mappings_from_config()
def save_mappings_to_config()
Config section:
[upnp]
enabled = true
internal_ip = 10.0.0.26
refresh_hours = 12
mappings = 443:TCP,51820:UDP,8080:TCP
CLI module menu:
UPnP Port Manager
[1] Show Current Mappings
[2] Add Port Mapping
[3] Remove Port Mapping
[4] Refresh All Mappings
[5] Show External IP
[6] Cron Job Settings (currently: every 12h / not installed)
[7] Edit Internal IP
[0] Back
Cron management: Uses subprocess to read/write crontab via crontab -l and crontab - pipe. Adds entry like:
0 */12 * * * /usr/bin/python3 /home/snake/autarch/autarch.py --upnp-refresh > /dev/null 2>&1
Also add to autarch.py: --upnp-refresh CLI flag that calls UPnPManager.refresh_all() and exits (for cron use).
Phase 2: Web UI Dashboard (Flask)
What: Add a Flask-based web dashboard running alongside the CLI. Reuse patterns from wg_setec (dark theme, session auth, template inheritance).
New directory structure:
~/autarch/
├── web/
│ ├── __init__.py
│ ├── app.py # Flask app factory
│ ├── auth.py # Login/session auth (from wg_setec pattern)
│ ├── routes/
│ │ ├── __init__.py
│ │ ├── dashboard.py # Main dashboard
│ │ ├── defense.py # Defense tools page
│ │ ├── offense.py # Offense tools page
│ │ ├── counter.py # Counter-intel page
│ │ ├── analyze.py # Analysis page
│ │ ├── osint.py # OSINT search engine
│ │ ├── simulate.py # Simulation page
│ │ ├── settings.py # Settings management
│ │ ├── upnp.py # UPnP management page
│ │ └── wireshark.py # Wireshark page (Phase 4)
│ ├── templates/
│ │ ├── base.html # Master template (dark theme, sidebar nav)
│ │ ├── login.html
│ │ ├── dashboard.html # Overview with status cards
│ │ ├── defense.html
│ │ ├── offense.html
│ │ ├── counter.html
│ │ ├── analyze.html
│ │ ├── osint.html # Advanced search UI
│ │ ├── simulate.html
│ │ ├── settings.html
│ │ ├── upnp.html
│ │ └── wireshark.html
│ └── static/
│ ├── css/style.css # Dark theme (reuse wg_setec CSS variables)
│ └── js/app.js # Vanilla JS for interactions
Dashboard landing page shows:
- System status cards (LLM loaded, MSF connected, UPnP active, services running)
- Quick action buttons for each category
- Recent activity/scan results
- Server info (hostname, IP, uptime)
Each category page provides:
- Module listing with descriptions
- Quick-launch buttons that trigger module functions via API
- Results display area
- Settings specific to that category
Flask app startup:
- Add
--webflag toautarch.pyto start web server - Add
--web-port PORT(default 8080) - Web server runs in background thread or separate process
- Can run CLI and web simultaneously
Authentication:
- Session-based with bcrypt (same as wg_setec)
- Default admin/admin, forced password change on first login
- Config section
[web]for port, host, secret_key
Key reusable patterns from wg_setec:
- CSS variables dark theme (
/home/snake/wg_setec/static/css/style.css) - Template inheritance (
/home/snake/wg_setec/templates/base.html) - Auth decorator (
/home/snake/wg_setec/auth.py) - Flash messages, status dots, data tables
Phase 3: OSINT Search Engine (Web)
What: Build an advanced OSINT search interface in the web UI that surpasses the CLI capabilities.
Route: web/routes/osint.py
Template: web/templates/osint.html
Search interface features:
- Search box with type selector (username / email / phone / domain / IP)
- Category multi-select checkboxes (filter site categories)
- NSFW toggle
- Scan depth selector (Quick 100 / Standard 500 / Full 7000+)
- Advanced options panel:
- Thread count slider
- Timeout setting
- User-agent selection
- Proxy support field
- Export format (JSON/HTML/CSV)
Real-time results (Server-Sent Events):
GET /osint/search/stream?username=X&...-- SSE endpoint- Progressive results as sites are checked
- Live progress bar (sites checked / total)
- Results appear in cards grouped by status (good/maybe/bad)
- Filter/sort results client-side
Results display:
- Card layout per found profile: site name, URL (clickable), confidence %, category badge
- Expandable detail: detection method, page title, response info
- Bulk actions: save to dossier, export, open all in new tabs
- Summary statistics bar chart
Backend integration:
- Reuses existing
modules/recon.pyscanning functions - Reuses
core/sites_db.pyfor site queries - New
web/tasks.pyfor async scan management (threading, not Celery -- keep it simple)
Dossier management page:
- List existing dossiers
- Create new dossier
- Link search results to dossier
- View/edit dossier details
- Export dossier as report
Phase 4: Wireshark Module (tshark + pyshark)
What: Add packet capture and analysis capabilities using tshark CLI and pyshark Python library.
New files:
core/wireshark.py-- tshark/pyshark wrapper classmodules/wireshark.py-- CLI menu module (CATEGORY: analyze)web/routes/wireshark.py-- Web dashboard page
core/wireshark.py design:
class WiresharkManager:
def list_interfaces() # tshark -D
def start_capture(interface, filter, duration, output_file)
def stop_capture()
def get_capture_stats()
def read_pcap(filepath) # pyshark FileCapture
def live_capture(interface, filter, callback) # pyshark LiveCapture
def get_protocol_hierarchy() # Protocol distribution
def extract_conversations() # IP conversations
def extract_dns_queries() # DNS analysis
def extract_http_requests() # HTTP analysis
def extract_credentials() # Plain-text credential detection
def apply_display_filter(capture, filter_string)
def export_packets(capture, format) # JSON/CSV export
CLI module menu:
Wireshark / Packet Analysis
[1] List Interfaces
[2] Start Live Capture
[3] Open PCAP File
[4] Protocol Analysis
[5] Conversation Analysis
[6] DNS Query Analysis
[7] HTTP Traffic Analysis
[8] Credential Detection
[9] Export Results
[0] Back
Web UI features:
- Interface selector dropdown
- Capture filter input (BPF syntax)
- Start/stop capture buttons
- Live packet stream (SSE)
- Protocol distribution pie chart
- Conversation table
- Packet detail view (expandable tree)
- PCAP file upload and analysis
Dependencies: pyshark, system tshark (part of Wireshark package)
Phase 5: Path Portability & Windows Support
What: Make all paths relative/configurable, remove hardcoded paths, add Windows compatibility.
Key changes:
- Path resolution system (
core/paths.py):
import platform, os
from pathlib import Path
def get_app_dir():
"""Returns the application root directory"""
return Path(__file__).parent.parent
def get_data_dir():
return get_app_dir() / 'data'
def get_config_path():
return get_app_dir() / 'autarch_settings.conf'
def get_results_dir():
return get_app_dir() / 'results'
def is_windows():
return platform.system() == 'Windows'
def get_platform():
return platform.system().lower() # 'linux', 'windows', 'darwin'
-
Audit all files for hardcoded paths:
core/config.py-- WG paths, model pathscore/msf.py-- msfrpcd pathcore/upnp.py-- upnpc pathmodules/*.py-- any/home/snake/references- Replace all with
paths.get_*()calls or config-driven paths
-
Platform-specific tool detection:
- Check for
tshark,nmap,upnpc,wg,msfrpcdavailability - Graceful degradation when tools missing (disable features, show install instructions)
- Windows: use
whereinstead ofwhich
- Check for
-
Cross-platform subprocess calls:
- Use
shutil.which()for tool discovery - Use
pathlib.Patheverywhere instead of string concatenation - Handle Windows vs Unix shell differences
- Use
-
Windows-specific considerations:
nmapavailable on Windows (nmap.org installer)tsharkavailable on Windows (Wireshark installer)upnpcavailable on Windows (miniupnpc builds)- Metasploit available via WSL or native Windows build
- WireGuard available on Windows
- No
sudo-- usectypes.windll.shell32.IsUserAnAdmin()check
Phase 6: Docker Packaging
What: Create Docker configuration for portable deployment with all dependencies bundled.
New files:
~/autarch/
├── Dockerfile
├── docker-compose.yml
├── .dockerignore
└── scripts/
├── entrypoint.sh # Container startup script
└── install-tools.sh # Install nmap, tshark, upnpc, etc.
Dockerfile approach:
- Base:
python:3.11-slim - Install system tools:
nmap,tshark,miniupnpc,wireguard-tools - Install Python deps from
requirements.txt - Copy application code
- Expose ports: 8080 (web UI), 55553 (MSF RPC passthrough)
- Volume mounts:
/data(persistent),/models(LLM models) - Entrypoint: can start CLI, web, or both
docker-compose.yml:
services:
autarch:
build: .
ports:
- "8080:8080"
volumes:
- ./data:/app/data
- ./models:/app/models
- ./results:/app/results
environment:
- AUTARCH_MODE=web # or 'cli' or 'both'
network_mode: host # Needed for network scanning tools
requirements.txt (consolidated):
flask
bcrypt
pyshark
qrcode
Pillow
requests
llama-cpp-python # optional
transformers # optional
torch # optional
anthropic # optional
msgpack
Execution Order
| Step | Phase | Effort | Description |
|---|---|---|---|
| 1 | Phase 0 | 5 min | Backup & create ~/autarch |
| 2 | Phase 1 | 1 session | UPnP manager + cron job management |
| 3 | Phase 2 | 2-3 sessions | Flask web dashboard skeleton + all pages |
| 4 | Phase 3 | 1-2 sessions | OSINT search engine with SSE streaming |
| 5 | Phase 4 | 1-2 sessions | Wireshark/tshark integration |
| 6 | Phase 5 | 1-2 sessions | Path portability + Windows support |
| 7 | Phase 6 | 1 session | Docker packaging |
Each phase is self-contained and testable before moving to the next.
Verification Plan
After each phase:
- Phase 0:
ls ~/autarch/matches expected structure,python3 ~/autarch/autarch.py --helpworks - Phase 1: UPnP menu accessible,
upnpc -lshows mappings, cron installs/uninstalls correctly - Phase 2:
python3 autarch.py --webstarts Flask on :8080, login works, all pages render, CLI still works independently - Phase 3: OSINT search returns results in web UI, SSE streaming shows live progress, results match CLI output
- Phase 4:
tshark -Dlists interfaces from web UI, capture start/stop works, PCAP analysis shows results - Phase 5: No hardcoded paths remain (
grep -r '/home/snake' .returns nothing), app runs from any directory - Phase 6:
docker-compose upstarts the app, web UI accessible, tools available inside container
Critical Files Reference
| Existing File | Role | Reuse For |
|---|---|---|
/home/snake/wg_setec/static/css/style.css |
Dark theme CSS | Web UI base theme |
/home/snake/wg_setec/templates/base.html |
Template inheritance | Web UI base template |
/home/snake/wg_setec/auth.py |
bcrypt session auth | Web UI authentication |
/home/snake/wg_setec/upnp-renew.sh |
UPnP port script | Reference for port mappings |
core/config.py |
Config handler | Add [upnp], [web] sections |
core/sites_db.py |
Sites DB (7200+ sites) | OSINT search backend |
modules/recon.py |
OSINT scanner (2193 lines) | OSINT search engine backend |
core/menu.py |
Module discovery | Auto-discover new modules |
autarch.py |
Entry point | Add --web, --upnp-refresh flags |