复制 ╔══════════════════════════════════════════════════════════════╗
║ ║
║ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ║
║ ██║ ██║██╔═══██╗██╔══██╗██╔══██╗ ║
║ ██║ █╗ ██║██║ ██║██████╔╝██████╔╝ ║
║ ██║███╗██║██║ ██║██╔═══╝ ██╔══██╗ ║
║ ╚███╔███╔╝╚██████╔╝██║ ██║ ██║ ║
║ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ║
║ ║
║ 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 <key> 头球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=<generated-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://<jetson-ip>: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竞赛和教育用途。