
Linux-libfprint-Treiber für den Focal-systems FT9201 (2808:93a9) USB-Fingerabdruckleser — führt FocalTechs eigene Windows-Matching-Engine nativ unter Linux aus, kein Wine. Enthält eine Methode zum Portieren anderer Windows-Hello-only-Leser.
Linux-Fingerabdruckunterstützung für den Focal-systems FT9201 USB-Leser
(2808:93a9, verkauft als eigenständiger Windows Hello-Dongle), als
libfprint-Treiber.
Der Sensor ist ein winziger 96×96 optischer Leser. Der eingebaute Matcher von libfprint liefert bei einem so kleinen Bild schlechte Ergebnisse, daher verwendet dieser Treiber stattdessen FocalTechs eigene Matching-Engine — die ftWbioEngineAdapter.dll aus ihrem signierten Windows-Treiber — und führt sie nativ unter Linux mit einem kleinen In-Prozess-PE-Lader. Kein Wine, kein Windows, keine Cloud.
Dieses Repository ist auch eine wiederverwendbare Methode, nicht nur ein einzelner Treiber. Die Technik — die Windows-Matching-Engine eines Herstellers nativ unter Linux auszuführen, ohne Wine — lässt sich auf andere „nur Windows Hello“-Lesegeräte verallgemeinern, einschließlich solcher mit einem SDCP-Sicherheitskanal (die Kryptosensoren der Synaptics/Goodix/ELAN/EgisTec-Klasse), über das optionale Modul
src/crypto_shims.c. Der FT9201 ist das ausgearbeitete Beispiel; der In-Prozess-Lader, die WinBio-Brücke und die Krypto-Bypass-Schicht lassen sich auf das nächste Gerät übertragen. Siehe PORTING.md für die Schritt-für-Schritt-Methode und was unverändert übernommen werden kann.
Funktioniert durchgängig auf echter Hardware: Registrieren und Verifizieren über fprintd / Befehlszeilenwerkzeuge und nach der Installation in KDE/GNOME. Es vergleicht Ihren Finger mit dem echten Algorithmus des Herstellers.
Entwickelt und getestet mit diesem speziellen Lesegerät (ASIN B0DK7LQZGH) — der FT9348W-Variante von 2808:93a9.
Einschränkungen:
2808:93a9-Geräts getestet.ft_engine.c ist ein etwa 450-zeiliger Lader, der ftWbioEngineAdapter.dll in den Speicher abbildet, die etwa 90 von ihr importierten kernel32-Funktionen bereitstellt, einen gefälschten Windows-TEB einrichtet und die WinBio-Schnittstelle des Motors für Registrierung/Verifizierung aufruft.MemoryDenyWriteExecute-Härtung von fprintd läuft — Sie müssen keine Sicherheitseinstellungen deaktivieren.Siehe docs/how-it-works.md für die vollständige technische Beschreibung.
Build-Werkzeuge + Build-Abhängigkeiten von libfprint. Auf Fedora/Nobara:
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: die Entsprechungen — libglib2.0-dev libgusb-dev libnss3-dev libpixman-1-dev libgudev-1.0-dev libsystemd-dev, plus cabextract.)
git clone https://github.com/OMGrant/ft9201-libfprint
cd ft9201-libfprint
scripts/fetch-blobs.sh # pull the vendor DLL + MCU firmware (see note below)
scripts/build.sh # clone pinned libfprint, graft the driver in, build
Probieren Sie es ohne Installation aus:
FT9201_ENGINE_DLL=$PWD/blobs/ftWbioEngineAdapter.dll \
LD_LIBRARY_PATH=libfprint/build/libfprint \
libfprint/build/examples/enroll
Installieren Sie es für KDE/GNOME/Anmeldung (nebeneinander; die libfprint Ihrer Distribution bleibt unberührt, keine Härtung deaktiviert):
sudo scripts/install.sh
fprintd-enroll
Alles rückgängig machen: sudo scripts/install.sh --uninstall.
Dieses Repository enthält keine proprietären Binärdateien. Zwei Dateien gehören FocalTech und werden zur Build-Zeit von scripts/fetch-blobs.sh aus vorhandenen öffentlichen Quellen abgerufen:
| Datei | Was es ist | Woher es kommt |
|---|---|---|
ftWbioEngineAdapter.dll | die Matching-Engine | FocalTechs signierter Windows-Treiber im Microsoft Update Catalog |
FT9348W MCU-Firmware (src/ft9201_fw.h) | 8051-Firmware, die der Sensor ausführt | extrahiert (Symbol FOCALFP_9348_FW_APP) aus dem öffentlichen ft9201-static Blob |
Falls einer der Download-URLs nicht mehr funktioniert, benötigen Sie nur diese beiden Dateien:
ftWbioEngineAdapter.dll — durchsuchen Sie den Microsoft Update Catalog nach
"FocalTech Electronics Biometric" (Treiber 1.0.3.58, passt zur Hardware-ID
USB\VID_2808&PID_93A9). Laden Sie die .cab herunter, extrahieren Sie sie mit cabextract und
legen Sie ftWbioEngineAdapter.dll in blobs/ ab.FOCALFP_9348_FW_APP enthält (z. B. aus ft9201-static) und führen Sie
python3 scripts/extract-firmware.py <diese-libfprint-2.so> src/ft9201_fw.h aus.Führen Sie dann erneut scripts/build.sh aus.
Die wiederverwendbare Methode und der Kryptosensor-Pfad bauen zusätzlich auf der Arbeit dieser Personen auf:
Dies ist nicht der einzige Ansatz — die Alternativen unterscheiden sich hauptsächlich darin, wie sie FocalTechs Matcher wiederverwenden (das tun sie alle; der winzige Sensor schließt generisches Matching aus).