Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ft9201-libfprint — Pilote Linux libfprint pour le lecteur d'empreintes digitales USB Focal-systems FT9201 (2808:93a9) — exécute le moteur de correspondance Windows de FocalTech nativement sous Linux, sans Wine. Inclut une méthode pour porter d'autres lecteurs réservés à Windows Hello. | Kitploit
Outils/GitHubGitHub/omgrant/ft9201-libfprint
Sécurité des Systèmes EmbarquésRétro-ingénierieHacking MatérielSécurité MatérielleAnalyse de BinairesAuthentificationAnalyse de Micrologiciel
GitHubomgrant/ft9201-libfprint

ft9201-libfprint

Pilote Linux libfprint pour le lecteur d'empreintes digitales USB Focal-systems FT9201 (2808:93a9) — exécute le moteur de correspondance Windows de FocalTech nativement sous Linux, sans Wine. Inclut une méthode pour porter d'autres lecteurs réservés à Windows Hello.

Voir le dépôt
21167il y a 3 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
# ft9201-libfprint

Prise en charge des empreintes digitales sous Linux pour le lecteur USB **Focal-systems FT9201**
(`2808:93a9`, vendu comme un dongle Windows Hello autonome), en tant que pilote
[libfprint](https://gitlab.freedesktop.org/libfprint/libfprint).

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/7029/9a4eac4876063dbf80466bd7c0d975430fb75f3f9655604d2d4aad3725c9e11e.jpg" alt="Lecteur d'empreintes digitales USB Focal-systems FT9201" width="360">
</p>

Le capteur est un minuscule lecteur optique 96×96. Le comparateur intégré de libfprint fait
un mauvais travail sur une image aussi petite, donc ce pilote réutilise plutôt **le propre moteur de correspondance de FocalTech**
— le `ftWbioEngineAdapter.dll` de leur pilote Windows signé —
en l'exécutant nativement sous Linux avec un petit chargeur PE en processus. Pas de Wine,
pas de Windows, pas de cloud.

> **Ce dépôt est aussi une méthode réutilisable, pas seulement un pilote.** La technique —
> exécuter le moteur de correspondance Windows d'un fabricant nativement sous Linux, sans Wine —
> se généralise à d'autres lecteurs « Windows Hello uniquement », **y compris ceux qui embarquent un
> canal sécurisé SDCP** (les capteurs crypto de classe Synaptics/Goodix/ELAN/EgisTec),
> via le module optionnel [`src/crypto_shims.c`](https://github.com/omgrant/ft9201-libfprint/blob/master/src/crypto_shims.c). Le FT9201 est
> l'exemple pratique ; le chargeur en processus, le pont WinBio et la couche de
> contournement crypto sont réutilisables pour le prochain périphérique. Voir **[PORTING.md](https://github.com/omgrant/ft9201-libfprint/blob/master/PORTING.md)**
> pour la méthode pas à pas et ce qui peut être réutilisé tel quel.

## Statut

Fonctionne de bout en bout sur du matériel réel : inscription et vérification via `fprintd` /
outils en ligne de commande, et dans KDE/GNOME une fois installé. Il fait correspondre votre doigt
en utilisant le véritable algorithme du fabricant.

Développé et testé avec
[ce lecteur exact](https://www.amazon.com/dp/B0DK7LQZGH) (ASIN `B0DK7LQZGH`) —
la variante FT9348W du `2808:93a9`.

Limitations :
- Testé uniquement sur cette variante FT9348W du périphérique `2808:93a9`.
- Le comparateur est un binaire propriétaire que nous appelons ; nous ne pouvons pas corriger les bugs à l'intérieur.
- x86-64 uniquement (la DLL et le chargeur sont en 64 bits).

## Comment ça fonctionne (version courte)

- L'initialisation USB + la séquence de démarrage du firmware ont été rétro-conçues à partir des
  propres pilotes de FocalTech ; le firmware du microcontrôleur 8051 est chargé, puis une séquence
  spécifique de configuration de registre le démarre.
- Chaque capture (96×96) est recadrée au centre pour obtenir le 64×80 attendu par le moteur.
- `ft_engine.c` est un chargeur d'environ 450 lignes qui mappe `ftWbioEngineAdapter.dll` en
  mémoire, fournit les ~90 fonctions `kernel32` qu'il importe, configure un faux
  TEB Windows, et appelle l'interface WinBio du moteur pour l'inscription/vérification.
- Le chargeur mappe le code en lecture-exécution et les données en lecture-écriture depuis un fichier
  en mémoire, donc **aucune page n'est jamais accessible en écriture *et* exécutable**. Cela signifie qu'il fonctionne sous
  le durcissement `MemoryDenyWriteExecute` par défaut de `fprintd` — vous n'avez **pas** à
  désactiver de paramètres de sécurité.

Voir [`docs/how-it-works.md`](https://github.com/omgrant/ft9201-libfprint/blob/master/docs/how-it-works.md) pour le compte rendu technique complet.

## Prérequis

Outils de compilation + dépendances de construction de libfprint. Sur 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 : les équivalents — `libglib2.0-dev libgusb-dev libnss3-dev
libpixman-1-dev libgudev-1.0-dev libsystemd-dev`, plus `cabextract`.)

## Construction et installation

```
git clone https://github.com/OMGrant/ft9201-libfprint
cd ft9201-libfprint
scripts/fetch-blobs.sh     # récupérer la DLL du fabricant + le firmware MCU (voir note ci-dessous)
scripts/build.sh           # cloner libfprint épinglé, greffer le pilote, construire
```

Essayez sans rien installer :

```
FT9201_ENGINE_DLL=$PWD/blobs/ftWbioEngineAdapter.dll \
LD_LIBRARY_PATH=libfprint/build/libfprint \
libfprint/build/examples/enroll
```

Installez-le pour KDE/GNOME/connexion (côte à côte ; la bibliothèque libfprint de votre distribution
est laissée intacte, aucun durcissement désactivé) :

```
sudo scripts/install.sh
fprintd-enroll
```

Tout annuler : `sudo scripts/install.sh --uninstall`.

## Les binaires propriétaires

Ce dépôt ne contient **aucun** binaire propriétaire. Deux fichiers appartiennent à FocalTech et sont
récupérés depuis des sources publiques existantes lors de la construction par `scripts/fetch-blobs.sh` :

| Fichier | Ce que c'est | D'où ça vient |
|---------|--------------|---------------|
| `ftWbioEngineAdapter.dll` | le moteur de correspondance | Le pilote Windows signé de FocalTech sur le Catalogue Microsoft Update |
| Firmware MCU FT9348W (`src/ft9201_fw.h`) | Firmware 8051 exécuté par le capteur | extrait (symbole `FOCALFP_9348_FW_APP`) du binaire public [`ft9201-static`](https://github.com/mrrbrilliant/ft9201-static) |

### Récupérer les binaires manuellement

Si l'une des URL de téléchargement a changé, vous n'avez besoin que de ces deux fichiers :

- **`ftWbioEngineAdapter.dll`** — recherchez sur le Catalogue Microsoft Update
  *« FocalTech Electronics Biometric »* (pilote 1.0.3.58, correspondant à l'ID matériel
  `USB\VID_2808&PID_93A9`). Téléchargez le `.cab`, extrayez-le avec `cabextract` et
  placez `ftWbioEngineAdapter.dll` dans `blobs/`.
- **Firmware MCU** — obtenez n'importe quelle copie du binaire libfprint Linux de FocalTech qui
  contient le symbole `FOCALFP_9348_FW_APP` (par exemple depuis `ft9201-static`) et lancez
  `python3 scripts/extract-firmware.py <ce-libfprint-2.so> src/ft9201_fw.h`.

Ensuite, relancez `scripts/build.sh`.

## Crédits

- Le protocole USB a été initialement rétro-conçu par
  [banianitc/ft9201-fingerprint-driver](https://github.com/banianitc/ft9201-fingerprint-driver).
- Le firmware et la séquence d'initialisation/démarrage ont été recoupés avec le binaire Linux de FocalTech via
  [mrrbrilliant/ft9201-static](https://github.com/mrrbrilliant/ft9201-static).
- Construit sur [libfprint](https://gitlab.freedesktop.org/libfprint/libfprint).

La méthode réutilisable et le chemin pour les capteurs crypto s'appuient également sur les travaux de :

- **[uunicorn](https://github.com/uunicorn)** — dont
  [synaWudfBioUsb-sandbox](https://github.com/uunicorn/synaWudfBioUsb-sandbox) et
  [fourche Wine](https://github.com/uunicorn/wine) sont le harnais pour tracer le
  pilote biométrique Windows d'un fabricant sous Wine, ce qui permet de récupérer le protocole
  de commande d'un capteur crypto sans machine Windows.
- **Marco Trevisan ([3v1n0](https://github.com/3v1n0))**, un mainteneur de libfprint —
  qui a indiqué la voie vers cette approche de traçage sous Wine, et dont l'impulsion pour améliorer
  la correspondance propre de libfprint en amont cadre pourquoi la voie du comparateur fabricant
  existe.
- **[championswimmer/libfprint-eh577](https://github.com/championswimmer/libfprint-eh577)**
  — travaux antérieurs pour la famille de capteurs EgisTec EH577.

## Autres façons d'utiliser un FT9201 sous Linux

Ce n'est pas la seule approche — les alternatives diffèrent principalement par *comment* elles
réutilisent le comparateur de FocalTech (elles le font toutes ; le minuscule capteur exclut
la correspondance générique).

- **[Romk-a/ft9201-linux-setup](https://github.com/Romk-a/ft9201-linux-setup)** — un
  guide Debian/Ubuntu (Astra Linux) qui installe le **pilote Linux « TOD » propriétaire précompilé de FocalTech** (depuis
  [ryenyuku/libfprint-ft9201](https://github.com/ryenyuku/libfprint-ft9201) ; des RPM Fedora
  ont aussi existé) et patche binairement sa table d'IDs USB (`9338` → `93a9`).
  - **Comparaison :** cette voie demande *moins de travail* — installer un `.deb`, patcher deux
    octets, pas de rétro-ingénierie. Mais elle nécessite **libfprint compatible TOD**
    (famille Debian/Ubuntu ; **pas** sur Fedora/Arch standard), elle **remplace toute votre
    `libfprint` système** par une ancienne construction entièrement fermée, et vous devez lutter
    contre le gestionnaire de paquets pour la garder épinglée. Ce projet livre plutôt un pilote
    **ouvert**, s'installe **côte à côte** (la libfprint de votre distribution est intacte),
    fonctionne sur **libfprint standard sans TOD**, et ne charge que la DLL du comparateur
    propriétaire isolée — c'est ce que la rétro-ingénierie a apporté.
  - **En résumé :** sur Debian/Ubuntu, la voie TOD est le bouton facile ; sur
    Fedora/Arch, ou si vous voulez quelque chose d'ouvert et non invasif, utilisez ce projet.
- **Des pilotes noyau** existent ([banianitc](https://github.com/banianitc/ft9201-fingerprint-driver)
  — la référence de protocole que ce projet a rétro-conçue,
  [bm16ton/ft92010x9338](https://github.com/bm16ton/ft92010x9338)) mais ils ne
  s'intègrent pas avec libfprint/fprintd, donc pas de support pour la connexion/PAM.

Le pilote Linux TOD propriétaire que ces paquets `.deb`/RPM redistribuent semble avoir été
une version FocalTech/GPD pour le GPD Win 4 qui a ensuite été **retirée de la distribution
officielle** — c'est pourquoi elle ne survit aujourd'hui que sous forme de réhébergements
communautaires. (Notez aussi que certains GPD Win 4 sont livrés avec un capteur entièrement
différent, un Chipsailing CS9711, et non cette pièce FocalTech.)

## Projets connexes

- [championswimmer/libfprint-eh577](https://github.com/championswimmer/libfprint-eh577)
  — un effort de pilote Linux pour l'**EgisTec EH577** (`1c7a:0577`), un autre
  lecteur « Windows Hello uniquement » de type presse (capteur actif 52×72). Fabricant
  et protocole USB différents, mais la même forme *correspondance sur l'hôte* : son pack Windows
  contient une DLL d'adaptateur de moteur fabricant (`EgisTouchFPEngine0577.dll`, sans enclave VBS),
  donc la méthode décrite dans **[PORTING.md](https://github.com/omgrant/ft9201-libfprint/blob/master/PORTING.md)** s'y applique aussi.
- **[OMGrant/eh577-libfprint](https://github.com/OMGrant/eh577-libfprint)** — cette
  méthode appliquée de bout en bout à l'**EgisTec EH577** et publiée sous forme de pilote
  fonctionnel. Les techniques crypto de la §3b ont été validées contre ses constructions SDCP ;
  le pilote distribué cible une construction *pré-SDCP* du Catalogue (un comparateur purement
  logiciel — voir la note de la §3b sur le choix de la construction), qui inscrit et vérifie
  de vraies empreintes sous Linux.

## Licence

Le pilote et le chargeur (`src/`, `scripts/`) sont sous **LGPL-2.1-ou-ultérieure**, en
accord avec libfprint. La DLL et le firmware FocalTech sont leur propre propriété et ne sont
pas distribués ici — vous les récupérez vous-même. Ce projet est un outil d'interopérabilité
pour du matériel que vous possédez ; il n'inclut ni ne relicencie aucun code FocalTech.
Télécharger l’outil