wct097/eft-viewer
GitHub: wct097/eft-viewer
开源跨平台的 EFT/ANSI-NIST-ITL 生物特征文件查看器,支持解析并展示指纹交易记录与 WSQ 压缩指纹图像。
Stars: 0 | Forks: 0
# EFT Viewer
一款基于 ANSI/NIST-ITL 生物特征数据交换标准的开源、跨平台电子指纹传输 (Electronic Fingerprint Transmission, EFT) 文件查看器。
## 下载
从[发布页面](../../releases)下载最新版本。
已发布适用于 Windows、macOS 和 Linux 的独立构建版本 —— 无需安装 .NET 运行时。
### Windows
下载 `EftViewer-vX.X.X-win-x64.zip`,解压后运行 `EftViewer.Desktop.exe`。
### macOS
下载 `EftViewer-vX.X.X-osx-arm64.zip` (Apple Silicon),解压后执行:
```
chmod +x EftViewer.Desktop
./EftViewer.Desktop
```
目前的构建版本尚未进行代码签名,因此首次启动需要通过 Finder → 右键点击 → **打开** (或执行 `xattr -dr com.apple.quarantine EftViewer.Desktop`) 来绕过 Gatekeeper 拦截。
### Linux
下载 `EftViewer-vX.X.X-linux-x64.zip`,解压后执行:
```
chmod +x EftViewer.Desktop
./EftViewer.Desktop
```
## 截图
| Type-4 旧版指纹 | Type-14 十指指纹卡 |
|:---:|:---:|
|  |  |
## 概述
EFT 文件被 ATF、FBI 及其他机构用于电子指纹提交。本工具允许用户打开、解析并查看 EFT 文件的内容,包括:
- 交易信息 (Type-1 记录)
- 描述/人口统计数据 (Type-2 记录)
- 支持 WSQ 解压的指纹图像 (Type-4、Type-14 记录)
- 其他生物特征数据记录
## 项目状态
**v0.1.0** - 初始版本
### 功能
- [x] 打开并解析 EFT 文件结构
- [x] 显示记录层级和元数据字段
- [x] 解码并显示 WSQ 压缩的指纹图像
- [x] 支持 Type-4 (旧版) 和 Type-14 指纹记录
- [x] Windows 桌面应用程序
### 未来目标
- [x] 指纹图像导出为 PNG
- [x] macOS 和 Linux 构建 (独立构建,在 CI 中构建并测试)
- [ ] 根据 ANSI/NIST-ITL 规范进行字段验证
- [ ] 支持 Type-10 (面部/SMT) 和 Type-15 (掌纹)
- [ ] 通过 [SignPath.io](https://signpath.io) 进行代码签名 (消除 Windows SmartScreen 警告)
## 技术栈
| 组件 | 技术 | 说明 |
|-----------|------------|-------|
| 核心解析器 | C# / .NET Standard 2.0 | 共享库,兼容性广 |
| 桌面 UI | Avalonia UI / .NET 10 | 跨平台 (Windows、macOS、Linux) |
| 移动端 (未来) | .NET MAUI | Android/iOS |
| WSQ Codec | 托管 C# (基于 Managed.Wsq) | FBI 小波压缩标准,无原生依赖 |
| 备选 CLI | Python | 脚本/自动化用例 |
### 为什么选择这些技术
**桌面端选择 Avalonia UI 而非 MAUI**:目前提供了更成熟的跨平台桌面支持。MAUI 在移动端表现出色,但 Avalonia 为桌面应用提供了更好的 Windows/macOS/Linux 体验一致性。
**核心库选择 .NET Standard 2.0**:在各种运行时中具有最大的兼容性。如有需要,该解析器可被桌面端、移动端甚至旧版 .NET Framework 项目使用。
## EFT / ANSI-NIST-ITL 格式参考
ANSI/NIST-ITL 标准 (NIST 特别出版物 500-290) 定义了用于生物特征数据交换的基于记录的格式。
### 记录类型
| 类型 | 说明 |
|------|-------------|
| 1 | 交易信息 (必需,有且仅有一个) |
| 2 | 用户定义的描述性文本 |
| 4 | 灰度指纹图像 (旧版,8 位) |
| 10 | 面部、SMT (疤痕/印记/纹身) 图像 |
| 14 | 可变分辨率指纹图像 (当前标准) |
| 15 | 可变分辨率掌纹图像 |
### 结构
记录包含格式为 `Type.Field:Value` 的带标签字段。字段之间由控制字符分隔:
| 分隔符 | 十六进制 | 用途 |
|-----------|-----|---------|
| GS | 0x1D | 组分隔符 (字段之间) |
| RS | 0x1E | 记录分隔符 (子字段之间) |
| US | 0x1F | 单元分隔符 (信息项之间) |
| FS | 0x1C | 文件分隔符 (记录结束) |
### 图像编码
Type-4 和 Type-14 记录中的指纹图像通常采用 WSQ 压缩 (小波标量量化),这是一种由 FBI 开发的格式,专为指纹纹理细节优化,压缩比约为 15:1。
**WSQ 资源:**
- NIST 生物特征图像软件 (NBIS):https://www.nist.gov/services-resources/software/nist-biometric-image-software-nbis
- 包含 C 语言的参考 `dwsq` (解码) 和 `cwsq` (编码) 实现
## 示例文件
`samples/` 目录包含 NIST 提供的测试文件:
- **nist-type-4-14-flats.eft** - 旧版 Type-4 和现代 Type-14 指纹记录
- **nist-type-14-tpcard.eft** - 包含 Type-14 记和质量指标的十指指纹卡
详情及其他 NIST 测试数据链接,请参见 `samples/README.md`。
## 从源码构建
### 前置条件
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) 或更高版本
- Visual Studio 2022 或带有 C# Dev Kit 的 VS Code (可选)
### 构建与运行
```
# Clone the repository
git clone https://github.com/wct097/eft-viewer.git
cd eft-viewer
# Restore dependencies
dotnet restore
# Build
dotnet build
# Run the desktop application
dotnet run --project src/EftViewer.Desktop
# Run tests
dotnet test
```
### 解决方案结构
```
EftViewer.sln
├── src/
│ ├── EftViewer.Core/ # Parser library (.NET Standard 2.0)
│ └── EftViewer.Desktop/ # Avalonia UI application (.NET 10)
└── tests/
└── EftViewer.Core.Tests/ # Unit tests (xUnit)
```
## AI 辅助开发
本项目在 AI 的辅助下开发。面向 AI 助手的指南位于
[CLAUDE.md](CLAUDE.md) 和 [docs/project_context.md](docs/project_context.md)。
## 许可证
版权所有 2026 William Tyler
根据 Apache License, Version 2.0 授权。详情请参阅 [LICENSE](LICENSE)。
标签:ANSI-NIST-ITL, C2日志可视化, WSQ图像解压, 指纹识别, 文件查看器, 生物特征识别, 逆向工具