Infra - Linux

fprint: Biometria livre, completa e total!

O pacote fprint, é uma opção totalmente open-source para o desenvolvimento de aplicativos utilizando a tecnologia de biometria digital. O pacote de integração permite a criação de processo de identificação e verificação de impressão digital para diversos modelos de leitores.

por Alessandro de Oliveira Faria



Introdução



O pacote fprint é o sonho de todo desenvolvedor de código aberto. O kit de integração permite o desenvolvimento de processos de identificação e verificação de impressões digitais. Um dos pontos fortes nesta solução open-source, é a compatibilidade com diversos modelos de sensores disponíveis no mercado.

Em Setembro de 2005 a doação um sensor biométrico Microsoft fingerprint iniciou o desenvolvimento do projeto dpfp. Onde o principal objetivo, era tornar possível o uso do mesmo na plataforma Linux (Instalando leitores de impressão digital modelo Digital Persona no Linux).

Forças/projetos paralelos extraíam imagens de outros sensores. Entretanto ainda nada era possível com estas imagens. Projetos open-source para processamento da imagem foram testados, mas por vários motivos não foi incorporado ao desenvolvimento principal.

Problemas com propriedade intelectual surgiram durante a jornada de trabalho. Após algum tempo, o projeto foi retomado como um trabalho Universitário, mais adiante publicado como Open-Source.

Conceito

A impressão digital é composta de linhas formadas pelas elevações da pele. A comparação por impressão digital é um método utilizado a mais de mil anos como forma de identificação de usuários. É uma característica única entre os seres humanos, inclusive entre irmão gêmeos univitelinos.

Formada ainda quando feto, a impressão digital acompanha a pessoa por toda a sua existência sem apresentar grandes mudanças. Extraindo os pontos característicos ou ponto de minúcias de uma impressão digital, um papiloscopista ou sistemas computadorizados podem identificar pessoas utilizando cálculos bastantes confiáveis.

São vários os tipos de impressões digitais, abaixo algumas imagens de diferentes digitais:



Sensores biométricos suportados pela biblioteca libfprint:

Vendor

Product

USB Vendor ID

USB Product ID

Driver

ASUS

F3Sv laptop embedded

08ff

1600

aes1610

ASUS

R1F tablet embedded

0483

2016

upekts

Cherry

SmartTerminal SFR-1244U

0483

2015

upektc

Covadis

Alya

05ba

000a

uru4000

Covadis

Atria

05ba

000a

uru4000

DigitalPersona

U.are.U 4000 Reader

05ba

0007

uru4000

DigitalPersona

U.are.U 4000B Reader

05ba

000a

uru4000

Fujitsu-Siemens

FP-Sensor S26381-K342-V1 GS:01

08ff

2580

aes2501

Fujitsu-Siemens

Lifebook S7110

08ff

2580

aes2501

HP

6510b laptop embedded

08ff

2580

aes2501

HP

6710b laptop embedded

08ff

2580

aes2501

HP

6910p laptop embedded

08ff

2580

aes2501

HP

8710w laptop embedded

08ff

2580

aes2501

HP

nc6400 laptop embedded

08ff

2580

aes2501

HP

nx6125 laptop embedded

08ff

2580

aes2501

HP

nx6325 laptop embedded

08ff

2580

aes2501

HP

nw9440 laptop embedded

08ff

2580

aes2501

HP

Pavilion dv6640ew laptop embedded

08ff

2580

aes2501

HP

Pavilion tx1302au tablet embedded

08ff

1600

aes1610

IBM

ThinkPad T43p embedded

0483

2016

upekts

IBM

ThinkPad T61 embedded

0483

2016

upekts

IBM

ThinkPad X41 embedded

0483

2016

upekts

IBM

ThinkPad X60 embedded

0483

2016

upekts

Lenovo

V100 laptop embedded

08ff

1600

aes1610

Lenovo

3000 N100 laptop embedded

08ff

2580

aes2501

Medion

MD85264

08ff

2580

aes2501

Microsoft

Keyboard with Fingerprint Reader

045e

00bb

uru4000

Microsoft

Wireless Intellimouse with Fingerprint Reader

045e

00bc

uru4000

Microsoft

Fingerprint Reader

045e

00bd

uru4000

Microsoft

Fingerprint Reader

045e

00ca

uru4000

Precise Biometrics

100 XS

08ff

2580

aes2501

Samsung

P35 laptop embedded

0483

2015

upektc

Samsung

X65 laptop embedded

08ff

1600

aes1610

Targus

PA460U DEFCON Authenticator

08ff

5501

aes4000

Toshiba

A-105 laptop embedded

0483

2016

upekts

UPEK

Eikon

0483

2016

upekts

Veridicom

5thSense

061a

0110

vcom5s



Composição do pacote:
  • libfprint: Biblioteca para desenvolvimento e integração em sistemas;
  • pam_fprint: Pacote utilizado para autenticação e login em sistemas Linux;
  • fprint_demo: Aplicativo para fins demonstrativo da libfprint;
  • fprintd: Daemon (serviço) que utiliza o D-Bus (comunicação inter-processo) para facilitar a comunicação da libfprint com diversos aplicativos concorrentes.


Download e instalação

Abaixo os links para download do código-fonte, pacotes para o OpenSuse e Ubuntu.

Neste documento trabalharemos a partir da compilação do código fontes para compatibilizar o máximo possível as instruções para qualquer distribuição.

Código fonte (utilizado neste documento):
http://ufpr.dl.sourceforge.net/sourceforge/fprint/fprint_demo-0.4.tar.bz2 (exemplo no modo gráfico)
http://ufpr.dl.sourceforge.net/sourceforge/fprint/libfprint-0.0.6.tar.bz2 (fontes da biblioteca)

Pacotes OpenSuse:
http://download.opensuse.org/repositories/home:/dgege/openSUSE_10.3/i586/

Pacotes Ubuntu:
http://www.madman2k.net/comments/105

Instalação:

Após o download, devemos descompactar e extrair os arquivos fontes. Utilize o comando "tar -jxvf" como abaixo . Entre na pasta criada pelo comando tar (libfprint-0.0.6) e execute o comando "./configure" para configurar as diretivas de compilação para o seu ambiente.
$ tar -jxvf libfprint-0.0.6.tar.bz2
$ cd libfprint-0.0.6
$ ./configure 
Execute o comando "make" para efetuar a compilação na íntegra, a seguir transforme-se em super-usuário para efetuar a instalação da bibliotecas através do comando "make install" seguido do "ldconfig" conforme as instruções abaixo.
$ make
$ su
Senha:

# make install
# ldconfig 
Para finalizar este pacote, entre na pasta "example" e execute o comando "make" para compilar os códigos exemplos.
$ cd examples/
$ make 
A compilação dos exemplos criará na pasta corrente programas para capturar a imagem do sensor, calcular o template biométrico e verificação da digital em tempo real.

Antes de executar quais quer um dos programas acima, em primeiro lugar plugue o sensor e execute o comando "dmesg" para constatar se tudo esta funcionando corretamente. Abaixo o resultado do comando ao plugar o meu sensor U.ARE.U 4000B.
$ dmesg
usb 3-1: new full speed USB device using uhci_hcd and address 2
usb 3-1: new device found, idVendor=05ba, idProduct=000a
usb 3-1: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-1: Product: U.are.U 4000B Fingerprint Reader
usb 3-1: Manufacturer: DigitalPersona, Inc.
usb 3-1: SerialNumber: {BB353718-DFA3-B74C-A883-B8419AA53934}
usb 3-1: configuration #1 chosen from 1 choice 
Para capturar imagens do sensor de impressão digital, basta executar o programa "img_capture" e logo após a mensagem encoste o dedo no sensor. Duas imagens serão geradas no disco (finger.pgm e finger_standardized.pgm). Veja a seguir o exemplo:
# ./img_capture
Found device claimed by Digital Persona U.are.U 4000/4000B driver
Opened device. It"s now time to scan your finger. 
Para cadastrar e calcular o template da sua impressão digital, execute o programa enroll como no exemplo abaixo:

# ./enroll
This program will enroll your right index finger, unconditionally overwriting any right-index print that was enrolled previously. If you want to continue, press enter, otherwise hit Ctrl+C

Found device claimed by Digital Persona U.are.U 4000/4000B driver
Opened device. It"s now time to enroll your finger.

You will need to successfully scan your finger 1 times to complete the process.

Scan your finger now.
Wrote scanned image to enrolled.pgm
Enroll complete!
Enrollment completed!

O programa "verify_live" tem a função de efetuar continuamente a verificação da impressão digital após o usuário encostar o dedo no sensor. Execute o programa para verificar a funcionalidade seguindo as instruções abaixo:

# ./verify_live
Found device claimed by Digital Persona U.are.U 4000/4000B driver
Opened device. It"s now time to enroll your finger.

You will need to successfully scan your finger 1 times to complete the process.

Scan your finger now.
Enroll complete!
Enrollment completed!

Normally we"d save that print to disk, and recall it at some point later when we want to authenticate the user who just enrolled. In the interests of demonstration, we"ll authenticate that user immediately.

Scan your finger now.
MATCH!
Verify again? [Y/n]? Y

Scan your finger now.
MATCH!
Verify again? [Y/n]? n

fPrint-Demo: Interface gráfica.

Para finalizar, os fontes exemplos "fprint_demo" demonstra as funcionalidades da biblioteca libfprint com uma interface gráfica baseada no GTK bem amigável.

É muito simples a instalação do programa fprinte_demo, basta descompactar o pacote com o comando tar, e utilizar os comandos "./configure" e "make". O binário deve ser executado na pasta "src", como no exemplo das instruções abaixo:
# tar -xvf /home/cabelo/Download/programas/fprint/fprint_demo-0.4.tar
# cd fprint_demo-0.4/
# ./configure
# make
# cd src
# ./fprint_demo 
Abaixo algumas telas do projeto:











Para finalizar, um vídeo demonstrativo.



Colaborar atrai amigos, competir atrai inimigos...
Alessandro de Oliveira Faria

Alessandro de Oliveira Faria - Sócio-proprietário da empresa NETi TECNOLOGIA fundada em Junho de 1996 (http://www.netitec.com.br), empresa especializada em desenvolvimento de software e soluções biométricas, Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de tecnologia desde 1986 assim propiciando ao mercado soluções em software nas mais diversas linguagens e plataforma, levando o Linux a sério desde 1998 com desenvolvimento de soluções open-source, membro colaborador da comunidade Viva O Linux, mantenedor da biblioteca open-source de vídeo captura entre outros projetos.