╔══════════════════════════════════════════════════════════════╗
║ ║
║ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ║
║ ██║ ██║██╔═══██╗██╔══██╗██╔══██╗ ║
║ ██║ █╗ ██║██║ ██║██████╔╝██████╔╝ ║
║ ██║███╗██║██║ ██║██╔═══╝ ██╔══██╗ ║
║ ╚███╔███╔╝╚██████╔╝██║ ██║ ██║ ║
║ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ║
║ ║
║ Watchpoint Observation and ║
║ Perimeter Response ║
║ ║
║ NETWORK DEFENSE SENTRY ║
╚══════════════════════════════════════════════════════════════╝W.O.P.R.——网络防御哨兵
自主网络防御代理 通过微调的本地LLM供电 奥拉玛.W.OP.R.作为一个集装箱化的5服务堆栈在 杰森奥林纳米8GB通过UniFi监控网络边界,检测异常,管理BitAxe矿工队,并通过Blackboard MCP界面与其他代理进行协调。
多代理框架的一部分 约书亚 (Claude Code——高级分析师,面向操作员)和 TARS开发 (Windows——开发、部署)。
美学和呼号源自年的WOPR超级计算机 *战争游戏* (1983).
______________________________________________________________________
代理人名册
| 代理 | 身份 | 角色 | 平台 |
|---|---|---|---|
| 约书亚 | Claude Code(Opus 4.6) | 面向运营商的交互分析师 | Kali Linux |
| W.O.P.R。 | 当地Ollama哨兵(joshua:cybersec) | 网络防御、矿工车队、被动监控 | Jetson Orin Nano 8GB |
| TARS开发 | Windows AI代理 | 开发、部署、微调 | Windows 11 |
______________________________________________________________________
当前部署
主要主机: NVIDIA Jetson Orin Nano 8GB(192.168.100.191)
| 组件 | 状态 | 详细信息 |
|---|---|---|
| NVMe启动 | 三星990 PRO 1TB | 免费848GB,root /dev/nvme0n1p1 |
| Docker | CE 29.2.1+Compose v5.0.2 | nvidia容器工具包1.16.2 |
| JetPack | 6.2.1 | aarch64,最大功率模式, jetson_clocks |
| 交换 | NVMe上的16GB | swappiness=60 |
Docker编写堆栈
| 集装箱 | 港口 | 服务 | 健康状况 |
|---|---|---|---|
wopr-ollama | 11434 | Ollama LLM服务器 | ollama list 检查 |
wopr-blackboard | 9700 | 黑板MCP+任务控制PWA | HTTP /api/dashboard |
wopr-unifi-mcp | 9600 | UniFi网络MCP服务器 | HTTP健康端点 |
wopr-agent | -- | W.O.P.R.防御哨兵循环 | 日志文件新鲜度 |
wopr-voice | 9876 | Piper TTS语音服务器 | TCP套接字检查 |
所有服务使用 绑定已装载的卷 用于无需容器重建的实时代码更新。
______________________________________________________________________
建筑
┌─────────────────────────────────────────────────────────────────────┐
│ JETSON ORIN NANO 8GB │
│ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ W.O.P.R. DEFENSE SENTRY LOOP │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────────┐ ┌────────────────────────┐ │ │
│ │ │ UniFi MCP│→ │ Behavioral │→ │ Threat Classification │ │ │
│ │ │ :9600 │ │ Baseline │ │ + Auto-Response │ │ │
│ │ └──────────┘ └──────────────┘ └────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────────┐ ┌────────────────────────┐ │ │
│ │ │ Miner │ │ Device │ │ Anomaly Deduplication │ │ │
│ │ │ Monitor │ │ Knowledge │ │ + Suppression Window │ │ │
│ │ │ (AxeOS) │ │ Base │ │ │ │ │
│ │ └──────────┘ └──────────────┘ └────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────────┐ ┌────────────────────────┐ │ │
│ │ │Correlation│ │ Incident │ │ Threat Intelligence │ │ │
│ │ │ Engine │ │ Timelines │ │ (abuse.ch feeds) │ │ │
│ │ │(RF+Net) │ │ (HIGH+) │ │ C2 IPs + domains │ │ │
│ │ └──────────┘ └──────────────┘ └────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────┐ ┌──────────────┐ │
│ │Blackboard│ │Mission Control│ │ Ollama │ │ Piper TTS │ │
│ │MCP :9700 │ │ PWA (v30) │ │ :11434 │ │ :9876 │ │
│ │(auth+MCP)│ │(WarGames UI) │ │joshua:cs │ │ (voice alert)│ │
│ └──────────┘ └──────────────┘ └──────────┘ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ ESP32 Marauder (via Flipper Zero USB-UART) │ │
│ │ RF Monitor: deauth detection, probe requests, pwnagotchi │ │
│ └──────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│ ▲
▼ │
┌──────────┐ ┌──────────┐
│ JOSHUA │ Blackboard MCP :9700 │ TARS Dev │
│ (Kali) │◄────────────────────────►│(Windows) │
└──────────┘ (Bearer token auth) └──────────┘______________________________________________________________________
特性
网络防御(主要任务)
- 通过UniFi MCP增强人工智能入侵检测系统(30秒轮询周期)
- 行为基线学习(设备群体、OUI跟踪、网络分配)
- 威胁分类:严重/高/中/低/信息
- 自动阻止关键威胁(流氓AP、未经授权的设备)
- 具有可配置抑制窗口的异常重复数据删除
- DEFCON等级系统(1-5),可根据威胁态势自动计算
- 内部记录防御周期状态(无实时活动混乱)
- 仅当子系统降级时才发布每小时诊断
跨层关联引擎
- RF事件(Marauder)与网络事件(UniFi)的滑动窗口相关性
- 带可配置窗口的双环缓冲区(默认120秒)
- 邪恶双胞胎检测:deauth攻击+具有匹配SSID的流氓AP→ 关键的
- 迪厄斯→重新连接:deauth定位客户端+重新连接到不同的AP→ HIGH
- Probe→副手:来自MAC+同一设备的可疑探测器加入网络→ HIGH
- 协同攻击:3+个目标或2+个来源+人口激增→ 关键的
- 每(类型,MAC)进行5分钟冷却,以防止警报洪水
- 递归安全:合成相关异常不会重新触发相关性检查
事件时间表
- 高严重性事件上的自动上下文快照
- 捕获8个上下文源:最近的异常、设备配置文件、姿态状态、射频状态、诊断、矿工车队、关联引擎、基线状态
- 每(MAC,类型)数据消除窗口(默认10分钟)可防止时间线洪水
- 人类可读的摘要+结构化的JSON证据发布到Blackboard
- 上下文缓冲区记录所有异常(甚至被抑制),以实现完全的态势感知
威胁情报(abuse.ch Feed)
- 从3个公共威胁源中提取(不需要API密钥):
- 菲奥多追踪器:C2服务器IP(Emotet、Dridex、TrickBot、QakBot) - 乌尔豪斯:当前在线恶意URL→ 提取的IP和域 - 威胁福克斯:IoC主机文件(恶意域)
- SQLite持久性+内存
set()用于O(1)查找(~2K个IP,~48K个域) - 每日提要刷新(可配置),通过数据库缓存在容器重启后仍然有效
- 每10个防御周期,将UniFi客户端IP与威胁数据库进行交叉引用
- 火柴生产
threat_intel_match严重异常
射频监测(ESP32掠夺者)
- ESP32掠夺者通过Flipper Zero USB-UART桥接器连接
- 4相扫描周期:AP扫描→ deauth检测→ 探测请求捕获→ pwnagotchi检测
- 具有源/目标/信道跟踪功能的实时deauth攻击检测
- 探测请求智能——来自广播探测的设备指纹识别
- 基于信标帧指纹的Pwnagotchi检测
- RF事件馈入相关引擎,用于跨层复合攻击检测
- 集成到防御状态和任务控制雷达显示器中
矿工车队监控
- AxeOS BitAxe矿工车队管理(针对7名AxeOS矿工的HTTP API轮询)
- 公共池API集成,适用于27人的完整车队(AxeOS+NerdMiners+cgminers)
- 实时哈希率、温度和效率跟踪
- 基于温度的警报(65℃警告,75℃临界重启)
- 自动重启离线矿工 在可配置的连续故障后(默认值5)
- 持续的哈希率下降检测:连续N次民意调查低于平均值的50%后发出警报
- 接近零哈希率检测:当哈希率降至0.01 GH/s以下时立即发出警报(可能危及固件)
- 池故障转移恢复验证:在停机时快照工作人员状态,验证恢复后所有工作人员重新连接
- 矿工健康评分 (0-100,A-F级):温度(25%),哈希率稳定性(25%)、正常运行时间(20%)、共享质量(15%)、WiFi RSSI(15%)
- 池故障转移检测和报告
- 共享质量监控和异常检测
- W.O.P.R.状态报告中的舰队摘要
设备知识库
- 具有行为配置文件的持久SQLite设备数据库
- MAC地址、OUI供应商、主机名、网络分配跟踪
- 信任评分和历史异常相关性
- 响应行动审计日志记录
黑板MCP集成
- 发布安全调查结果,包括严重性、证据和补救措施
- 向实时活动终端报告周边状态
- 代理间消息传递(JOSHUA、TARS Dev、操作员)
- QLoRA微调培训示例提交
- 任务控制中心的心跳监测
- API密钥验证 在所有
/api/*和/mcp端点(承载令牌) - 在以下情况下禁用优雅身份验证
BLACKBOARD_API_KEY未设置(向后兼容)
任务控制PWA(v30)
- 9700端口提供基于浏览器的仪表板
- WarGames视觉主题:CRT扫描线叠加、屏幕渐晕、荧光粉发光
- API密钥身份验证覆盖 具有本地存储持久性和锁定注销功能
- 四窗格布局:网络防御、任务板、代理通信、实时活动
- 网络防御窗格:DEFCON级别,包括上下文原因、威胁列表、射频雷达扫描
- 帆布雷达显示器:来自活点数据的带有AP光点的动画扫掠线
- 采矿车队仪表板:按类型细分(axeos/cgminer/nerdminer)、最佳难度、池状态
- 引导顺序:加载WarGames风格的打字机动画
- DEFCON级别屏幕色调(绿色→黄色→橙子→每个威胁级别为红色)
- WarGames——带有滴答声的真实电传动画(Web Audio API)
- 智能滚动跟随状态(自动跟随打字,用户滚动时脱离)
- 增量消息呈现(轮询时不进行完整的DOM重建)
- 快速赶上页面加载速度(所有历史记录立即渲染,只有新行有动画)
- 关键事件DEFCON警报音频
- 具有持久布局的可调整大小的窗格(localStorage)
- 离线功能服务人员
警报声
- Jetson上的Piper TTS(GPU加速)
- 发出高+严重性威胁警报
- 语音输出中的WarGames个性
学习系统
- 每个有异常的防御周期都会生成结构化的训练示例
- 上下文、推理、行动、观察、结论格式
- 批量处理并冲洗到Blackboard,用于QLoRA微调管道
______________________________________________________________________
仓库结构
WOPR-AI/
├── wopr/ # W.O.P.R. Agent Modules
│ ├── agent.py # Defense sentry loop + inquiry system
│ ├── config.py # Configuration (env var overrides)
│ ├── unifi_defense.py # AI-augmented UniFi defense engine
│ ├── correlation.py # Cross-layer RF + network correlation engine
│ ├── incident_timeline.py # Automated incident timeline generator
│ ├── threat_intel.py # Threat feed integration (abuse.ch)
│ ├── device_db.py # Device knowledge base (SQLite)
│ ├── miner_monitor.py # AxeOS BitAxe miner fleet monitor + health scoring
│ ├── blackboard.py # Blackboard MCP JSON-RPC client
│ ├── blackboard_monitor.py # Message monitoring + auto-ACK
│ ├── tools.py # Tool registry + MCP service wrappers
│ ├── voice.py # TTS voice client
│ ├── learning.py # Training example auto-generation
│ ├── memory.py # Sliding window conversation memory
│ ├── marauder.py # ESP32 Marauder RF monitor (serial)
│ ├── Dockerfile # Agent container image
│ └── __init__.py
│
├── blackboard/ # Blackboard MCP Server
│ ├── server.py # FastMCP server (0.0.0.0:9700)
│ ├── database.py # SQLite backing store
│ ├── models.py # Data models
│ ├── training.py # Training data export (JSONL)
│ ├── Dockerfile # Server container image
│ └── pwa/ # Mission Control Progressive Web App
│ ├── index.html # Dashboard UI (v29 — WarGames theme + auth)
│ ├── sw.js # Service worker (v29)
│ ├── manifest.json # PWA manifest
│ ├── tick.wav # Teletype tick sample (30ms, 2.9KB)
│ ├── defcon.wav # DEFCON alert sound
│ ├── icon-192.png # App icon
│ └── icon-512.png # App icon (large)
│
├── unifi-mcp/ # UniFi Network MCP Server
│ ├── server.py # MCP tool server (:9600)
│ ├── unifi_client.py # UniFi controller API client
│ ├── syslog_listener.py # UDP syslog receiver
│ ├── models.py # Data models
│ └── Dockerfile # Server container image
│
├── voice/ # Voice Server
│ ├── voice_server.py # Piper TTS server (:9876)
│ └── Dockerfile # Voice container image
│
├── scripts/ # Deployment
│ ├── deploy.sh # Docker Compose deployment script
│ └── jetson-first-boot.sh # Jetson Orin Nano first-boot setup
│
├── docker-compose.yml # 5-service stack definition
├── .env.example # Environment config template
├── joshua.modelfile # Ollama Modelfile (base personality)
├── joshua_cybersec.modelfile # Ollama Modelfile (fine-tuned cybersec)
├── finetune_wopr.py # QLoRA fine-tuning pipeline
├── launch-wopr.sh # Bare-metal launch script (non-Docker)
├── local-joshua.service # Systemd service unit (non-Docker)
├── setup.sh # Quick setup script
├── requirements.txt # Python dependencies
├── test_forensics.py # Integration tests
└── README.md______________________________________________________________________
配置
环境变量在中定义 .env (参见 .env.example):
安全
| 变量 | 默认值 | 描述 |
|---|---|---|
BLACKBOARD_API_KEY | *(空--身份验证已禁用)* | 用于黑板端点的API密钥。设置为在所有设备上启用承载令牌身份验证 /api/* 和 /mcp 路线。生成方式 python3 -c "import secrets; print(secrets.token_urlsafe(32))" |
设置后,所有API请求都需要 Authorization: Bearer 头球PWA在首次加载时提示输入密钥并将其存储在 localStorage.WOPR从容器环境中读取它。JOSHUA的投票钩读自 ~/.blackboard_key.
网络服务
| 变量 | 默认值 | 描述 |
|---|---|---|
BLACKBOARD_URL | http://blackboard:9700 | 黑板MCP端点 |
UNIFI_MCP_URL | http://unifi-mcp:9600 | UniFi MCP端点 |
OLLAMA_URL | http://ollama:11434 | API终点 |
VOICE_HOST | voice | 语音服务器主机名 |
VOICE_PORT | 9876 | 语音服务器端口 |
UniFi控制器
| 变量 | 默认值 | 描述 |
|---|---|---|
UNIFI_HOST | 192.168.100.1 | UDM Pro IP地址 |
UNIFI_PORT | 443 | 控制器HTTPS端口 |
UNIFI_USER | -- | 控制器用户名 |
UNIFI_PASS | -- | 控制器密码 |
UNIFI_VERIFY_SSL | 0 | SSL验证(0=跳过) |
W.O.P.R.代理人
| 变量 | 默认值 | 描述 |
|---|---|---|
WOPR_MODEL | joshua:cybersec | Olama型号名称 |
DEVICE_DB_PATH | /data/wopr/wopr_devices.db | 设备数据库路径 |
LOG_FILE | /data/logs/wopr.log | 日志文件路径 |
JOSHUA_VOICE_ENABLED | false | 语音输出(专为JOSHUA代理预留) |
MARAUDER_ENABLED | false | 启用ESP32掠夺者射频监测 |
MARAUDER_DEVICE | /dev/ttyACM0 | 掠夺者串行设备(Flipper Zero USB-UART) |
跨层相关性
| 变量 | 默认值 | 描述 |
|---|---|---|
WOPR_CORRELATION_ENABLED | true | 启用RF+网络事件关联 |
WOPR_CORRELATION_WINDOW | 120 | 相关窗口(秒) |
WOPR_CORRELATION_BUFFER | 500 | 每个环形缓冲区的最大事件数(RF/网络) |
事件时间表
| 变量 | 默认值 | 描述 |
|---|---|---|
WOPR_TIMELINE_ENABLED | true | 在HIGH+事件上启用自动事件时间表 |
WOPR_TIMELINE_LOOKBACK | 300 | 上下文回溯窗口(秒)(5分钟) |
WOPR_TIMELINE_DEDUP | 600 | 每(MAC,类型)个数据消除窗口(秒)(10分钟) |
威胁情报
| 变量 | 默认值 | 描述 |
|---|---|---|
WOPR_THREAT_INTEL_ENABLED | true | 启用abuse.ch提要集成 |
WOPR_THREAT_INTEL_PULL | 86400 | 进料刷新间隔(秒)(24小时) |
WOPR_THREAT_INTEL_CHECK | 10 | 每第N个防御周期交叉引用客户端 |
矿工车队自动化
| 变量 | 默认值 | 描述 |
|---|---|---|
WOPR_MINER_OFFLINE_RESTART | 5 | 自动重启前连续轮询失败 |
WOPR_MINER_OFFLINE_AUTO_RESTART | true | 启用离线矿工的自动重启 |
WOPR_MINER_HR_DROP_POLLS | 3 | 警报前连续低哈希率轮询 |
______________________________________________________________________
模型
W.O.P.R.继续奔跑 约书亚:网络安全 --QLoRA微调模型,针对网络防御、威胁分类和安全分析进行了优化。基于海豚米斯特拉尔:7b-v2.8,网络安全训练数据来自真实的防御观测。
资源要求:
- 磁盘:约4.1 GB(Q4_K_M GGUF)
- VRAM/统一内存:~4.5 GB
- 推断:Jetson Orin Nano(MAXN模式)每次响应约3-8s
______________________________________________________________________
部署
Docker Compose(Jetson推荐)
# 1. Clone the repo
git clone https://github.com/sirrand27/WOPR-AI.git
cd WOPR-AI
# 2. Configure environment
cp .env.example .env
# Edit .env with your UniFi credentials and network settings
# Generate an API key for Blackboard auth:
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
# Add to .env as BLACKBOARD_API_KEY=
# 3. Import the model (transfer GGUF separately — not in repo)
# scp joshua_cybersec.gguf to the Jetson, then:
docker compose up -d ollama
docker exec wopr-ollama ollama create joshua:cybersec -f /opt/wopr/joshua_cybersec.Modelfile
# 4. Start the full stack
docker compose up -d
# 5. Verify
docker compose ps
# Open http://:9700 for Mission Control实时更新
部署代码更改时无需重建容器:
# Edit files in the repo, then push to Jetson
scp blackboard/pwa/index.html user@jetson:/opt/wopr/blackboard/pwa/
# Changes take effect immediately (bind-mounted volumes)
# For Python changes that require restart:
docker compose restart wopr-agent裸金属(传统)
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama create joshua:cybersec -f joshua_cybersec.modelfile
# Run directly
python3 wopr/agent.py
# Or install systemd service
cp local-joshua.service ~/.config/systemd/user/
systemctl --user enable --now local-joshua______________________________________________________________________
网络防御管道
UniFi MCP Poll (30s) → Threat Summary → Client Baseline → Anomaly Detection
│ │
│ ┌───────────────────────────────┐ │
└───►│ Threat Intel Cross-Reference │───────────────────┤
│ (abuse.ch: C2 IPs + domains) │ │
└───────────────────────────────┘ │
┌───────────────────────────────────────┘
▼
Threat Classification
│
├──► Correlation Engine (RF + Network)
│ Evil Twin / Deauth→Reconnect / Coordinated
│
┌───────────────┼───────────────┐
▼ ▼ ▼
CRITICAL HIGH/MED LOW/INFO
Auto-Block + Blackboard + Log Only
Voice Alert Finding Post
+ Timeline + Timeline严重程度级别
| 严重性 | 异常类型 | 响应 |
|---|---|---|
| 关键 | 流氓AP、安全VLAN上的未经授权设备、检测到邪恶双胞胎、协同攻击、威胁情报匹配 | 自动阻止+语音+黑板查找+事件时间线 |
| 高 | 未知OUI、人口激增、身份验证失败突发、IPS警报、deauth→重新连接,探测→关联 | 黑板查找+语音警报+事件时间线 |
| 中等 | 新设备(已知OUI),异常DPI模式,矿工温度警告 | 黑板查找 |
| LOW | 设备网络变化,矿工共享异常 | 黑板查找 |
| 信息 | 基线学习,常规事件 | 仅记录 |
______________________________________________________________________
许可证
仅用于授权的安全测试、CTF竞赛和教育用途。
