README: Mention validity-sensors-initializer
This commit is contained in:
parent
c43b99a02e
commit
23f7fd94ca
1 changed files with 37 additions and 3 deletions
40
README.md
40
README.md
|
|
@ -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.
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in a new issue