9.7 KiB
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 不纳入这些回执。固件写入默认关闭,环境准备和自检不会开启它。