rohanpandula/nikon-coolscan4-software-archaeology
GitHub: rohanpandula/nikon-coolscan4-software-archaeology
对 Nikon Scan 4 驱动软件进行基于证据的系统化行为记录与结构化编目,为现代 macOS 重新实现奠定规范基础。
Stars: 0 | Forks: 0
# Nikon Coolscan / Nikon Scan 4 软件考古
对 Nikon Scan 4 及其在 Nikon SUPER COOLSCAN 5000 ED (LS-5000) 上行为的基于证据的重建。
本项目将该软件作为一个系统进行记录:每一个可见的控件、隐藏的依赖关系、工作流、条件状态、硬件副作用、历史遗留特性以及未解决的问题。目标是在尝试为现代计算机重新设计或重新实现之前,忠实地理解 Nikon Scan。
仓库名称中的 `4` 指的是 **Nikon Scan 4**,而不是第四代 Coolscan 硬件。
## 项目状态
第一个考古样本已足够完整,可以作为结构化的基线:
| 样本 | 记录状态 |
|---|---|
| 应用程序 | Nikon Scan 4.0.3.3000 |
| 扫描仪 | Nikon SUPER COOLSCAN 5000 ED / LS-5000 |
| 扫描仪固件 | 1.03 |
| 连接方式 | USB 直通至 Windows 10 虚拟机 |
| 直接观察到的适配器 | 单张 35 mm 幻灯片适配器 |
| 先前确证的证据 | 条带式胶片适配器与缩略图工作流 |
| 清单状态 | 版本 1.0.0,已通过 schema 验证 |
初始清单包含:
- **35** 个应用程序和扫描仪界面
- **235** 个单独描述的控件和功能
- **10** 个已记录的历史遗留特性
- **8** 个端到端工作流
- **19** 个键盘快捷键
- **7** 个留待后续调查的明确空白
- **300** 个稳定的唯一 ID
本仓库目前是一个考古项目。它还不是扫描仪应用程序或替代驱动程序。
## 现代 macOS 概念
考古工作已经支持了首个视觉设计练习:保留 Nikon Scan 的深度,同时使媒体、队列状态、处理过程和物理扫描仪操作变得更加清晰。

概念集涵盖:
- 一张[已装裱的 C-41 彩色负片幻灯片](docs/mockups/modern-macos-mounted-c41-negative.png),带有红外线除尘与划痕缺陷图
- 一个[六帧条带工作区](docs/mockups/modern-macos-6-frame-strip.png)
- 一张[36 张曝光的底片卷小样印片](docs/mockups/modern-macos-36-frame-roll.png),支持批量选择
- 一次[活跃的 36 帧扫描](docs/mockups/modern-macos-active-36-frame-scan.png),包含队列、进度、扫描回执和硬件状态
这些是视觉产品概念,不是正在运行的扫描仪软件截图。请阅读[模型原理与图库](docs/mockups/README.md),了解每个界面所代表的行为。
## 存在原因
Nikon Scan 不仅仅是一组滑块。其行为取决于扫描仪、适配器、胶片类型、色彩管理状态、选定帧、活动窗口、输出格式以及可能物理移动媒体的操作。
单纯的视觉模仿会遗漏这个系统。一个可靠的现代替代方案首先需要一份行为规范:
```
flowchart LR
A["LS-5000 and active adapter"] --> B["Observed Nikon Scan behavior"]
B --> C["Screenshots and operation receipts"]
D["Hash-pinned program resources"] --> C
C --> E["Structured inventory"]
E --> F["Faithful legacy specification"]
E --> G["Modern UX exploration"]
F --> H["Future reimplementation"]
G --> H
```
清单刻意将两个概念分开:
1. **Nikon Scan 目前的功能** —— 标签、状态、依赖关系、持久性、副作用和观察到的行为。
2. **现代界面可以如何改进它** —— 更清晰的语言、更安全的硬件操作、可见的依赖关系以及更连贯的工作流。
这种分离可防止现代化构想悄悄改写历史记录。
## 从这里开始
- 浏览 [LS-5000 清单](data/nikon-scan-4/ls-5000/inventory.json)。
- 阅读[清单 schema](schemas/inventory.schema.json) 以基于其构建工具。
- 阅读[考古方法论](docs/METHODOLOGY.md),了解主张是如何被采纳的。
- 探索[现代 macOS 模型集](docs/mockups/README.md)。
- 审查[证据政策](evidence/README.md)和已发布的哈希账本。
- 使用[贡献指南](CONTRIBUTING.md)添加观察结果、适配器、工作流或更正。
要在本地列出已记录的界面:
```
jq '.surfaces[] | {id, name, controls: (.controls | length)}' \
data/nikon-scan-4/ls-5000/inventory.json
```
验证数据集:
```
python3 -m json.tool data/nikon-scan-4/ls-5000/inventory.json >/dev/null
python3 -c 'import json, jsonschema; jsonschema.validate(json.load(open("data/nikon-scan-4/ls-5000/inventory.json")), json.load(open("schemas/inventory.schema.json")))'
```
## 清单描述内容
数据集在多个层面对该软件进行了覆盖。
### 应用程序外壳
- 文件、编辑、视图、扫描仪、工具和帮助菜单
- 应用程序工具栏和文档窗口命令
- 最近文件、打印、保存行为、网格、缩放和窗口管理
- 在没有活动图像文档时观察到的启用和禁用状态
### 扫描仪控制
- 胶片类型、扫描色彩空间、位深、变换和设置菜单
- 预览、预扫描、扫描、自动对焦、缩放和弹出功能
- Processed 和 Natural 预览面板
- 裁剪几何、输出大小、缩放比例、分辨率和文件大小限制
- 缩略图和多帧选择行为
- 进度和取消状态
### 工具调色板 1
- 布局、信息和裁剪
- 曲线
- 色彩平衡
- Unsharp Mask
- LCH 编辑器
- Digital ICE4 Advanced,包括 ICE、ROC、GEM 和 DEE
- Analog Gain
- Scan Image Enhancer
- 用于幻灯片和条带适配器的 Scanner Extras
### 首选项和对话框
- Gamma
- Nikon Color Management
- 临时文件位置
- 单次扫描和批量扫描操作
- 文件保存默认值和每次扫描的文件保存选项
- 自动操作
- 高级颜色目标
- 预览设置
- 网格设置
- 进度、确认和图像文档行为
### 工作流
- 预览采集
- 预扫描密度测量和自动曝光测量
- 单次扫描至文件
- 多帧批量扫描
- 设置预设生命周期
- 色彩管理重启
- 校准
- 物理媒体弹出
## 数据模型
每个界面和控件都会获得一个稳定的 ID。控件记录的内容不仅仅是其可见标签:
```
{
"id": "scanner.eject",
"label": "Eject",
"type": "menu_item",
"function": "Physically ejects film from the active adapter.",
"current_value": "disabled for the mounted-slide state",
"side_effects": [
"Physical-media movement",
"May lose frame registration"
],
"evidence": [
"private-evidence:obs-010-scanner-menu.png",
"twain-string:24579"
],
"confidence": "observed",
"modern_ux_notes": [
"Treat as a dangerous explicit media action, visually separated from navigation."
]
}
```
常见字段包括:
| 字段 | 含义 |
|---|---|
| `id` | 用于讨论、diff 和未来实现的稳定标识符 |
| `function` | 控件或界面的作用 |
| `values` | 已知时的枚举选项 |
| `current_value` | 记录样本中可见的状态 |
| `enabled_when` / `visible_when` | 控制可用性的条件 |
| `dependencies` | 影响行为的其他设置或状态 |
| `side_effects` | 文件、应用程序、扫描仪或物理媒体产生的后果 |
| `persistence` | 设置在对话框、扫描或重启后是否得以保留 |
| `evidence` | 支持该主张的截图、资源或操作回执 |
| `confidence` | 行为被确立的直接程度 |
| `modern_ux_notes` | 独立于历史记录之外保留的重新设计构想 |
## 证据与置信度
主张按来源标记:
| 置信度 | 含义 |
|---|---|
| `observed` | 在主要的实时观察环节中直接可见 |
| `observed_prior_session` | 在单独的 LS-5000 环节中直接可见 |
| `resource_extracted` | 存在于哈希固定的 Nikon Scan 可执行文件或 TWAIN 资源表中 |
| `inferred` | 由周边证据支持的有界解释 |
| `unverified` | 已知或疑似,但尚未建立足够的把握来主张 |
本仓库绝不将资源字符串视为某项功能适用于所有扫描仪或适配器的证据。存在性、可用性和行为是相互独立的问题。
### 公开证据边界
清单是根据 190 张前/后对比截图加上早期的 LS-5000 观察结果生成的。初始公开仓库发布了引用的文件名和 SHA-256 哈希值,但未发布私有虚拟机截图本身。部分截图中包含用户扫描件、本地机器名称或输出路径。
这意味着当前版本在不公开私人材料的情况下,提高了其证据来源的透明度。后续的证据发布可以增加经过审查、裁剪或编辑的截图,同时保留现有的哈希值作为来源证明。
此处不分发任何 Nikon 可执行文件、驱动程序、固件、配置文件或其他供应商二进制文件。所包含的资源提取器是只读的,必须在研究人员有权独立拥有的软件上运行。
## 考古原则
1. **先观察后解读。** 在分配意图之前记录可见状态。
2. **固定样本。** 每次调查都应包含应用程序版本、扫描仪型号、固件、适配器和相关的二进制哈希值。
3. **区分存在与行为。** 休眠资源并不能证明存在实时功能。
4. **对条件化界面进行建模。** 特定于适配器的控件不应被泛化到每个 LS-5000 设置中。
5. **保护物理媒体。** 弹出、传输、校准、对焦、预览和扫描操作都是硬件操作,而不是无害的 UI 点击。
6. **恢复可逆状态。** 只有在恢复临时设置并记录最终扫描仪状态后,观察才算结束。
7. **保持不确定性可见。** 未知项会成为有界问题,而不是编造的答案。
8. **保持现代化分离。** 首先保留旧行为;然后再决定应该改变什么。
## 已知空白
第一份清单有意留下了几个悬而未决的问题:
- CMS 重启后的完整 Nikon Color Management 界面
- 可选的幻灯片进片器行为
- 其他未观察到的 LS-5000 适配器所暴露的控件
- 每个数字滑块的精确端点和键盘增量
- 完整的输出格式、位深和压缩依赖矩阵
- 嵌套的预设、自定义分辨率、帮助、验证和错误对话框
- 自然发生的扫描仪故障、取消状态和恢复提示
每个空白在清单中都包含有界的后续跟踪方法。贡献者应扩展这些条目,而不是用回忆来代替不确定性。
## 路线图
- [x] 建立 LS-5000 清单 schema
- [x] 记录主要的 Nikon Scan 4 应用程序和扫描仪界面
- [x] 将历史遗留特性与现代 UX 笔记分开
- [x] 发布哈希固定、保护隐私的初始数据集
- [ ] 补全 CMS 开启和输出格式矩阵
- [ ] 为核心界面添加已审查的公开截图
- [ ] 将每个 LS-5000 适配器记录为条件化界面
- [ ] 将清单转化为用户故事和状态机
- [ ] 生成忠实的遗留交互规范
- [ ] 探索多种现代 UX 方向,同时不抹除遗留行为
- [ ] 为重新实现定义硬件抽象和安全模型
- [ ] 增量地构建并测试开放式的现代替代方案
## 项目边界
这是一个独立的保存与互操作性研究项目。它不隶属于 Nikon,也不受其认可或赞助。Nikon、Coolscan、SUPER COOLSCAN、Nikon Scan、Digital ICE 和其他名称可能是其各自所有者的商标。
本项目不分发 Nikon 软件,也不主张对 Nikon 界面图稿的所有权。本仓库中的原始文档、结构化观察结果、schema 和工具均在仓库许可证下提供。第三方软件以及未来可能出现的任何第三方证据仍受其自身权利的约束。
## 许可证
本仓库中的原始代码、文档和结构化数据采用 [MIT 许可证](LICENSE)授权。该许可不授予对 Nikon 软件、商标、固件或第三方材料的权利。
标签:Homebrew安装, 云资产清单, 图像扫描, 文档记录, 硬件交互, 软件考古, 逆向工具, 逆向工程, 防御加固