<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>It should work... &#187; fingerprint</title>
	<atom:link href="http://vierito.es/wordpress/tag/fingerprint/feed/" rel="self" type="application/rss+xml" />
	<link>http://vierito.es/wordpress</link>
	<description>Cuando cualquier trasto es útil</description>
	<lastBuildDate>Sun, 20 May 2012 15:59:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[Fprint] Mejoras en el driver y algunos extras</title>
		<link>http://vierito.es/wordpress/2008/11/06/fprint-mejoras-en-el-drivers-y-algunos-extras/</link>
		<comments>http://vierito.es/wordpress/2008/11/06/fprint-mejoras-en-el-drivers-y-algunos-extras/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 19:03:33 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[fingerprint]]></category>
		<category><![CDATA[fprint]]></category>
		<category><![CDATA[fprint_demo]]></category>
		<category><![CDATA[huellas dactilares]]></category>
		<category><![CDATA[libusb]]></category>
		<category><![CDATA[pam_fprint]]></category>
		<category><![CDATA[QT Fingerprint Scanning GUI]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=168</guid>
		<description><![CDATA[Uno de los principales problemas es que tiene ciertas acciones que son bloqueantes. Libfprint para funcionar hace uso de libusb-0.1 que es una interfaz escrita en C para acceder a usbfs del kernel de linux cuyo problema es que no permite una I/O asíncrona, tan sólo síncrona. La lógica dice que para que un capa [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los principales problemas es que tiene ciertas acciones que son bloqueantes. Libfprint para funcionar hace uso de libusb-0.1 que es una interfaz escrita en C para acceder a usbfs del kernel de linux cuyo problema es que no permite una I/O asíncrona, tan sólo síncrona.</p>
<p>La lógica dice que para que un capa pueda trabajar de modo asíncrono, todas sus capas por debajo puedan hacerlo y aquí es donde nos encontramos con este problema. Se miró la posibilidad de migrar a OpenUSB, desarrolado por SUN Microsystems, pero al final se descartó por diversos motivos.</p>
<p>¿Qué problemas supone esto? Pues por ejemplo, yo ejecuto una función donde quiero verificar una huella:</p>
<p><em>r = fp_verify_finger(dev, enroll_data);</em></p>
<p>El proceso sería activar el dispositivo, libfprint escanearía la huella, se procesan los resultados, se comparan los resultados y se devuelve el resultado de la comparación. Y el problema sería que <strong>la ejecución del programa se para hasta que el usuario escanee su huella</strong>, ¿y si estuviera alejado del ordenador en ese momento? Por ejemplo una interfaz GUI se quedaría sin responder hasta escanear el dedo. ¿Soluciones? Lo primero que pensamos para evitar este comportamiento sería programa la GUI usando un thread distinto cuando se vaya a escanear <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  pero lo propio sería migrar a libusb-1.0 que permite I/O asíncrono.</p>
<p>Hasta ahora el desarrollo de <a title=\"libusb\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2xpYnVzYi53aWtpLnNvdXJjZWZvcmdlLm5ldC8=">libusb</a> se encontraba parado así que Daniel Drake, el responsable principal de fprint, que últimamente se ha dedicado a desarrollar y estabilizar la versión 1.0.</p>
<p>Otra posible mejora sería incluir <strong>funciones para cancelar</strong> las operaciones en curso y otra sería tener un <strong>daemon</strong> global de sistema que funcionara por ejemplo con <strong>DBUS</strong>.</p>
<p>Aparte de la propia libfprint disponemos de unos cuantos extras para poder jugar. El primero de ellos sería <a title=\"fprint pam_fprint\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3JlYWN0aXZhdGVkLm5ldC9mcHJpbnQvd2lraS9QYW1fZnByaW50"><strong>pam_fprint</strong></a>, que es un módulo de PAM que nos proporciona la posibilidad de autenticación en el sistema. La idea es integrarlo con shadow, GDM y KDM aunque en los 2 últimos existen ciertos problemas por el propio diseño de GDM y KDM. Es un módulo muy básico y su función inicial casifue sólo demostrar el uso de libfprint.</p>
<p>Por último, actualmente disponemos de dos frontends, el primero <a title=\"fprint fprint_demo\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3JlYWN0aXZhdGVkLm5ldC9mcHJpbnQvd2lraS9GcHJpbnRfZGVtbw=="><strong>fprint_demo</strong></a> y el segundo &#8220;<a title=\"QT Fingerprint Scanning GUI\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2RhcmtibHVlLmhvbWVpcC5uZXQvZmluZ2VycHJpbnQv"><strong>QT Fingerprint Scanning GUI</strong></a>&#8220;.</p>
<p>Después de todos estos posts sobre fprint, ya no tenéis excusa para hacer un #include &lt;fprint.h&gt; y desarrollar vuestros pequeños monstruitos.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDIvZnByaW50LWxlY3RvcmVzLWRlLWh1ZWxsYXMtZW4tbGludXgv" rel=\"bookmark\" title=\"October 2, 2008\">[Fprint] Lectores de huellas en linux</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMzAvZnByaW50LWxhLWltcGxlbWV0YWNpb24tZGVsLWRyaXZlci8=" rel=\"bookmark\" title=\"October 30, 2008\">[Fprint] La implemetación del driver</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDkvZnByaW50LWxvcy1kaXNwb3NpdGl2b3Mv" rel=\"bookmark\" title=\"October 9, 2008\">[Fprint] Los dispositivos</a></li>
</ul>
<p><!-- Similar Posts took 6.124 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=168" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2008/11/06/fprint-mejoras-en-el-drivers-y-algunos-extras/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Fprint] La implemetación del driver</title>
		<link>http://vierito.es/wordpress/2008/10/30/fprint-la-implemetacion-del-driver/</link>
		<comments>http://vierito.es/wordpress/2008/10/30/fprint-la-implemetacion-del-driver/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 13:41:37 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[fingerprint]]></category>
		<category><![CDATA[fprint]]></category>
		<category><![CDATA[glib]]></category>
		<category><![CDATA[huellas dactilares]]></category>
		<category><![CDATA[libusb]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=140</guid>
		<description><![CDATA[Ya sabemos, por los posts anteriores, que funciones necesitaremos tener disponibles o no dependiendo del dispositivo que estemos usando. El driver está desarrollado en C, como no, ¿por qué? pues porque: es adecuado para programar drivers porque nos proporciona funcionalidad a &#8216;bajo nivel&#8217; siendo un lenguaje de &#8216;alto nivel&#8217;. facilmente podremos crear bindings en c++, [...]]]></description>
			<content:encoded><![CDATA[<p>Ya sabemos, <a title=\"[Fprint] Procesado de la imagen - Huellas dactilares\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMjQvZnByaW50LXByb2Nlc2Fkby1kZS1sYS1pbWFnZW4taHVlbGxhcy1kYWN0aWxhcmVzLw==">por los posts anteriores</a>, que funciones necesitaremos tener disponibles o no dependiendo del <a title=\"[Fprint] Los dispositivos\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDkvZnByaW50LWxvcy1kaXNwb3NpdGl2b3Mv">dispositivo</a> que estemos usando.</p>
<p>El driver está desarrollado en C, como no, ¿por qué? pues porque:</p>
<ul>
<li>es adecuado para programar drivers porque nos proporciona funcionalidad a &#8216;bajo nivel&#8217; siendo un lenguaje de &#8216;alto nivel&#8217;.</li>
<li>facilmente podremos crear bindings en c++, java, python, ruby, &#8230;</li>
<li>será fácil luego adaptarlo a sistema embebidos (empotrados, embedded o como se les quieran llamar)</li>
</ul>
<p>Está implementado en forma de librería y recibe el nombre de libfprint y depende de otras librerías como:</p>
<ul>
<li>libusb: nos proporciona I/O al bus USB y además es portable a FreeBSD, Mac OSX, Windows y más.</li>
<li>glib: un gran librería de rutinas en C de las cuales usaremos unas poquitas (listas enlazadas, operaciones sobre strings, para reservar memoria, etc)</li>
</ul>
<p>A continuación os pongo un esquema de como está estructurado:</p>
<p style="text-align: center;"><a title=\"Fprint driver abstraction model\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA4LzEwL2RyaXZlci1hYnN0cmFjdGlvbi1tb2RlbA=="><img class="aligncenter" src="http://vierito.es/wordpress/wp-content/uploads/2008/10/driver-abstraction-model" alt="Fprint driver abstraction model" /></a></p>
<p>Como se puede ver, tendremos una API de alto nivel donde se nos proporcionan funciones para registrar huellas de dedos (enrollment), verificar (comprobar que la huella escaneada coincide con la almacenada contra la que se ha pedido confirmación) y identificar (encontrar entre las huellas almacenadas una que coincida con la escaneada). La diferencia entre verificar y identificar sería la misma que entre elegir tu nombre de usuario y escanear tu dedo y en lugar de eso escanear tu huella y que el sistema reconozca tu usuario y te confirme.</p>
<p>De estas funciones tendríamos 2 variantes, la que nos devuelve la imagen por si además si quisiéramos hacer alguna cosa con ella y que simplemente realiza su función:</p>
<p>- fp_enroll_finger( )<br />
- fp_verify_finger( )<br />
- fp_identify_finger( )<br />
- fp_enroll_finger<strong>_img(</strong> )<br />
- &#8230;</p>
<p>luego podríamos usar un trozo de código similar a esto:</p>
<p>if (is_imaging_device(dev))<br />
fp_enroll_finger_img(&amp;data, &amp;img);<br />
else<br />
fp_enroll_finger(&amp;data);</p>
<p>Para empezar a usar los dispositivos tendremos disponibles las siguiente funciones que son bastante autoexplicativas:</p>
<p>- fp_discover_devices()<br />
- fp_dev_open() / fp_dev_close()</p>
<p>Para detectar qué dispositivo tenemos es fácil ya que el descriptor del dispositivo incluye un código con el Vendor (fabricante) y el Product ID (identificación de producto) que lo identifica inequívocamente. Por ejemplo, podremos obtener ese código con un simple  &#8216;lsusb&#8217;.</p>
<p>Por debajo de la capa &#8220;Imaging layer&#8221; para escanear necesitaremos las funciones para detectar la presencia del dedo, escanear y detectar la ausencia de dedo.</p>
<p>Como ya hemos contado en otros posts, el dispositivo upek al ser autónomo no requerirá de estas funciones.</p>
<p>Igualmente dispondremos de una serie de funciones para el almacenamiento.</p>
<p>Para el que quiera entretenerse un rato aquí hay más información sobre la API disponible: <a title=\"Fprint API libfprint\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L2FwaS8=">http://www.reactivated.net/fprint/api/</a><br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTEvMDYvZnByaW50LW1lam9yYXMtZW4tZWwtZHJpdmVycy15LWFsZ3Vub3MtZXh0cmFzLw==" rel=\"bookmark\" title=\"November 6, 2008\">[Fprint] Mejoras en el driver y algunos extras</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDkvZnByaW50LWxvcy1kaXNwb3NpdGl2b3Mv" rel=\"bookmark\" title=\"October 9, 2008\">[Fprint] Los dispositivos</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMjQvZnByaW50LXByb2Nlc2Fkby1kZS1sYS1pbWFnZW4taHVlbGxhcy1kYWN0aWxhcmVzLw==" rel=\"bookmark\" title=\"October 24, 2008\">[Fprint] Procesado de la imagen &#8211; Huellas dactilares</a></li>
</ul>
<p><!-- Similar Posts took 6.165 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=140" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2008/10/30/fprint-la-implemetacion-del-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Fprint] Procesado de la imagen &#8211; Huellas dactilares</title>
		<link>http://vierito.es/wordpress/2008/10/24/fprint-procesado-de-la-imagen-huellas-dactilares/</link>
		<comments>http://vierito.es/wordpress/2008/10/24/fprint-procesado-de-la-imagen-huellas-dactilares/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 16:37:59 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[bozorth3]]></category>
		<category><![CDATA[DHS]]></category>
		<category><![CDATA[FBI]]></category>
		<category><![CDATA[fingerprint]]></category>
		<category><![CDATA[fprint]]></category>
		<category><![CDATA[huellas dactilares]]></category>
		<category><![CDATA[mindtct]]></category>
		<category><![CDATA[minutiae]]></category>
		<category><![CDATA[NBIS]]></category>
		<category><![CDATA[NIST]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/2008/10/24/fprint-procesado-de-la-imagen-huellas-dactilares/</guid>
		<description><![CDATA[Si analizamos los dispositivos que ya vimos en el post anterior podemos dividirlos en 2 grandes grupos. Los lectores de huellas que son un dispositivo de imágenes (y nos devuelven, entre otras cosas, una imagen en un cierto formato) y los lectores de huellas que son un dispositivo más autónomo que realizan el procesado y [...]]]></description>
			<content:encoded><![CDATA[<p>Si analizamos <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDkvZnByaW50LWxvcy1kaXNwb3NpdGl2b3Mv" title=\"Fprint devices dispositivos\">los dispositivos que ya vimos en el post anterior</a> podemos dividirlos en 2 grandes grupos. Los lectores de huellas que son un dispositivo de imágenes (y nos devuelven, entre otras cosas, una imagen en un cierto formato) y los lectores de huellas que son un dispositivo más autónomo que realizan el procesado y tan sólo nos devuelven una respuesta booleana.</p>
<p>Para el primer grupo de lectores de huellas necesitaremos pues una serie de algoritmos que nos permitan analizar y comparar las imágenes de las huellas dactilares.</p>
<p>A la hora de desarrollar <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDIvZnByaW50LWxlY3RvcmVzLWRlLWh1ZWxsYXMtZW4tbGludXgv" title=\"Fprint - Lectores de huellas\">fprint</a> se consideró programar todos estos algoritmos pero ya existían, además en forma de código libre, unas posibles soluciones que ahora veremos.</p>
<p>Pero primero, ¿qué buscamos en una huella dactilar? ¿cuáles son los puntos de interes? En una huella tenemos una serie de crestas y surcos que van dibujando un laberinto en el cual podemos de reconocer ciertos puntos de interés, comunmente llamados <em>minutiae</em>. Lo que tenemos que detectar son principalmente las terminaciones o bifurcaciones de las crestas. Existen otros puntos de interés como: el corazón (centro del patrón de la huella), islas, deltas y discontinuidades. En la siguiente imagen podemos ver un ejemplo de cada caso:</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA4LzEwL21pbnV0aWFlLnBuZw==" title=\"Minutiae\"><img src="http://vierito.es/wordpress/wp-content/uploads/2008/10/minutiae.png" alt="Minutiae" /></a></p>
<p>Decía antes que ya existe una colección de herramientas libres que tenían los algoritmos implementados. Se llama <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2ZpbmdlcnByaW50Lm5pc3QuZ292L05CSVMvaW5kZXguaHRtbA==" title=\"NBIS - NIST Biometric Image Software\">NBIS</a> (NIST Biometric Image Software) y fue creada por el grupo de imagen del <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5uaXN0Lmdvdi8=" title=\"NIST\">NIST</a> (National Institute of Standards and Technology). Inicialmente fue desarrollada para el <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mYmkuZ292" title=\"FBI\">FBI</a> (Federal Bureau of Investigation) y el <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5kaHMuZ292Lw==" title=\"DHS\">DHS</a> (Department of Homeland Security) y fue usada para el control del crímen y el control fronterizo respectivamente. Vamos, que cuando vamos a USA y nos escanean las huellas usan este software.</p>
<p><strong>MINDTCT</strong></p>
<p>Dentro del paquete NBIS esta es la herramienta que se usa para detectar las <em>minutiae</em>, como bien su nombre indica: minutiae detector. Antes de buscar los puntos de interés deberemos tratar la imagen para que facilitar esa detección. Se realiza un aumento de contraste en la imagen para binarizarla a 2 colores sólidos. De ese modo las crestas se convertirán en zonas negras sobre blanco. Luego se escanea durante varias pasadas buscando patrones de píxeles. La realidad es que se generan bastante falsos positivos así que seguidamente se eliminan las minutiae de las zonas de la imagen con menos calidad y las que no están claras.</p>
<p>Deberíamos quedarnos no solo con las coordenadas de la minutiae sino también con la dirección de la cresta, que tipo de punto de interés es (bifurcación, terminación, etc, y muy importante un factor de confianza sobre  la formalidad de ese punto detectado.</p>
<p><strong>BOZORTH3</strong></p>
<p>El siguiente paso sería tener la capacidad de concordar diferentes huellas para buscar casos coincidentes y para ello se puede usar este algoritmo. Fue creado por el FBI (un tal Allan S. <em>Bozorth</em>, original, eh?) y detecta coincidencias independientemente de la traslación y rotación de las imágenes. Posteriormente el NIST lo adoptó y lo mejoró. Tiene un umbral configurable para ser más o menos estrictos en las concordancias.</p>
<p>Existe otro sistema open source de procesamiento de huellas digitales, se llama F<a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Z2cy5zb3VyY2Vmb3JnZS5uZXQv" title=\"Fingerprint verification system FVS\">ingerprint Verification System</a> junto con <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lZmluZ2Vy" title=\"eFinger\">efinger</a>,  pero no es tan eficaz como el creado por el NIST.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDkvZnByaW50LWxvcy1kaXNwb3NpdGl2b3Mv" rel=\"bookmark\" title=\"October 9, 2008\">[Fprint] Los dispositivos</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDIvZnByaW50LWxlY3RvcmVzLWRlLWh1ZWxsYXMtZW4tbGludXgv" rel=\"bookmark\" title=\"October 2, 2008\">[Fprint] Lectores de huellas en linux</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMzAvZnByaW50LWxhLWltcGxlbWV0YWNpb24tZGVsLWRyaXZlci8=" rel=\"bookmark\" title=\"October 30, 2008\">[Fprint] La implemetación del driver</a></li>
</ul>
<p><!-- Similar Posts took 8.225 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=135" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2008/10/24/fprint-procesado-de-la-imagen-huellas-dactilares/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Fprint] Los dispositivos</title>
		<link>http://vierito.es/wordpress/2008/10/09/fprint-los-dispositivos/</link>
		<comments>http://vierito.es/wordpress/2008/10/09/fprint-los-dispositivos/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 15:15:08 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[4000/4000B]]></category>
		<category><![CDATA[AES1610]]></category>
		<category><![CDATA[AES2501]]></category>
		<category><![CDATA[AES4000]]></category>
		<category><![CDATA[Authentec]]></category>
		<category><![CDATA[Digital Persona]]></category>
		<category><![CDATA[fdu2000]]></category>
		<category><![CDATA[fingerprint]]></category>
		<category><![CDATA[fprint]]></category>
		<category><![CDATA[huellas dactilares]]></category>
		<category><![CDATA[thinkfinger]]></category>
		<category><![CDATA[UPEK]]></category>
		<category><![CDATA[upeksonly]]></category>
		<category><![CDATA[upektc]]></category>
		<category><![CDATA[upekts]]></category>
		<category><![CDATA[uru4000]]></category>
		<category><![CDATA[vcom5s]]></category>
		<category><![CDATA[Veridicom 5thSense]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/2008/10/09/fprint-los-dispositivos/</guid>
		<description><![CDATA[Después de una introducción continuamos con los dispositivos que podemos emplear. Van siempre conectados al bus USB y según el wiki ahora mismo podemos usar los siguientes: aes1610: Authentec AES1610 aes2501: Authentec AES2501 aes4000: AuthenTec AES4000 fdu2000: SecuGen FDU 2000 upeksonly: UPEK TouchStrip sensor-only upektc: UPEK TouchChip upekts: UPEK TouchStrip with biometric co-processor uru4000: Digital [...]]]></description>
			<content:encoded><![CDATA[<p>Después de una <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDIvZnByaW50LWxlY3RvcmVzLWRlLWh1ZWxsYXMtZW4tbGludXgv" title=\"Fprint linux fingerprint reader\">introducción</a> continuamos con los dispositivos que podemos emplear. Van siempre conectados al bus USB y según el wiki ahora mismo podemos usar los siguientes:</p>
<ul>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvQWVzMTYxMA==" title=\"Aes1610\">aes1610</a>: Authentec AES1610</li>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvQWVzMjUwMQ==" title=\"Aes2501\">aes2501</a>: Authentec AES2501</li>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvQWVzNDAwMA==" title=\"Aes4000\">aes4000</a>: AuthenTec AES4000</li>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvRmR1MjAwMA==" title=\"Fdu2000\">fdu2000</a>: SecuGen FDU 2000</li>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvVXBla3Nvbmx5" title=\"Upeksonly\">upeksonly</a>: UPEK TouchStrip sensor-only</li>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvVXBla3Rj" title=\"Upektc\">upektc</a>: UPEK TouchChip</li>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvVXBla3Rz" title=\"Upekts\">upekts</a>: UPEK TouchStrip with biometric co-processor</li>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvVXJ1NDAwMA==" title=\"Uru4000\">uru4000</a>: Digital Persona U.are.U 4000/4000B</li>
<li> <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvVmNvbTVz" title=\"Vcom5s\">vcom5s</a>: Veridicom 5thSense</li>
</ul>
<p>Poco a poco se van añadiendo modelos, de hecho, inicialmente sólo se dió soporte a 4 modelos distintos así que para ilustrar un poco las características que suelen tener estos cacharros vamos a ver los 4 primeros que se implementaron (empezando por el mio!) :</p>
<h3><strong>AuthenTec AES2501</strong></h3>
<p>Este es el que tengo yo en mi HP nc6400. Es &#8220;<strong>swipe-type ﬁngerprint sensor</strong>&#8221; lo que viene a ser de barrido, es decir el usuario tiene que pasar el dedo y dependiendo de como lo haga la imagen resultante podrá ser distinta. Lo que hace es escanear durante distintos instantes de tiempo el trocito de huella que está encima del sensor en sí y luego presenta al sistema una serie de imagenes en <strong>&#8216;rebanadas&#8217; de 192&#215;16 píxeles en escala de grises</strong>. Con esas lonchas de imágenes el driver deberá eliminar el overlap entre los diferentes trozos y juntarlos para obtener la huella. Cuando este sensor viene montado en portátiles a veces se da el caso de que lo han puesto al revés así que, además de eliminar el overlap, se deberá también <strong>determinar la dirección de escaneo</strong>. Pero nos falta un detalle, digamos que unos dispositivos son más &#8216;tontos&#8217; que otros, así que en este modelo también se deberá <strong>detectar cuando se ha puesto el dedo en el sensor y cuando se ha quitado</strong>. (lo cierto es que cuanto más tonto sea el dispositivo más guay porque al no hacer cosas automáticamente podremos hacer más cosas como queramos). Lo cierto es que a pesar que no tener implementadas en hardware funciones para detectar el dedo tiene un modo de captura en el cual devuelve el histograma de la imagen capturada pero SIN transferir los datos de esa imagen. Esto simplifica mucho las cosas porque calculando el area el histograma y teniendo un valor umbral podremos determinar la presencia de un dedo o no.</p>
<p><span id="more-130"></span>Respecto a la captura de las imágenes es un poco más complicado que en otros dispositivos, como hemos dicho devuelve una serie de imágenes de 192&#215;16 pero el caso es que vienen codificadas y ordenadas de una forma un poco rara. Gracias a la especificación del fabricante se puede reordenar el churro de bytes y así obtener las imagenes en escala de grises.</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA4LzEwL2FlczI1MDEtc2xpY2VzLmpwZw==" title=\"AES2501 Slices\"><img src="http://vierito.es/wordpress/wp-content/uploads/2008/10/aes2501-slices.jpg" alt="AES2501 Slices" /></a></p>
<p>Estos dispositivos suelen estar presentes en los portátiles de HP y Fujitsu.</p>
<h3><strong>AuthenTec AES4000</strong></h3>
<p>Este modelo, a diferencia del anterior es &#8220;<strong>press-type USB fingerprint sensor</strong>&#8221; es decir, se coloca el dedo en lugar de arrastrarlo por el sensor. Devuelve una <strong>imagen cuadrada en escala de grises</strong> al sistema y tiene implementado en hardware funciones básicas para detectar la presencia del dedo. Es bastante común en periféricos autenticadores. Al igual que AES2501 ordena los bits de las imágenes del mismo modo extraño made in AuthenTec.</p>
<p>Su mayor problema es que lleva un sensor muy pequeño, de 223ppi (pixels per inch), comparado otros modelos y con los 500ppi recomendados por los algoritmos de identificación y verificación de huellas (mindtct, del cual hablaremos más adelante) . Originalmente las imágenes que se obtenían eran malísimas pero escalando la imagen antes del procesado se solventa gran parte del desastre.</p>
<p>A continuación el resultado de la binarización de la imagenes con ambos tamaños:</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA4LzEwL2FlczQwMDAtc21hbGwuanBn" title=\"AES4000 223ppi binarized image\"><img src="http://vierito.es/wordpress/wp-content/uploads/2008/10/aes4000-small.jpg" alt="AES4000 223ppi binarized image" /></a></p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA4LzEwL2FlczQwMDAtZW5sYXJnZWQuanBn" title=\"AES4000 223ppi enlarged and binarized image\"><img src="http://vierito.es/wordpress/wp-content/uploads/2008/10/aes4000-enlarged.jpg" alt="AES4000 223ppi enlarged and binarized image" /></a></p>
<h3>Digital Persona U.are.U 4000B</h3>
<p>Es un press-type USB ﬁngerprint sensor también. Usa un sistema optico para capturar una imagen de alta resolución de la huella. Tiene implementado en hardware detección de la presencia del dedo y 2 modos de captura. Este dispositivo lo vende por separado la empresa Digital Persona y se encuentran en varios dispositivos de entrada embebidos de Microsoft. También se vende el módulo sensor por separado que, de hecho, otras empresas han integrado en más de uno de sus productos.</p>
<p>Devuelve imágenes de 8 bits en escala de grises estandar que no requiere de ningún tipo de reordenación como los casos anteriores.</p>
<h3><strong>UPEK TouchStrip</strong></h3>
<p>Es un &#8220;swipe-type USB ﬁngerprint scanner&#8221; pero este dispositivo guarda una diferencia clave respecto al resto, lleva un <strong>coprocesador biométrico</strong> que realiza el procesado de la imagen en hardware y <strong>en lugar de presentar una imagen el sistema tan sólo presenta un resultado booleano de autenticación concedida o denegada.</strong> Por un lado eso nos ofrece desventajas a la hora de usar los algoritmos que queramos para el tratamiento de imágenes pero por otro nos podría simplificar el sistema a la hora de crear un sistema embebido y la ventaja de poder disminuir el tamaño del driver.</p>
<p>Este dispositivo se puede encontrar en portátiles de IBM/Lenovo, DELL y Toshiba. Existe un driver propietario de UPEK para linux y tambień tenemos disponible el driver <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RoaW5rZmluZ2VyLnNvdXJjZWZvcmdlLm5ldC8=" title=\"ThinkFinger\">Thinkfinger</a>.</p>
<p>En las próximas entregas veremos que algoritmos se usan para tratar las imágenes. Y bueno, no hace falta decir que gran parte de lo que se conoce de todos estos dispositivo es gracias a la ingeniería inversa y a esnifar el bus USB. Si tienes un dispositivo que no esté soportado no dudes enviar tus chorrizos de bytes a la lista de correo de fprint.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMzAvZnByaW50LWxhLWltcGxlbWV0YWNpb24tZGVsLWRyaXZlci8=" rel=\"bookmark\" title=\"October 30, 2008\">[Fprint] La implemetación del driver</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDYvMDgvaHAtbW9iaWxlLWRhdGEtcHJvdGVjdGlvbi1zeXN0ZW0tM2Qv" rel=\"bookmark\" title=\"June 8, 2008\">HP Mobile Data Protection System 3D</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMjQvZnByaW50LXByb2Nlc2Fkby1kZS1sYS1pbWFnZW4taHVlbGxhcy1kYWN0aWxhcmVzLw==" rel=\"bookmark\" title=\"October 24, 2008\">[Fprint] Procesado de la imagen &#8211; Huellas dactilares</a></li>
</ul>
<p><!-- Similar Posts took 6.393 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=130" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2008/10/09/fprint-los-dispositivos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Fprint] Lectores de huellas en linux</title>
		<link>http://vierito.es/wordpress/2008/10/02/fprint-lectores-de-huellas-en-linux/</link>
		<comments>http://vierito.es/wordpress/2008/10/02/fprint-lectores-de-huellas-en-linux/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 20:05:46 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[fingerprint]]></category>
		<category><![CDATA[fprint]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/2008/10/02/fprint-lectores-de-huellas-en-linux/</guid>
		<description><![CDATA[Ya es bastante común encontrarse con portátiles que llevan incorporado lectores de huellas que pueden ser usados para loguearse u otros menesteres menos útiles, incluso con algún gadget geek para jugar a ser Macgyver. Históricamente, por algun razón absurda de pensar que es algo tecnólógicamente avanzado, se ha asociado estos dispositivos a las pelis de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA4LzEwL2ZwcmludF9kZW1vX3YwMV92ZXJpZnlfYmluYXJpemVkLmdpZg==" title=\"Fprint_demo\"></a></p>
<p style="text-align: center"><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA4LzEwL2ZwcmludF9kZW1vX3YwMV92ZXJpZnlfYmluYXJpemVkLmdpZg==" title=\"Fprint_demo\"><img src="http://vierito.es/wordpress/wp-content/uploads/2008/10/fprint_demo_v01_verify_binarized.gif" alt="Fprint_demo" /></a></p>
<p>Ya es bastante común encontrarse con portátiles que llevan incorporado lectores de huellas que pueden ser usados para loguearse u otros menesteres menos útiles, incluso con algún gadget geek para jugar a ser Macgyver.</p>
<p>Históricamente, por algun razón absurda de pensar que es algo tecnólógicamente avanzado, se ha asociado estos dispositivos a las pelis de acción con un espías que entran en la sala super segura de la muerte usando el dedito (a veces se lo curran más y hacen escáneres de retinas y análisis in situ de ADN) pero lo cierto es que la experiencia ha demostrado que la seguridad de estos dispositivos no es tal.  Por ello, para cualquiera que se lo plantee, ya lo avanzo: &#8220;Jamás uséis un escáner de huellas como método de <strong>autenticación</strong> a un sistema o servicio que sea crítico o susceptible&#8221;. Este sistema se debe usar como añadido (como <strong>confirmación</strong> extra) para aumentar la seguridad de una clave por ejemplo.</p>
<p>El soporte de estos dispositivos en linux ha sido prácticamente nulo y cojo hasta la llegada del proyecto <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvTWFpbl9QYWdl" title=\"Fprint\">fprint</a> que ha conseguido dar soporte a la gran mayoría de los dispositivos más extendidos en el mercado. La parte más grande e importante viene en forma de librería (<a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFjdGl2YXRlZC5uZXQvZnByaW50L3dpa2kvTGliZnByaW50" title=\"Fprint libfprint\">libfprint</a>) que nos permite acceder interactuar estos lectores. En Gentoo el paquete está disponible en el overlay wschlich-testing y existen paquetes para otras distros porque el proyecto ya ha cogido fama, de todas formas no hay mayor problema en descargar las fuentes y compilar directamente.</p>
<p>En los próximos posts nos adentraremos un poquito en como funcionan estos dispositivos y como se ha desarrollado el driver.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMjQvZnByaW50LXByb2Nlc2Fkby1kZS1sYS1pbWFnZW4taHVlbGxhcy1kYWN0aWxhcmVzLw==" rel=\"bookmark\" title=\"October 24, 2008\">[Fprint] Procesado de la imagen &#8211; Huellas dactilares</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMDkvZnByaW50LWxvcy1kaXNwb3NpdGl2b3Mv" rel=\"bookmark\" title=\"October 9, 2008\">[Fprint] Los dispositivos</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMzAvZnByaW50LWxhLWltcGxlbWV0YWNpb24tZGVsLWRyaXZlci8=" rel=\"bookmark\" title=\"October 30, 2008\">[Fprint] La implemetación del driver</a></li>
</ul>
<p><!-- Similar Posts took 5.604 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=128" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2008/10/02/fprint-lectores-de-huellas-en-linux/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>

