> cat /dev/github | grep security-tools
discovered 30 Mar 2026

Validity90

C ★ 1873 via github-topic
→ View on GitHub

AI Summary: Validity90 is a tool focused on reverse engineering the communication protocol of various Validity fingerprint readers, such as models 138a:0090 and 138a:0094. It aims to create an open-source driver for integration with the libfprint library, featuring a Wireshark dissector for analyzing encrypted communication and a standalone prototype for testing device functionalities. Notably, the project is actively developing specifications and protocols for multiple devices, with partial implementation already achieving scan and internal database check capabilities.


README

Validity90

This project aims on reverse engineering protocol of Validity 138a:0090, 138a:0094, 138a:0097, 06cb:0081, 06cb:009a fingerprint readers, creating specification and FLOSS libfprint driver.

Discussions

Main chat of this project: Gitter

libfrprint issue: https://gitlab.freedesktop.org/libfprint/libfprint/issues/54

Lenovo forums: https://forums.lenovo.com/t5/Linux-Discussion/Validity-Fingerprint-Reader-Linux/td-p/3352145

Notable files

  1. spec.md - Specification draft, the main work goes here right now.
  2. dissector.lua - Wireshark dissector for decrypting communication after key exchange.
  3. libfprint directory - libfprint repo with this driver integrated Not ready at the moment.
  4. prototype - Standalone prototype(extremly ugly code, would be completly rewritten for driver)

Testing

Prototype testers are needed, please share your result and join us in our Gitter.

Status

DeviceStatus
138a:0090Scan, Image output, Internal DB check works in prototype. There is also a match-on-host libfprint driver by @3v1n0 based on prototype source(138a:0090 only). You can use it untill proper unified driver is available.
138a:0097Scan, Internal DB check works in prototype
138a:0094Doesn’t work yet, but looks promising. I will try to work on it after 90/97
06cb:0081So far looks identical to 138a:0094
06cb:009aInit works, leds work, scan doesn’t work yet
138a:0091Different protocol, out of scope for this project. Check out Validity91 which aims to reverse engineer it.
TaskSpecification/AnalysisPrototypeDriver
InitializationDoneDoneNot Started
Configuration/ReconfigIn progressIn progressNot Started
Pre TLS key exchangeIn progressDoneNot Started
TLSDoneDoneNot Started
90: Ops: scan, LED, etcIn progressScan, LED worksNot Started
97: Ops: enroll, check, reset, LED, etcIn progressCheck worksNot Started
Image formatIn progressDoneNot Started

Donations

Please consider donating to support the development.
With paypal: Donate
With BTC: 1AsoCUGNVniBSBS359u2wKrA2CZiTgKZkM
With ETH: 0x005D8d9b5609b9A3Ec8B3cBd463a949405A8d621