Files
Artemis-Plugins/plugins/artemis-device-test/DEPLOYMENT.md

9.7 KiB
Raw Permalink Blame History

Rust 3 测试市场版本 0.5.0+artemis.7;独立 Python/MCP/dotenv 与外部工具由使用者准备。验证边界见 RUST3-VERIFICATION.md。下文保留原 2.x 版本的历史范围。

内部团队首次部署(Windows x64)

接收方先准备当前用例需要的工具,随后插件自动发现和检查。无需逐项填写程序路径。插件 ZIP 包含适配代码、原 Skill、通用样例和说明,不携带第三方程序、驱动、本机 profile、账号或测试数据。

1. 准备 Artemis 和 Python

使用已正常安装的 Artemis 2.x。在插件设置中把 python 指向当前 Artemis 环境的 64 位 Python,通常是该项目 .venv\Scripts\python.exe。独立 Python 需要具备 requirements.txt 中的 MCP 和 dotenv;Artemis 插件安装器只解压、校验及登记插件,不自动执行 pip。

如果 MCP 服务无法启动,先在该解释器中检查导入:

& '<Artemis Python 的绝对路径>' -I -c 'import mcp, dotenv; print("imports OK")'

依赖不齐时由维护该 Python 环境的人按它的依赖管理方式安装 requirements,然后重新诊断。不要切换 Artemis 全局 Python 来兼容旧 Binwalk。

2. 选择一种工具摆放方式

方式 A:把程序所在目录加入 Windows PATH。 加目录,不能把单个 EXE 或 DLL 文件加入 PATH。例如 FFmpeg 包的 bin 目录、Wireshark 完整安装目录、Nmap 安装目录和 MediaInfo DLL 目录。保留各软件需要的相邻 DLL、数据文件和配置资源;不要只复制一个 EXE。PATH 中的 MediaInfo 目录直接包含 MediaInfo.dll,不会递归搜索 PATH 下的全部文件夹。

方式 B:集中到已解压目录,在插件中只设置一次 tool_root。 示例目录结构:

D:\ArtemisTools\
  ffmpeg\bin\ffprobe.exe
  ffmpeg\bin\ffmpeg.exe
  wireshark\tshark.exe
  wireshark\dumpcap.exe
  nmap\nmap.exe
  mediainfo\x64\MediaInfo.dll
  binwalk-python\Scripts\python.exe   (选择 Python 模块方式时)

这些行只显示入口;各软件的其他必需文件也要完整保留。统一目录最多枚举四层子目录、每个根目录最多 20000 个文件;使用专用小目录,不填整个磁盘。压缩包或安装包不能直接执行,插件不会解压或安装它们。

可混合使用:显式 profile 配置优先,其次 tool_root,最后 PATH。profile 可留空;仅在固定版本、特殊安装或排查时使用 原通用样例。其中相对路径以 profile 文件所在目录为基准。显式路径不存在、文件名错误或 DLL 位数错误会报错,不会静默改用其他版本。因此跨电脑分发时不要携带自己的 profile。

Binwalk 的单独优先级为:profile.runtimes.binwalk_python → profile.tools.binwalk → tool_root\binwalk-python\Scripts\python.exe → 统一目录中的原生 Binwalk → PATH 原生 Binwalk。自动发现的模块运行时固定执行 python.exe -I -m binwalk,不会猜测 PATH 中哪个 Python 安装了该模块。按软件要求在接收方重新创建和准备虚拟环境;Python 虚拟环境不能靠复制另一台电脑上的目录保证可移植。

3. 按能力准备依赖

需要的功能 首次准备 插件自检覆盖与现场条件
probe_media 媒体元数据 完整 FFmpeg 发行包里的 ffprobe 固定本地 AVI 视频读出尺寸。RTSP 地址、连接和业务预期在任务里验证
FFmpeg 环境检查 同包的 ffmpeg 固定本地视频解码并检查两帧哈希输出;当前业务入口未提供通用转码/滤镜命令
media_info Windows x64 的 MediaInfo.dll 及其依赖 先读 PE 位数,再在独立子进程加载并调用所需 API,最后解析固定 AVI。GUI 或 mediainfo.exe 不能代替此 DLL 后端
analyze_pcap 完整 Wireshark/TShark 安装 离线读取固定 PCAP 的包号、地址、端口;已有 PCAP 的读取不依赖 Npcap
capture_packets dumpcap、Npcap、合适权限 自检只枚举接口,不抓包。实际所选网卡、驱动、权限仍须按任务核实
scan_ports 完整 Nmap 安装 自检用空目标列表检查本地 XML 输出,禁用 DNS;不扫描任何地址。正式入口只做显式单 IP/数字 TCP 端口连接检查
scan_firmware 可用的原生 Binwalk,或单独准备的 Binwalk Python 环境 固定本地 gzip 签名,核对偏移;不解包。旧 Binwalk 2.x 可能需要兼容 Python(原资料的 2.3.2 曾使用单独 3.11 环境),历史版本记录不是最新版推荐
capture_serial PowerShell、串口适配器驱动、可用 COM 自检检查 SerialPort 类型和端口枚举,不打开 COM、不切换 DTR/RTS、不读写设备;正式采样需要明确端口、波特率、时长及独占权限
V1/V2 查询及固件预检 包内标准库协议脚本、实际网络和目标身份 不依赖配置工具 GUI;doctor 不发送设备发现包。正式发现、查询和固件流程仍通过当前 Artemis 任务执行
PC 配置程序、移动视联、mainThread、SecureCRT 对应合法可用的完整软件、授权视觉插件 需要实际窗口及任务权限。串口只读采集有独立入口,不要求 SecureCRT
客诉、联楹/连楹、DM、软探针、路由器等网站 已确认地址、网络、授权会话及视觉插件 PATH 不创建登录状态;按原路由人工登录,再观察实际业务页面
固件加密、算法 OTA 等厂商能力 对应厂商 SDK/程序、操作契约与权限 不能由通用 Binwalk 或端口检查代替
Android APP 测试 Artemis 已有 Android 工具、目标设备及 APP 环境 在当前任务核对设备,外部工具的本地自检不验证手机业务

依赖官方入口:FFmpeg、MediaInfo Windows(区分 GUI/CLI/DLL)、Wireshark Windows 安装、Nmap、Binwalk。Npcap 是否已安装、许可和权限由接收方按自己的部署要求核实。不要运行工具包中无关的激活器。

4. 刷新环境并在插件内验收

MCP 继承 Artemis 主进程启动时的 PATH,不会读取系统设置后自动替换已有进程的环境。修改 PATH 后,等当前任务结束,从已获得新环境的入口重新启动 Artemis,再运行插件自检。新终端的 where.exe ffprobe 成功只说明该终端能找到,不能证明运行中的 Artemis 已看到新 PATH。统一目录配置变更由后续插件会话使用,无需为了设置路径终止正在运行的任务。

在正常 Artemis 任务中选择本插件;纯电脑任务同时选择已授权的视觉插件。可直接提供以下任务说明:

只调用家庭安防多工具测试插件的 environment_doctor,设置 check_functional=true。
逐项报告发现、启动/DLL 加载、本地样本结果和能力状态,保存实际 JSON 证据。
不扫描设备、不抓包、不打开串口、不执行固件操作。缺失只阻塞依赖它的能力。

也可在解压后的插件目录使用 Artemis Python 独立检查,无需插件依赖已能导入:

& '<Artemis Python 的绝对路径>' -I -B .\dependency_runner.py --timeout 42 doctor
& '<Artemis Python 的绝对路径>' -I -B .\dependency_runner.py --timeout 42 doctor --check-versions
& '<Artemis Python 的绝对路径>' -I -B .\dependency_runner.py --tool-root 'D:\ArtemisTools' --timeout 42 doctor --check-functional

工具参数 check_versions=true 运行版本/帮助或 DLL 加载 API 检查;check_functional=true 自动包含启动检查,并额外运行固定本地样本。默认两项为 false,只发现路径和模块、读取 DLL PE 头,不执行外部程序。

报告的 tools[].discovery/startup/functional 分开记录。capabilities 中 blocked 表示该项依赖缺失或检查失败,available_unverified 表示已发现但尚未完成功能自检,local_verified 表示通过所列本地检查。每个工具的失败独立记录;MediaInfo 缺失或 Binwalk 失败不妨碍 ffprobe 查询视频。

总时限受插件及宿主预算限制,单项自检最多三秒。慢机器可能出现 timed_out,预算耗尽的剩余项为 budget_exhausted,均不能当作已经验证;可在正确的宿主/插件预算下复查。接口枚举、COM 枚举只报告本机条件,不承诺驱动、抓包权限、串口通信或业务验收已通过。

常见排查

  • 本机可运行,插件提示 missing:检查 Artemis 继承的 PATH;将完整软件目录加入 PATH,或只设置一次 tool_root。清除移植时误带的旧 profile。
  • MediaInfo 位数错误:安装与插件 Python 匹配的 x64 DLL。自动发现会跳过不匹配候选;显式指定错误 DLL 会直接报错。PE 匹配后仍可能因缺失依赖/API 而加载失败,以 startup 和 functional 为准。
  • Binwalk 帮助成功但样本失败:说明入口存在,签名分析仍不可用;检查完整安装、模块及数据依赖。不要改动 Artemis Python 解决旧模块的兼容问题。
  • TShark 可分析但不能抓包:分别检查 dumpcap、Npcap、目标网卡及权限。Wireshark 静默安装不自动静默安装 Npcap。
  • 插件启用但网站不可用:核对网络、实际浏览器会话和授权;软件发现不等于已经登录。

运行时回执可能含本机工具路径,供本机排查;对团队分享前按资料权限处理。发布 ZIP 不纳入这些回执。固件写入默认关闭,环境准备和自检不会开启它。