July 24th, 2006

thinkpad fingerprint scanner -- sources and help wanted

So... fingerprint scanner seems to work, with one -- hopefully last --
glitch. Protocol seems to include 16-bit checksum, and I do not know,
how to compute it. Without that, I can only replay packets I seen
before. (Still, that allows me to check my own fingerprint, and enroll
fingerprints).

Checksum seems to be in the last two bytes, and here are some
sequences that otherwise differ only in 1 nibble. Any ideas? (You can
also see it begins with "Ciao" :-).

43 69 61 6f 00 00 08 28 05 00 00 00 00 30 01 5e 20
43 69 61 6f 00 10 08 28 05 00 00 00 00 30 01 c8 b4
43 69 61 6f 00 20 08 28 05 00 00 00 00 30 01 53 19
43 69 61 6f 00 30 08 28 05 00 00 00 00 30 01 c5 8d
43 69 61 6f 00 40 08 28 05 00 00 00 00 30 01 44 52
43 69 61 6f 00 50 08 28 05 00 00 00 00 30 01 d2 c6
43 69 61 6f 00 60 08 28 05 00 00 00 00 30 01 49 6b
43 69 61 6f 00 70 08 28 05 00 00 00 00 30 01 df ff
43 69 61 6f 00 80 08 28 05 00 00 00 00 30 01 6a c4
43 69 61 6f 00 90 08 28 05 00 00 00 00 30 01 fc 50
43 69 61 6f 00 a0 08 28 05 00 00 00 00 30 01 67 fd
43 69 61 6f 00 b0 08 28 05 00 00 00 00 30 01 f1 69
43 69 61 6f 00 c0 08 28 05 00 00 00 00 30 01 70 b6
43 69 61 6f 00 d0 08 28 05 00 00 00 00 30 01 e6 22
43 69 61 6f 00 e0 08 28 05 00 00 00 00 30 01 7d 8f
43 69 61 6f 00 f0 08 28 05 00 00 00 00 30 01 eb 1b
43 69 61 6f 00 00 08 28 05 00 00 00 00 30 01 5e 20

I did some experiments with crc16, and it does not seem to be
this.. or maybe I just need to use some strange initialization value,
or not checksum over whole packet, or something?

Any ideas?

(Oh, and if you want to play with the software, see my outgoing
directory
. Interesting files are thinkfinger.c, little.bir,
little.log and sequences.clog).