一个为 Focal-systems FT9201 指纹读取器开发的 Linux libfprint 驱动,通过小型进程内 PE 加载器原生运行厂商的 Windows 匹配引擎,支持通过 fprintd 进行指纹录入和验证。

Stars

23

7 天增长

暂无数据

Fork 数

1

开放 Issue

0

开源协议

LGPL-2.1

最近更新

2026-07-15

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

它展示了一种可复用的技术,无需 Wine 或云端即可在 Linux 上原生运行专有 Windows 生物识别匹配引擎,通过避免可写且可执行的内存页来维护系统安全性,并且能与发行版现有的 libfprint 共存。

适合谁使用

  • 拥有 FT9201 USB 指纹读取器的 Linux 用户
  • 对逆向工程 USB 指纹传感器感兴趣的开发者
  • 希望为 Linux 提供 Windows Hello 外设支持的发行版维护者
  • 希望在不禁用 MemoryDenyWriteExecute 的前提下使用指纹登录的安全意识用户

典型使用场景

  • 通过 fprintd 进行指纹录入与验证,用于 KDE/GNOME 登录
  • 在开源生物识别应用中嵌入厂商的匹配算法
  • 将加载器技术移植到其他‘仅支持 Windows Hello’的指纹读取器
  • 在不修改系统 libfprint 包的情况下测试指纹认证

项目优势

  • 并行安装,不触碰发行版的 libfprint
  • 无需关闭任何安全加固 — 加载器遵循 MemoryDenyWriteExecute
  • 开源驱动(LGPL-2.1),并提供可复用的方法文档 PORTING.md
  • 兼容主线 libfprint 和 fprintd,无需 TOD(Touch-On-Demand)支持

使用前须知

  • 仅支持 x86-64(DLL 和加载器均为 64 位)
  • 仅在一种硬件变体(FT9348W,ID 2808:93a9)上测试过
  • 厂商的匹配引擎是专有二进制,无法修复其中缺陷

README 快速开始

ft9201-libfprint

Linux fingerprint support for the Focal-systems FT9201 USB reader (2808:93a9, sold as a standalone Windows Hello dongle), as a libfprint driver.

The sensor is a tiny 96×96 optical reader. libfprint's built-in matcher does a poor job on an image that small, so this driver instead reuses FocalTech's own matching engine — the ftWbioEngineAdapter.dll from their signed Windows driver — running it natively on Linux with a small in-process PE loader. No Wine, no Windows, no cloud.

This repo is also a reusable method, not just one driver. The technique — running a vendor's Windows matching engine natively on Linux, no Wine — generalizes to other "Windows Hello only" readers, including ones that ship an SDCP secure channel (the Synaptics/Goodix/ELAN/EgisTec-class crypto sensors), via the optional src/crypto_shims.c module. The FT9201 is the worked example; the in-process loader, the WinBio bridge, and the crypto-bypass layer carry over to the next device. See PORTING.md for the step-by-step method and what to reuse as-is.

Status

Working end-to-end on real hardware: enroll and verify through fprintd / command-line tools, and in KDE/GNOME once installed. It matches your finger using the vendor's real algorithm.

Developed and tested against this exact reader (ASIN B0DK7LQZGH) — the FT9348W variant of 2808:93a9.

Caveats:

  • Tested only on that FT9348W variant of the 2808:93a9 device.
  • The matcher is a proprietary blob we call into; we can't fix bugs inside it.
  • x86-64 only (the DLL and loader are 64-bit).

How it works (short version)

  • The USB init + firmware-boot sequence was reverse-engineered from FocalTech's own drivers; the 8051 MCU firmware is uploaded, then a specific register-config sequence starts it.
  • Each capture (96×96) is center-cropped to the 64×80 the engine expects.
  • ft_engine.c is a ~450-line loader that maps ftWbioEngineAdapter.dll into memory, provides the ~90 kernel32 functions it imports, sets up a fake Windows TEB, and calls the engine's WinBio interface for enroll/verify.
  • The loader maps code read-execute and data read-write from an in-memory file, so no page is ever writable and executable. That means it

项目描述

Linux libfprint driver for the Focal-systems FT9201 (2808:93a9) USB fingerprint reader — runs FocalTech's own Windows matching engine natively on Linux, no Wine. Includes a method for porting other Windows-Hello-only readers.

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

Infatoshi
精选
Infatoshi GitHub avatar

netherite

A from-scratch C/CUDA reimplementation of Minecraft 1.11.2 that is bit-verified against the original Java game and includes batched CUDA reinforcement learning support.

AI 与机器学习大语言模型
242
nsdkinx
精选
nsdkinx GitHub avatar

twell

Twell is a tiny, embeddable, zero-allocation physics engine for interruptible, Apple-style UI animations, available as a single-header C library with Python bindings.

移动开发设计与创意
17
sqliteai
精选
sqliteai GitHub avatar

waste

WASTE is a C-based inference engine that streams MoE experts from disk to run a 2.78 trillion-parameter model on a consumer laptop with 64 GB RAM.

数据与数据库数据工程
14