https://github.com/wct097/eft-viewer
Open-source cross-platform viewer for EFT / ANSI-NIST-ITL biometric files — view fingerprint (WSQ), demographic, and transaction records. Windows · macOS · Linux.
https://github.com/wct097/eft-viewer
afis ansi-nist avalonia biometrics dotnet eft fingerprint forensics livescan nist-itl wsq
Last synced: about 2 months ago
JSON representation
Open-source cross-platform viewer for EFT / ANSI-NIST-ITL biometric files — view fingerprint (WSQ), demographic, and transaction records. Windows · macOS · Linux.
- Host: GitHub
- URL: https://github.com/wct097/eft-viewer
- Owner: wct097
- License: apache-2.0
- Created: 2026-01-31T14:51:12.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-06-03T03:21:50.000Z (about 2 months ago)
- Last Synced: 2026-06-03T05:13:44.307Z (about 2 months ago)
- Topics: afis, ansi-nist, avalonia, biometrics, dotnet, eft, fingerprint, forensics, livescan, nist-itl, wsq
- Language: C#
- Homepage: https://github.com/wct097/eft-viewer/releases
- Size: 1.77 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# EFT Viewer
An open-source, cross-platform viewer for Electronic Fingerprint Transmission (EFT) files based on the ANSI/NIST-ITL biometric data interchange standard.
## Download
Download the latest release from the [Releases page](../../releases).
Self-contained builds are published for Windows, macOS, and Linux — no .NET runtime installation required.
### Windows
Download `EftViewer-vX.X.X-win-x64.zip`, extract, and run `EftViewer.Desktop.exe`.
### macOS
Download `EftViewer-vX.X.X-osx-arm64.zip` (Apple Silicon), extract, then:
```bash
chmod +x EftViewer.Desktop
./EftViewer.Desktop
```
The builds are not yet code-signed, so the first launch needs Finder → right-click → **Open** (or `xattr -dr com.apple.quarantine EftViewer.Desktop`) to clear Gatekeeper.
### Linux
Download `EftViewer-vX.X.X-linux-x64.zip`, extract, then:
```bash
chmod +x EftViewer.Desktop
./EftViewer.Desktop
```
## Screenshots
| Type-4 Legacy Fingerprints | Type-14 Ten-Print Card |
|:---:|:---:|
|  |  |
## Overview
EFT files are used by the ATF, FBI, and other agencies for electronic fingerprint submission. This tool allows users to open, parse, and view the contents of EFT files including:
- Transaction information (Type-1 records)
- Descriptive/demographic data (Type-2 records)
- Fingerprint images (Type-4, Type-14 records) with WSQ decompression
- Additional biometric data records
## Project Status
**v0.1.0** - Initial release
### Features
- [x] Open and parse EFT file structure
- [x] Display record hierarchy and metadata fields
- [x] Decode and display WSQ-compressed fingerprint images
- [x] Support for Type-4 (legacy) and Type-14 fingerprint records
- [x] Windows desktop application
### Future Goals
- [x] PNG export for fingerprint images
- [x] macOS and Linux builds (self-contained, build + test in CI)
- [ ] Field validation against ANSI/NIST-ITL spec
- [ ] Type-10 (face/SMT) and Type-15 (palmprint) support
- [ ] Code signing via [SignPath.io](https://signpath.io) (eliminate Windows SmartScreen warning)
## Technology Stack
| Component | Technology | Notes |
|-----------|------------|-------|
| Core Parser | C# / .NET Standard 2.0 | Shared library, broad compatibility |
| Desktop UI | Avalonia UI / .NET 10 | Cross-platform (Windows, macOS, Linux) |
| Mobile (future) | .NET MAUI | Android/iOS |
| WSQ Codec | Managed C# (Managed.Wsq-derived) | FBI wavelet compression standard, no native deps |
| Alt CLI | Python | Scripting/automation use cases |
### Why These Choices
**Avalonia UI over MAUI for desktop**: More mature cross-platform desktop support today. MAUI excels at mobile but Avalonia provides better Windows/macOS/Linux parity for desktop apps.
**.NET Standard 2.0 for core library**: Maximum compatibility across runtimes. The parser can be consumed by desktop, mobile, or even older .NET Framework projects if needed.
## EFT / ANSI-NIST-ITL Format Reference
The ANSI/NIST-ITL standard (NIST Special Publication 500-290) defines a record-based format for biometric data interchange.
### Record Types
| Type | Description |
|------|-------------|
| 1 | Transaction information (required, exactly one) |
| 2 | User-defined descriptive text |
| 4 | Grayscale fingerprint image (legacy, 8-bit) |
| 10 | Face, SMT (scars/marks/tattoos) image |
| 14 | Variable-resolution fingerprint image (current standard) |
| 15 | Variable-resolution palmprint image |
### Structure
Records contain tagged fields in the format `Type.Field:Value`. Fields are separated by control characters:
| Separator | Hex | Purpose |
|-----------|-----|---------|
| GS | 0x1D | Group separator (between fields) |
| RS | 0x1E | Record separator (between subfields) |
| US | 0x1F | Unit separator (between information items) |
| FS | 0x1C | File separator (end of record) |
### Image Encoding
Fingerprint images in Type-4 and Type-14 records are typically WSQ compressed (Wavelet Scalar Quantization), an FBI-developed format optimized for fingerprint ridge detail at ~15:1 compression.
**WSQ Resources:**
- NIST Biometric Image Software (NBIS): https://www.nist.gov/services-resources/software/nist-biometric-image-software-nbis
- Contains reference `dwsq` (decode) and `cwsq` (encode) implementations in C
## Sample Files
The `samples/` directory contains NIST-provided test files:
- **nist-type-4-14-flats.eft** - Legacy Type-4 and modern Type-14 fingerprint records
- **nist-type-14-tpcard.eft** - Ten-print card with Type-14 records and quality metrics
See `samples/README.md` for details and links to additional NIST test data.
## Building from Source
### Prerequisites
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) or later
- Visual Studio 2022 or VS Code with C# Dev Kit (optional)
### Build and Run
```bash
# 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
```
### Solution Structure
```
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-Assisted Development
This project is developed with AI assistance. Guidance for AI assistants lives in
[CLAUDE.md](CLAUDE.md) and [docs/project_context.md](docs/project_context.md).
## License
Copyright 2026 William Tyler
Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.