Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ft9201-libfprint — 用于Focal-systems FT9201 (2808:93a9) USB指纹读取器的Linux libfprint驱动程序——在Linux上原生运行FocalTech自家的Windows匹配引擎,无需Wine。包含移植其他仅支持Windows Hello的读取器的方法。 | Kitploit
工具/GitHubGitHub/omgrant/ft9201-libfprint
嵌入式系统安全逆向工程硬件黑客硬件安全二进制分析身份验证固件分析
GitHubomgrant/ft9201-libfprint

ft9201-libfprint

用于Focal-systems FT9201 (2808:93a9) USB指纹读取器的Linux libfprint驱动程序——在Linux上原生运行FocalTech自家的Windows匹配引擎,无需Wine。包含移植其他仅支持Windows Hello的读取器的方法。

查看仓库
2111个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ft9201-libfprint

Linux 指纹识别支持,适用于 Focal-systems FT9201 USB 读卡器(2808:93a9,作为独立 Windows Hello 加密狗销售),作为 libfprint 的驱动程序。

Focal-systems FT9201 USB 指纹读卡器

该传感器是一个微型的 96×96 光学读卡器。libfprint 内置的匹配器在如此小的图像上表现不佳,因此该驱动程序转而复用 FocalTech 自己的匹配引擎——其签名 Windows 驱动程序中的 ftWbioEngineAdapter.dll——在 Linux 上通过一个轻量的进程内 PE 加载器原生运行。无需 Wine、无需 Windows、无需云端。

本仓库不仅是一个驱动程序,还提供了一种可复用的方法。 该技术——在 Linux 上原生运行供应商的 Windows 匹配引擎,无需 Wine——可以推广到其他“仅 Windows Hello”的读卡器,包括那些带有 SDCP 安全通道的读卡器(Synaptics/Goodix/ELAN/EgisTec 类加密传感器),通过可选的 src/crypto_shims.c 模块实现。FT9201 是一个完整的示例;进程内加载器、WinBio 桥接层和加密旁路层可以迁移到下一个设备。详细的分步方法以及可直接复用的部分,请参阅 PORTING.md。

状态

已在真实硬件上端到端工作:通过 fprintd / 命令行工具进行注册和验证,安装后也可在 KDE/GNOME 中使用。它使用供应商的真实算法匹配你的手指。

针对这款具体读卡器(ASIN B0DK7LQZGH)——2808:93a9 的 FT9348W 变体——进行开发和测试。

注意:

  • 仅在 2808:93a9 设备的 FT9348W 变体上测试过。
  • 匹配器是一个我们调用的专有二进制模块;我们无法修复其内部的错误。
  • 仅支持 x86-64(DLL 和加载器均为 64 位)。

工作原理(简述)

  • USB 初始化 + 固件启动序列是通过逆向 FocalTech 自身驱动程序得出的;上传 8051 MCU 固件,然后通过特定的寄存器配置序列启动它。
  • 每次捕获(96×96)中心裁剪为引擎所需的 64×80。
  • ft_engine.c 是一个约 450 行的加载器,它将 ftWbioEngineAdapter.dll 映射到内存中,提供其导入的约 90 个 kernel32 函数,设置一个伪造的 Windows TEB,并调用引擎的 WinBio 接口进行注册/验证。
  • 加载器从内存文件映射代码(读-执行)和数据(读-写),因此没有页面同时可写且可执行。这意味着它可以在 fprintd 默认的 MemoryDenyWriteExecute 强化机制下运行——你无需禁用任何安全设置。

完整的技术文档请参阅 docs/how-it-works.md。

要求

构建工具 + libfprint 的构建依赖。在 Fedora/Nobara 上:

root@kitploit:~
sudo dnf install git meson ninja-build gcc cabextract python3 \
     glib2-devel gusb-devel nss-devel pixman-devel gobject-introspection-devel \
     libgudev-devel systemd-devel

(Debian/Ubuntu:对应的包为 libglib2.0-dev libgusb-dev libnss3-dev libpixman-1-dev libgudev-1.0-dev libsystemd-dev,外加 cabextract。)

构建与安装

root@kitploit:~
git clone https://github.com/OMGrant/ft9201-libfprint
cd ft9201-libfprint
scripts/fetch-blobs.sh     # 拉取供应商 DLL + MCU 固件(见下方说明)
scripts/build.sh           # 克隆固定版本的 libfprint,嫁接驱动程序,构建

不安装任何内容尝试运行:

root@kitploit:~
FT9201_ENGINE_DLL=$PWD/blobs/ftWbioEngineAdapter.dll \
LD_LIBRARY_PATH=libfprint/build/libfprint \
libfprint/build/examples/enroll

安装用于 KDE/GNOME/登录(并行安装;你的发行版的 libfprint 保持不变,无需禁用任何强化机制):

root@kitploit:~
sudo scripts/install.sh
fprintd-enroll

卸载所有内容:sudo scripts/install.sh --uninstall。

专有二进制文件

本仓库不包含任何专有二进制文件。两个文件属于 FocalTech,在构建时由 scripts/fetch-blobs.sh 从现有公共来源拉取:

文件内容来源
ftWbioEngineAdapter.dll

手动获取二进制文件

如果下载地址发生变化,你只需要这两个文件:

  • ftWbioEngineAdapter.dll — 在微软更新目录中搜索 "FocalTech Electronics Biometric"(驱动程序 1.0.3.58,匹配硬件 ID USB\VID_2808&PID_93A9)。下载 .cab 文件,使用 cabextract 解压,将 ftWbioEngineAdapter.dll 放入 blobs/ 目录。
  • MCU 固件 — 获取任意含有 FOCALFP_9348_FW_APP 符号的 FocalTech Linux libfprint 二进制文件(例如从 ft9201-static 获取),然后运行 python3 scripts/extract-firmware.py <那个-libfprint-2.so> src/ft9201_fw.h。

然后重新运行 scripts/build.sh。

致谢

  • USB 协议最初由 banianitc/ft9201-fingerprint-driver 逆向工程。
  • 固件和初始化/启动序列通过 mrrbrilliant/ft9201-static 与 FocalTech 的 Linux 二进制文件交叉验证。
  • 基于 libfprint 构建。

可复用的方法和加密传感器路径还依赖于以下工作:

  • uunicorn — 其 synaWudfBioUsb-sandbox 和 wine fork 是用于在 Wine 下追踪供应商 Windows 生物识别驱动程序的工作台,从而无需 Windows 机器即可恢复加密传感器的命令协议。
  • Marco Trevisan (3v1n0),libfprint 维护者 — 他指出了 Wine 追踪方法的路径,并且他推动改进 libfprint 自身匹配器的上游工作,正是“供应商匹配器”路线存在的原因。
  • championswimmer/libfprint-eh577 — EgisTec EH577 传感器系列的先前实现。

在 Linux 上运行 FT9201 的其他方法

这并非唯一方法——不同之处主要在于如何复用 FocalTech 的匹配器(所有方法都这么做;微小的传感器排除了通用匹配的可能性)。

  • Romk-a/ft9201-linux-setup — 一个 Debian/Ubuntu (Astra Linux) 指南,安装 FocalTech 预编译的专有 Linux "TOD" 驱动程序(来自 ryenyuku/libfprint-ft9201;Fedora 的 RPM 包也曾存在)并通过二进制补丁修改其 USB-ID 表(9338 → 93a9)。
    • 对比: 该路线工作量更少——安装一个 .deb 包,修补两个字节,无需逆向工程。但它需要支持 TOD 的 libfprint(Debian/Ubuntu 系列;不支持标准的 Fedora/Arch),它会替换你整个系统的 libfprint 为一个旧的、完全封闭的构建,而且你必须与包管理器斗争以锁定版本。本项目则提供一个开放的驱动程序,并行安装(你的发行版的 libfprint 保持不变),运行于 主线的、无 TOD 的 libfprint,并且只加载隔离的供应商匹配器 DLL——这正是所有逆向工程工作的成果。
    • 简述: 在 Debian/Ubuntu 上,TOD 路线是简单按钮;在 Fedora/Arch 上,或者如果你希望开放且无侵入,请使用本项目。
  • 内核驱动程序已存在(banianitc — 本项目逆向工程所参考的协议;bm16ton/ft92010x9338),但它们不与 libfprint/fprintd 集成,因此不支持登录/PAM 功能。

那些 .deb/RPM 包分发的专有 Linux TOD 驱动程序似乎是 FocalTech/GPD 为 GPD Win 4 发布的版本,后来从官方分发中撤下——这就是为什么现在它只以社区重新托管的形式存在。(另请注意,部分 GPD Win 4 设备配备的是完全不同的传感器——Chippsailing CS9711,而非本 FocalTech 部件。)

相关项目

  • championswimmer/libfprint-eh577 — 针对 EgisTec EH577 (1c7a:0577) 的 Linux 驱动程序项目,这是另一个按压式“仅 Windows Hello”读卡器(52×72 有效传感器)。不同供应商和 USB 协议,但同样是 主机端匹配 模式:其 Windows 包携带一个供应商引擎适配器 DLL(EgisTouchFPEngine0577.dll,无 VBS 飞地),因此 PORTING.md 中的方法同样适用。
  • OMGrant/eh577-libfprint — 该方法完整应用于 EgisTec EH577 并以工作驱动发布。§3b 中的加密技术针对其 SDCP 构建进行了验证;分发的驱动程序针对一个预 SDCP 的 Catalog 构建(纯软件匹配器——参见 §3b 关于构建选择的说明),可在 Linux 上注册和验证真实手指。

许可证

驱动程序和加载器(src/、scripts/)采用 LGPL-2.1-or-later 许可证,与 libfprint 一致。FocalTech 的 DLL 和固件归其自身所有,未在此分发——你需要自行获取它们。本项目是为你拥有的硬件提供的互操作工具,不包含或重新许可任何 FocalTech 代码。

下载工具
匹配引擎
微软更新目录中 FocalTech 的签名 Windows 驱动程序
FT9348W MCU 固件 (src/ft9201_fw.h)传感器运行的 8051 固件从公共 ft9201-static 二进制文件中提取(符号 FOCALFP_9348_FW_APP)