README: Mention validity-sensors-initializer

This commit is contained in:
Marco Trevisan (Treviño) 2020-06-10 14:26:58 +02:00
parent c43b99a02e
commit 23f7fd94ca

View file

@ -9,7 +9,41 @@ To install Python dependencies run
$ pip3 install -r requirements.txt
```
## Getting the firmware
## Initialization
### Automatic factory reset, pairing and firmware flashing
This repo includes `validity-sensors-initializer.py`, a simple tool that
helps initializing Validity fingerprint readers under linux, loading their
binary firmware and initializing them.
This tool currently only supports these sensors:
- 138a:0090 Validity Sensors, Inc. VFS7500 Touch Fingerprint Sensor
- 138a:0097 Validity Sensors, Inc.
Which are present in various ThinkPad and HP laptops.
These devices communicate with the laptop via an encrypted protocol and they
need to be paired with the host computer in order to work and compute the
TLS keys.
Such initialization is normally done by the Windows driver, however thanks to
the amazing efforts of Viktor Dragomiretskyy (uunicorn), and previously of
Nikita Mikhailov, we have reverse-engineerd the pairing process, and so it's
possible to do it under Linux with only native tools as well.
The procedure is quite simple:
- Device is factory-reset and its flash repartitioned
- A TLS key is negotiated, generated via host hw ID and serial
- Windows driver is downloaded from Lenovo to extract the device firmware
- The device firmware is uploaded to the device
- The device is calibrated
Once the chip is paired with the computer via this tool, it's possible to use
it in libfprint using the driver at
- https://github.com/3v1n0/libfprint/
---
### Getting the firmware
It's possible to just extract [official Lenovo device driver for vfs0097](https://support.lenovo.com/us/en/downloads/DS121407) or [driver for vfs0090](https://support.lenovo.com/us/en/downloads/DS120491) (also [part of the SCCM package](https://support.lenovo.com/ec/th/downloads/DS112113) using [innoextract](https://constexpr.org/innoextract/) (available for all the distros), or `wine`.
@ -18,7 +52,7 @@ The only reason you need to do this is to find `6_07f_lenovo_mis.xpfwext` (for v
innoextract n1mgf03w.exe -e -I 6_07f_lenovo_mis.xpfwext # vfs0097
innoextract n1cgn08w.exe -e -I 6_07f_Lenovo.xpfwext # vfs0090
## Factory reset
### Factory reset
If your device was previously paired with another OS or computer, you need to do a factory reset.
This will erase all fingers from the internal database and make the device ready for pairing.
```
@ -26,7 +60,7 @@ $ python3 factory-reset.py
$
```
## Pairing
### Pairing
After performing a factory reset you need to pair your device with a host computer.
This must be done only once, before you can enroll/identify/verify fingers.
```