Desenvolvimento com Biometria por Impressão Digital no Linux com a libfprint

Padrão

Olá, pessoal! Hoje vou falar sobre a biblioteca open source para o desenvolvimento de aplicativos utilizando biometria no Linux.

O projeto fprint visa preencher uma lacuna presente hoje nos desktops Linux: o suporte para dispositivos de leitura de impressão digital. Antes deste projeto, o suporte a tais dispositivos estava espalhado entre vários projetos (a grande maioria deles, incompletos) de forma bastante desorganizada, de forma que o desenvolvedor tinha que implementar o suporte para cada um dos dispositivos de maneira separada. O projeto tem como objetivo fornecer suporte a todos os dispositivos que a equipe de desenvolvimento tiver acesso (que promessa, hein!).

O projeto é dividido em 3 vertentes:

  • libfprint: é o núcleo do projeto, onde reside o trabalho pesado, que é conversar com os dispositivos e processar os dados. É a parte que mais interessa a nós programadores.
  • módulo PAM (Pluggable Authentication Module): fornece integração da libfprint com projetos já existentes. Por exemplo, você pode fazer login no seu sistema Linux utilizando sua impressão digital ao invés da sua senha.
  • fprintd: um daemon que fornece a funcionalidade de escanear impressões digitais através de D-Bus.

Hoje, a biblioteca, que se encontra na versão 0.4.0 fornece suporte a uma boa quantidade de leitores, dentre eles:

  • F3Sv Laptop (ASUS)
  • F1F Tablet (ASUS)
  • Z37E Laptop (ASUS)
  • SmartTerminal SFR-1244U (Cherry)
  • Alya (Covardis)
  • Atria (Covardis)
  • U.are.U 4000 Reader (Digital Persona)
  • U.are.U 4000B Reader (Digital Persona)
  • U.are.U Fingerprint Keyboard (Digital Persona)
  • FP-Sensor S26381-K342-V1 (Fujitsu-Siemens)
  • Lifebook S7110 (Fujitsu-Siemens)
  • 2510p, 6510b, 6710b, 6910p, 8710w, nc6400, nx6125, nx6325 e nw9440 (HP)
  • Pavilion dv6640ew, HDX9494nr, tx1302au e tx2108ca (HP)
  • Thinkpad T43p, T61 e X41 (IBM)
  • V100, 3000 N100 e Thinkpad R61i (Lenovo)
  • MD85264 (Medion)
  • Leitor biométrico / teclado (Microsoft)
  • 100 XS (Precise Biometrics)
  • P35 e X65 (Samsung)
  • SZ61VN (Sony)
  • Pangolin (System76)
  • PA460U DEFCON Authenticator (Targus)
  • A-105 (Toshiba)
  • Eikon (UPEK)
  • 5thSense (Veridicon)
  • XM550 e XM570 (Verinex)

Como pode ser percebido, a biblioteca já conta com uma boa quantidade de dispositivos. Além disso, o projeto encontra-se ativo e periodicamente conta com a adição de novos dispositivos.

Neste post, mostrarei como instalar a biblioteca no Ubuntu. Primeiramente, vamos baixar o código-fonte para compilar neste link. O Ubuntu tem a biblioteca em seus repositório, porém na versão 0.0.6. Vamos instalar a versão mais recente (no momento em que escrevo este post, versão 0.4.0).

Antes de compilarmos a biblioteca, é necessário instalarmos as suas dependências. Abra um terminal no Ubuntu e digite:

sudo apt-get install libglib2.0-dev libssl-dev libcrypto++-dev libusb-dev libusb-1.0.0-dev imagemagick libmagick++-dev

Após a instalação dos pacotes, descompacte os arquivos e execute os conhecidos comandos para a instalação da biblioteca:

./configure
make
sudo make install

Pronto! Se tudo correu nos conformes, a biblioteca já deve estar instalada em seu sistema. Para testar, abra o Gedit ou qualquer editor de texto e digite o seguinte código:

#include <libfprint/fprint.h>
#include <stdio.h>

int main(void)
{
    fp_init();

    fp_exit();
    return 0;
}

Para compilar:

gcc -lfprint -oexecutavel main.c

Pronto! Em um outro post eu mostro como realizar operações de autenticação com a biblioteca. Até lá!

3 comentários sobre “Desenvolvimento com Biometria por Impressão Digital no Linux com a libfprint

    • Rafael

      Depende muito. Se tem cedilha, deve ser Brasil ABNT. Se não tem, você pode tentar algum dos layouts americanos. Se eu não me engano tem uma opção de detectar o layout do teclado automaticamente.

  1. Emmanuel Ferro

    ERRO AO COMPILAR.

    $ gcc -lfprint -oexecutavel main.c
    In file included from main.c:1:
    /usr/local/include/libfprint/fprint.h: In function ‘fp_enroll_finger’:
    /usr/local/include/libfprint/fprint.h:165: error: ‘NULL’ undeclared (first use in this function)
    /usr/local/include/libfprint/fprint.h:165: error: (Each undeclared identifier is reported only once
    /usr/local/include/libfprint/fprint.h:165: error: for each function it appears in.)
    /usr/local/include/libfprint/fprint.h: In function ‘fp_verify_finger’:
    /usr/local/include/libfprint/fprint.h:214: error: ‘NULL’ undeclared (first use in this function)
    /usr/local/include/libfprint/fprint.h: At top level:
    /usr/local/include/libfprint/fprint.h:219: error: expected declaration specifiers or ‘…’ before ‘size_t’
    /usr/local/include/libfprint/fprint.h:238: error: expected declaration specifiers or ‘…’ before ‘size_t’
    /usr/local/include/libfprint/fprint.h: In function ‘fp_identify_finger’:
    /usr/local/include/libfprint/fprint.h:240: error: ‘match_offset’ undeclared (first use in this function)
    /usr/local/include/libfprint/fprint.h:240: error: ‘NULL’ undeclared (first use in this function)
    /usr/local/include/libfprint/fprint.h:240: error: too many arguments to function ‘fp_identify_finger_img’
    /usr/local/include/libfprint/fprint.h: At top level:
    /usr/local/include/libfprint/fprint.h:251: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fp_print_data_get_data’
    /usr/local/include/libfprint/fprint.h:253: error: expected declaration specifiers or ‘…’ before ‘size_t’
    /usr/local/include/libfprint/fprint.h:293: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fp_get_pollfds’
    /usr/local/include/libfprint/fprint.h:335: error: expected declaration specifiers or ‘…’ before ‘size_t’

Deixe uma resposta