Skip to content
hawell edited this page Apr 7, 2012 · 1 revision

https://github.com/downloads/hawell/vfs/raw_scan_data.txt is raw data of an enrollment

let's start with finding the largest subsequesce :

2a 08 08 18

this is a sequence that is repeated every few bytes, the 3 preceding bytes are also interesting. the first two bytes always repeat and the third bytes appears to be a cyclic counter.

01 fe 72 2a 08 08 18 00 79 a1 d1 ff ff ff ff ...

01 fe 73 2a 08 08 08 00 83 9c cf ff ff ff ff ...

so up until now we know that the data is divided into segments. each segment is 288 bytes long. there's also some data before starting sequence, let's just throw it away. also notice the last segment:

01 01 00 2e 08 08 18 00 ...

it starts with "01 01" instead of "01 fe" and counter value is 0.

so... 288 byte segment and 674 of them, let's just draw it!!! for now we can assume these following optimistic assumptions to be true:

  1. data is not encrypted
  2. it's a gray scale image with 1 byte per pixel data

and here's the result:

scan.jpg

wow! that's lucky. no encryption, no challenge response, no nothing. there's also an inverted stretched image beside it, the last few bytes seem to have some relation with image, checksum or something

and here's our data structure :

typedef struct {
    unsigned char header_data_1[2];
    unsigned char counter;
    unsigned char header_data_2[5]; 
    unsigned char main_image[200];
    unsigned char inverted_image[64];
    unsigned char footer[16];
} vfs301_line;
Clone this wiki locally