Files

95 lines
9.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 内部团队首次部署(Windows x64)
接收方先准备当前用例需要的工具,随后插件自动发现和检查。无需逐项填写程序路径。插件 ZIP 包含适配代码、原 Skill、通用样例和说明,不携带第三方程序、驱动、本机 profile、账号或测试数据。
## 1. 准备 Artemis 和 Python
使用已正常安装的 Artemis 2.x。在插件设置中把 `python` 指向当前 Artemis 环境的 **64 位 Python**,通常是该项目 `.venv\Scripts\python.exe`。独立 Python 需要具备 [requirements.txt](requirements.txt) 中的 MCP 和 dotenv;Artemis 插件安装器只解压、校验及登记插件,不自动执行 pip。
如果 MCP 服务无法启动,先在该解释器中检查导入:
```powershell
& '<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`。** 示例目录结构:
```text
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 可留空;仅在固定版本、特殊安装或排查时使用 [原通用样例](skill/assets/profile.example.json)。其中相对路径以 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](https://ffmpeg.org/download.html)、[MediaInfo Windows(区分 GUI/CLI/DLL)](https://mediaarea.net/en/MediaInfo/Download/Windows)、[Wireshark Windows 安装](https://www.wireshark.org/docs/wsug_html_chunked/ChBuildInstallWinInstall.html)、[Nmap](https://nmap.org/download.html)、[Binwalk](https://github.com/ReFirmLabs/binwalk)。Npcap 是否已安装、许可和权限由接收方按自己的部署要求核实。不要运行工具包中无关的激活器。
## 4. 刷新环境并在插件内验收
MCP 继承 **Artemis 主进程启动时的 PATH**,不会读取系统设置后自动替换已有进程的环境。修改 PATH 后,等当前任务结束,从已获得新环境的入口重新启动 Artemis,再运行插件自检。新终端的 `where.exe ffprobe` 成功只说明该终端能找到,不能证明运行中的 Artemis 已看到新 PATH。统一目录配置变更由后续插件会话使用,无需为了设置路径终止正在运行的任务。
在正常 Artemis 任务中选择本插件;纯电脑任务同时选择已授权的视觉插件。可直接提供以下任务说明:
```text
只调用家庭安防多工具测试插件的 environment_doctor,设置 check_functional=true。
逐项报告发现、启动/DLL 加载、本地样本结果和能力状态,保存实际 JSON 证据。
不扫描设备、不抓包、不打开串口、不执行固件操作。缺失只阻塞依赖它的能力。
```
也可在解压后的插件目录使用 Artemis Python 独立检查,无需插件依赖已能导入:
```powershell
& '<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 不纳入这些回执。固件写入默认关闭,环境准备和自检不会开启它。