<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-8098716457077183209</atom:id><lastBuildDate>Wed, 11 Sep 2024 02:02:53 +0000</lastBuildDate><category>C#</category><category>blogit</category><category>webslices</category><category>ejemplo</category><category>concurso</category><category>microsoft</category><category>sistemas biometricos</category><category>windows</category><category>SQL injection</category><category>aprendizaje</category><category>azure</category><category>criptografia</category><category>how do i</category><category>inyeccion SQL</category><category>lector de huellas</category><category>sistema de archivos</category><category>windows 7</category><category>.net</category><category>Base de datos</category><category>DoS</category><category>IE</category><category>IIS</category><category>MBSA</category><category>antivirus</category><category>dotnetguerrero</category><category>fingerprint</category><category>internet</category><category>llaves publicas y privadas</category><category>morro</category><category>msdn</category><category>noticias</category><category>servidores</category><category>technet</category><category>twitter</category><category>videos</category><title>topicos de seguridad informatica</title><description>Temas sobre seguridad informática en linux y en windows.&#xa;Tópicos sobre tipos de ataques y tecnologías disponibles para poder evitar estos ataques.</description><link>http://topicos-seguridad.blogspot.com/</link><managingEditor>noreply@blogger.com (ajesusflores)</managingEditor><generator>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-6598395331002189914</guid><pubDate>Wed, 21 Aug 2013 18:13:00 +0000</pubDate><atom:updated>2013-08-21T11:13:18.868-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ejemplo</category><category domain="http://www.blogger.com/atom/ns#">how do i</category><category domain="http://www.blogger.com/atom/ns#">inyeccion SQL</category><category domain="http://www.blogger.com/atom/ns#">SQL injection</category><title>Ejemplo real a una página de gobierno de una inyección SQL (video)</title><description>Navegando por la red me encontré un video que demuestra que verificar cada &quot;input&quot; por parte del usuario es de vital importancia ya que se pueden incurrir en errores como el del video mostrado a continuación, donde el atacante logra accesar a la página ¡y como administrador!&lt;br /&gt;
&lt;br /&gt;
Primeramente intenta accesar introduciendo:&lt;br /&gt;
&lt;br /&gt;
yo&#39; or 1=1;--&lt;br /&gt;
&lt;br /&gt;
con lo que no tiene éxito, posteriormente introduce:&lt;br /&gt;
&#39; or &#39;i&#39;=&#39;i&lt;br /&gt;
&lt;br /&gt;
con lo que logra accesar al sitio sin tener la autorización de los administradores.&lt;br /&gt;
&lt;br /&gt;
Para una pequeña introducción al tema pueden consultar el post:&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;
&lt;a href=&quot;http://topicos-seguridad.blogspot.com/2008/12/inyeccion-sql-ejemplo-de-inyeccion-sql.html&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Inyeccion SQL - Ejemplo de inyeccion SQL (SQL injection) en C# y  MySQL&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h1&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;h1&gt;
&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;//www.youtube.com/embed/6ivbB6SyVUo&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
</description><link>http://topicos-seguridad.blogspot.com/2013/08/ejemplo-real-una-pagina-de-gobierno-de.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-748863659628293325</guid><pubDate>Wed, 16 Nov 2011 20:45:00 +0000</pubDate><atom:updated>2013-04-17T11:06:49.232-07:00</atom:updated><title>[λ]Box - il y a vie!!: Modelo de datos desconectado - ADO.NET</title><description>&lt;a href=&quot;http://lambdabox.blogspot.com/2011/11/modelo-de-datos-desconectado-adonet.html&quot;&gt;[λ]Box - il y a vie!!: Modelo de datos desconectado - ADO.NET&lt;/a&gt;</description><link>http://topicos-seguridad.blogspot.com/2011/11/box-il-y-vie-modelo-de-datos.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-649981202922558683</guid><pubDate>Tue, 01 Nov 2011 16:13:00 +0000</pubDate><atom:updated>2013-04-17T11:07:03.397-07:00</atom:updated><title>SecureString - Almacenar contraseñas en memoria</title><description>En mi caso y espero que no sea su caso (por lo de la contraseña), al desarrollar las aplicaciones que se conectarán a una base de datos me gusta tener una clase que me administre la conexión a la Base de Datos y todos los campos que ésta necesita (incluyendo la contraseña&amp;nbsp;de acceso).&amp;nbsp; Para evitar almacenar la contraseña en memoria en un tipo string podemos utilizar SecureString [System.Security.SecureString].&lt;br /&gt;
&lt;br /&gt;
Uno de los puntos importantes es que SecureString implementa CriticalFinalizerObject, lo cual significa que SecureString se considera una Región de ejecución restringida (Constrained Ejecution Region - CER)&amp;nbsp;lo que significa que las excepciones de tipo out-of-band estan prohibidas en regiones de tipo CER por lo que evitamos que cierta parte del código no se ejecute (con el fin de liberar de memoria el objeto SecureString llamando la función Dispose()). Se debe tener en cuenta que SecureString se mantiene en una región no administrada de la memoria, por lo que es nuestra responsabilidad liberar ese recurso.&lt;br /&gt;
&lt;br /&gt;
Nota: Considera que no tiene caso almacenar una contraseña o cualquier dato sensible en un&amp;nbsp; string y pasarlo como parámetro para agregarlo a un objeto SecureString si no eliminamos de memoria ese string inmediatamente despues de utilizarlo.&lt;br /&gt;
&lt;br /&gt;
Utilizar SecureString.&lt;br /&gt;
&lt;br /&gt;
una de las formas en que podemos utilizar SecureString en combinación con las propiedades (get &amp;amp; set):&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEvmbWh5tlla2P4jQYWn53wppXN7fxWO0umsRmmW6E4mncX5PxWabyC-kS2rnIStLBE_PdG40M0OmH1wYaRQ_sA0v2XnkKdztmEBdlaK10gfyapRn8Fubkun9waSdKb7dy0JW8b0mRcM/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEvmbWh5tlla2P4jQYWn53wppXN7fxWO0umsRmmW6E4mncX5PxWabyC-kS2rnIStLBE_PdG40M0OmH1wYaRQ_sA0v2XnkKdztmEBdlaK10gfyapRn8Fubkun9waSdKb7dy0JW8b0mRcM/s400/1.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;En mi caso marqué la propiedad get como privada para accesar únicamente desde la misma clase.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&amp;nbsp;Es importante volver a decir que no debemos almacenar permanentemente una copia de la contraseña en memoria.&lt;br /&gt;
&lt;br /&gt;
Via: &lt;a href=&quot;http://lambdabox.blogspot.com/2011/10/securestring-almacenar-contrasenas-en.html&quot;&gt;http://lambdabox.blogspot.com/2011/10/securestring-almacenar-contrasenas-en.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://topicos-seguridad.blogspot.com/2011/11/en-mi-caso-y-espero-que-no-sea-su-caso.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEvmbWh5tlla2P4jQYWn53wppXN7fxWO0umsRmmW6E4mncX5PxWabyC-kS2rnIStLBE_PdG40M0OmH1wYaRQ_sA0v2XnkKdztmEBdlaK10gfyapRn8Fubkun9waSdKb7dy0JW8b0mRcM/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-7974540528140278155</guid><pubDate>Sat, 15 May 2010 20:57:00 +0000</pubDate><atom:updated>2013-04-17T11:07:24.530-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">ejemplo</category><category domain="http://www.blogger.com/atom/ns#">sistema de archivos</category><title> Vigilar nuestro sistema de archivos con FileSystemWatcher</title><description>Hay una caracteristica del .net framework un tanto desconocida, la clase  FileSystemWatcher que monitorea el sistema de archivos y dispara un  evento cada vez que se realiza algun cambio. &lt;br /&gt;
&lt;br /&gt;
Las aplicaciones de  esta clase son muchísimas, todo depende del potencial que vayamos  descubriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQY71Ut2OIUuMZbUdiKGjSe0poQpCFaHMc9nU7KMvi9WUfyiyxog0tBT5A8iBi7h2v1_cUysrfzsGMEBD33n0WDo3BVxUWO2nwTF2PAi0qh7_N7gUo3gpGW-V_4eyx6o2Bw3bj8Hi3ZAo/s1600/pant.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQY71Ut2OIUuMZbUdiKGjSe0poQpCFaHMc9nU7KMvi9WUfyiyxog0tBT5A8iBi7h2v1_cUysrfzsGMEBD33n0WDo3BVxUWO2nwTF2PAi0qh7_N7gUo3gpGW-V_4eyx6o2Bw3bj8Hi3ZAo/s320/pant.JPG&quot; width=&quot;282&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como primer paso creamos nuestro formulario en Visual &lt;u&gt;Studio&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Declaramos  nuestro objeto del tipo FileSystemWatcher:&lt;br /&gt;
&lt;div style=&quot;color: #ea9999;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;&quot;&gt;System.IO.FileSystemWatcher  watcher&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Definimos los eventos cuando se presiona el boton  &quot;Iniciar&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; &lt;span style=&quot;color: #ea9999; font-size: small;&quot;&gt;private void buttonIniciar_Click(object sender, EventArgs e)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  {&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Path = textBoxPath.Text;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Se define la  carpeta que se va a monitorear&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  watcher.IncludeSubdirectories = checkBoxSubDir.Checked; // true: se  monitorean todos los subdirectorios&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; EVENTOS GENERADOS&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  watcher.Changed += new System.IO.&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style=&quot;font-size: small;&quot;&gt;FileSystemEventHandler(&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style=&quot;font-size: small;&quot;&gt;watcher_Changed);&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Renamed += new System.IO.RenamedEventHandler(&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style=&quot;font-size: small;&quot;&gt;watcher_Renamed);&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Deleted += new System.IO.&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style=&quot;font-size: small;&quot;&gt;FileSystemEventHandler(&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style=&quot;font-size: small;&quot;&gt;watcher_Deleted);&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  watcher.Created += new System.IO.&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style=&quot;font-size: small;&quot;&gt;FileSystemEventHandler(&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style=&quot;font-size: small;&quot;&gt;watcher_Created);&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  watcher.EnableRaisingEvents = true;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buttonDetener.Enabled = true;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  buttonIniciar.Enabled = false;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Y posteriormente  controlamos las funciones que se ejecutan al dispararse el evento (para  este ejemplo únicamente escribimos en un textbox los cambios que se han  realizado):&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;void watcher_Created(object sender,  System.IO.FileSystemEventArgs e)&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  textBoxLog.Text += e.ChangeType + &quot;:&quot; + e.FullPath +  Environment.NewLine;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void  watcher_Deleted(object sender, System.IO.FileSystemEventArgs e)&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textBoxLog.Text += e.ChangeType + &quot;:&quot; +  e.FullPath + Environment.NewLine;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void  watcher_Renamed(object sender, System.IO.RenamedEventArgs e)&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textBoxLog.Text += e.ChangeType + &quot; &amp;gt;&amp;gt; &quot; +  e.OldFullPath + &quot;:&quot; + e.FullPath + Environment.NewLine;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  void watcher_Changed(object sender, System.IO.FileSystemEventArgs e)&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textBoxLog.Text += e.ChangeType + &quot;:&quot; +  e.FullPath + Environment.NewLine;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;br /&gt;
Si asi lo deseamos  podemos disponer de un boton &quot;Detener&quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ea9999;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;private void  buttonDetener_Click(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Changed -= new System.IO.&lt;wbr&gt;&lt;/wbr&gt;FileSystemEventHandler(&lt;wbr&gt;&lt;/wbr&gt;watcher_Changed);&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  watcher.Renamed -= new System.IO.RenamedEventHandler(&lt;wbr&gt;&lt;/wbr&gt;watcher_Renamed);&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  watcher.Deleted -= new System.IO.&lt;wbr&gt;&lt;/wbr&gt;FileSystemEventHandler(&lt;wbr&gt;&lt;/wbr&gt;watcher_Deleted);&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Created -= new System.IO.&lt;wbr&gt;&lt;/wbr&gt;FileSystemEventHandler(&lt;wbr&gt;&lt;/wbr&gt;watcher_Created);&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  watcher.EnableRaisingEvents = true;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  buttonIniciar.Enabled = true;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buttonDetener.Enabled =  false;&lt;/div&gt;
&lt;div style=&quot;color: #ea9999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Filtros&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
La propieda filter de nuestro objeto  FileSystemWatcher nos permite definir que tipo de archivos queremos  monitorear, en la vida real un filtro del tipo &quot;*.*&quot; no sirve ya que  siempre se realizan cambios en los archivos en segundo plano (archivos  pueden no interesarnos).&lt;br /&gt;
&lt;br /&gt;
Nota al margen: En máquina con Windows XP (sin Service Pack) y  anteriores sólo funciona un objeto FileSystemWatcher a la vez sobre el  mismo folder, mientras que en máquinas con Windows XP SP 1 o superiores  se pueden tener dos o mas instancias de la clase FileSystemWatcher a la  vez.</description><link>http://topicos-seguridad.blogspot.com/2010/05/vigilar-nuestro-sistema-de-archivos-con.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQY71Ut2OIUuMZbUdiKGjSe0poQpCFaHMc9nU7KMvi9WUfyiyxog0tBT5A8iBi7h2v1_cUysrfzsGMEBD33n0WDo3BVxUWO2nwTF2PAi0qh7_N7gUo3gpGW-V_4eyx6o2Bw3bj8Hi3ZAo/s72-c/pant.JPG" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-4614394594433072671</guid><pubDate>Fri, 05 Mar 2010 01:57:00 +0000</pubDate><atom:updated>2013-04-17T11:07:57.745-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">sistemas biometricos</category><title>Identificación facial con .net - Griaule ICAO Face SDK</title><description>&lt;b&gt;Antes de cualquier cosa debemos aclarar que el ejemplo que utilizaremos en esta entrada únicamente identifica el rostro en una imagen y no es capaz de determinar si ese rostro pertenece a cierta persona (como si hiciera con &lt;a href=&quot;http://topicos-seguridad.blogspot.com/2009/08/utilizar-lector-de-huellas-en-nuestras.html&quot;&gt;huella digital&lt;/a&gt;), sin embargo puede ser de mucha ayuda para las aplicaciones.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Aclarado el punto anterior, es tiempo de comenzar. Lo primero que necesitaremos es la libreria ICAO Face SDK que podemos descargar desde el sitio web de Griaule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.griaulebiometrics.com/page/en-us/gricaoface_sdk&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;95&quot; src=&quot;http://www.griaulebiometrics.com/images_nw/header_icaoface.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ya que hemos instalado la libreria, debemos crear un nuevo proyecto en Visual Studio. En nuestro caso vamos a crear un proyecto en C#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiphbWZBysijQm-xtJr50TuiNS7XtudWDYL00Uu78TKR_XAV-kz2QjPXtsUuhotJJRRsLB0wn4-lIm0Z_FczEU7AShzooSGf0o5gnI9wGE8Ed43pzOp2VLFSwtEyVvKFEN35pp0iY-CWVI/s1600-h/crear%20proyecto.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiphbWZBysijQm-xtJr50TuiNS7XtudWDYL00Uu78TKR_XAV-kz2QjPXtsUuhotJJRRsLB0wn4-lIm0Z_FczEU7AShzooSGf0o5gnI9wGE8Ed43pzOp2VLFSwtEyVvKFEN35pp0iY-CWVI/s320/crear%20proyecto.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ya que hemos creado nuestro proyecto debemos agregar la referencia a la libreria ICAO (Com.Griaule.IcaoFace)&lt;br /&gt;
&lt;br /&gt;
Para este ejemplo se tomo como fuente de imagenes una webcam (&lt;a href=&quot;http://nomejodasporfavor.blogspot.com/2010/02/seguramente-muchos-de-nosotros-hemos.html&quot;&gt;me base en esta pagina para hacer eso&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hasta este punto he saltado las explicaciones, sin embargo ustedes pueden obtener las imágenes desde archivos.&lt;br /&gt;
&lt;br /&gt;
Para continuar debemos declarar un objeto del tipo IcaoImage y otro del tipo FaceImage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
Com.Griaule.IcaoFace.IcaoImage imagenIcao;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
Com.Griaule.IcaoFace.FaceImage imagenRostro;&lt;/div&gt;
&lt;br /&gt;
También en este punto hemos diseñado nuestro formualrio, el cual tiene 3 picturebox, 3 botones y un control ListView.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUZsli9h8igoP-tjNMRx2VIZBFzDqQ6BrmAf9S1Xb5_WlRrHeEKSVVXdEGxPpq6Av4n6De9fGRBbK9_aO_uZT1XdGx747K8xTNPWIoufAsr_OdNdqSMTQjVDzn-w7ggrJ4LYhzz30kEF8/s1600-h/formulario.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUZsli9h8igoP-tjNMRx2VIZBFzDqQ6BrmAf9S1Xb5_WlRrHeEKSVVXdEGxPpq6Av4n6De9fGRBbK9_aO_uZT1XdGx747K8xTNPWIoufAsr_OdNdqSMTQjVDzn-w7ggrJ4LYhzz30kEF8/s200/formulario.JPG&quot; width=&quot;189&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
El control listview nos servirá para tener una lista de todas las webcams desde las que podemos obtener las imágenes.&lt;br /&gt;
&lt;br /&gt;
El botón buttonObtenerImagen lo usaremos para obtener la imagen desde nuestra camara web (ustedes pueden poner &quot;dialogo de abrir archivo&quot;). El primer picturebox (PictureBoxOriginal) lo usaremos para mostrar la imagen obtenida desde nuestra webcam; hasta aquí el proceso es realmente sencillo.&lt;br /&gt;
&lt;br /&gt;
El botón &quot;buttonReferencias&quot; lo utilizaremos para determinar la posición de los ojos y la boca en la imagen que tiene nuestro PictureBoxOriginal y el resultado lo mostraremos en el PictureBoxReferencias, para hacer eso necesitamos controlar el eventro clic de nuestro botón y determinar si la libreria es capaz de localizar los ojos y la boca, en caso afirmativo podemos mostrar la imagen resultante en nuestro PictureBoxReferencias:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
private void button1_Click(object sender, EventArgs e)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
imagenRostro = new Com.Griaule.IcaoFace.FaceImage(pictureBoxOriginal.Image);&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
imagenRostro.MouthDetectionEnabled = true;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
if (imagenRostro.DetectionProbability == 0)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
MessageBox.Show(&quot;No se pueden encontrar puntos de referencia&quot;);&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
else&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
pictureBoxReferencias.Image = imagenRostro.ImageWithFeatures(2, Color.Azure);&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqwxKwDsi2yr7E09qA7uijwnBXVZ7aSP4q85Qipkt_yIeECg2Dey0JvInQBadAA3PG_1K17Y8k3MfEHPYp_4MUzpPBFEQQx1nszFJmn78aVafF9atG149jMSPXzVxfSivvM05cLwpCPlg/s1600-h/referencias_icao-detectar%20rostros.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqwxKwDsi2yr7E09qA7uijwnBXVZ7aSP4q85Qipkt_yIeECg2Dey0JvInQBadAA3PG_1K17Y8k3MfEHPYp_4MUzpPBFEQQx1nszFJmn78aVafF9atG149jMSPXzVxfSivvM05cLwpCPlg/s200/referencias_icao-detectar%20rostros.JPG&quot; width=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Y como último paso procedemos a recortar la imagen alrededor del rostro y mostrando el resultado en nuestro PictureBoxImgRecortada, controlamos el evento clic de nuestro buttonRecortar:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt; private void buttonRecortar_Click(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
imagenIcao = imagenRostro.FullFrontalImage(70, 1, Com.Griaule.IcaoFace.IcaoImage.IcaoFullFrontalMode.FullFrontal);&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
pictureBoxImgRecortada.Image = imagenIcao.Image;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKnfjqErA7HDcK99uiGLrQgSFMMuFmVcp19UYFYsVrLGze7E64ZSJBuSFL2hWLfmWVQrWCknvs0u62bJpbSkugSCDICmsDb2N41X9JdYL7mUYR4Ps1Jpl7loxPsJtqZVw8eqZoKk-38nk/s1600-h/recorte_icao-detectar%20rostros.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKnfjqErA7HDcK99uiGLrQgSFMMuFmVcp19UYFYsVrLGze7E64ZSJBuSFL2hWLfmWVQrWCknvs0u62bJpbSkugSCDICmsDb2N41X9JdYL7mUYR4Ps1Jpl7loxPsJtqZVw8eqZoKk-38nk/s200/recorte_icao-detectar%20rostros.JPG&quot; width=&quot;189&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Nota al margen: La libreria al recortar la imagen alinea los ojos, por lo que si el rostro esta inclinado obtendremos una imagen con unos bordes de color blanco, tal como en el ejemplo mostrado. Además esta librería no efectiva al 100% por lo que les recomendaria que tomaran imágenes con un color de fondo sólido (como una pared).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3r1sr30leK_Cr-nCtFWwjbFheJ_REkzdtrwITj7-KYlBzmQFcZkq07lHGJZIPSHvAakOsiIVgGmR8Bf1r3sTRwnbizDNdKoBBp2bWrNyjo3bsFpVrjjL6yLYGy2S-a6_iK0rWE63QYH4/s1600-h/final_icao-detectar%20rostros.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3r1sr30leK_Cr-nCtFWwjbFheJ_REkzdtrwITj7-KYlBzmQFcZkq07lHGJZIPSHvAakOsiIVgGmR8Bf1r3sTRwnbizDNdKoBBp2bWrNyjo3bsFpVrjjL6yLYGy2S-a6_iK0rWE63QYH4/s200/final_icao-detectar%20rostros.JPG&quot; width=&quot;190&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Les dejo el código casi completo:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
Atalasoft.Twain.Acquisition adquirirImagen; //webcam&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
Com.Griaule.IcaoFace.IcaoImage imagenIcao;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
Com.Griaule.IcaoFace.FaceImage imagenRostro;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
public Form1()&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
InitializeComponent();&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
adquirirImagen = new Atalasoft.Twain.Acquisition(); //webcam&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
private void Form1_Load(object sender, EventArgs e)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
try&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
/*      webcam      */&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
adquirirImagen.ImageAcquired += new Atalasoft.Twain.ImageAcquiredEventHandler(adquirirImagen_ImageAcquired); &lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
if (adquirirImagen.SystemHasTwain)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
foreach (Atalasoft.Twain.Device dispositivo in adquirirImagen.Devices)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
listViewDispositivo.Items.Add(new ListViewItem(dispositivo.Identity.ProductName));&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
catch (System.Exception exc)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
...&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
/*      se adquiere una imagen de la webcam     */&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
void adquirirImagen_ImageAcquired(object sender, Atalasoft.Twain.AcquireEventArgs e)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
pictureBoxOriginal.Image = e.Image;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
private void buttonObtenerImagen_Click(object sender, EventArgs e)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
try&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
foreach (Atalasoft.Twain.Device dispositivo in adquirirImagen.Devices)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
if (dispositivo.Identity.ProductName == listViewDispositivo.SelectedItems[0].Text)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
dispositivo.Acquire();&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
catch (System.Exception exc)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
...&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
private void button1_Click(object sender, EventArgs e)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
imagenRostro = new Com.Griaule.IcaoFace.FaceImage(pictureBoxOriginal.Image);&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
imagenRostro.MouthDetectionEnabled = true;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
if (imagenRostro.DetectionProbability == 0)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
MessageBox.Show(&quot;No se pueden encontrar puntos de referencia&quot;);&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
else&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
pictureBoxReferencias.Image = imagenRostro.ImageWithFeatures(2, Color.Azure);&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
private void buttonRecortar_Click(object sender, EventArgs e)&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
imagenIcao = imagenRostro.FullFrontalImage(70, 1, Com.Griaule.IcaoFace.IcaoImage.IcaoFullFrontalMode.FullFrontal);&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
pictureBoxImgRecortada.Image = imagenIcao.Image;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://topicos-seguridad.blogspot.com/2009/08/utilizar-lector-de-huellas-en-nuestras.html&quot;&gt;Tal vez les interese cómo implementar un lector de huellas en sus aplicaciones&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span id=&quot;goog_1264547388976&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1264547388977&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://draft.blogger.com/&quot;&gt;&lt;/a&gt;&lt;/div&gt;
</description><link>http://topicos-seguridad.blogspot.com/2010/03/identificacion-facial-con-net-griaule.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiphbWZBysijQm-xtJr50TuiNS7XtudWDYL00Uu78TKR_XAV-kz2QjPXtsUuhotJJRRsLB0wn4-lIm0Z_FczEU7AShzooSGf0o5gnI9wGE8Ed43pzOp2VLFSwtEyVvKFEN35pp0iY-CWVI/s72-c/crear%20proyecto.jpg" height="72" width="72"/><thr:total>10</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-2951644167820361883</guid><pubDate>Sat, 16 Jan 2010 04:44:00 +0000</pubDate><atom:updated>2013-04-17T11:08:06.938-07:00</atom:updated><title>El primer evento de la comunidad dotnet guerrero</title><description>En dias pasados (17 de diciembre) se llevo a cabo el evento de lanzamiento de la comunidad dotnet guerrero y aprovechamos e hicimos tambien el lanzamiento de &quot;Windows 7 en tu ciudad&quot;, en dicho evento se dieron conferencias relacionadas a Windows 7 y al desarrollo:&lt;br /&gt;
-Presentacion de Windows 7&lt;br /&gt;
-Windows 7 en las empresas&lt;br /&gt;
-Desarrollando para Windows 7&lt;br /&gt;
-Trucos para Windows 7&lt;br /&gt;
-ASP.NET&lt;br /&gt;
-ADO.NET&lt;br /&gt;
&lt;br /&gt;
al finalizar las conferencias se rifaron libros de &quot;Ms Press&quot; y algunos DVDs, les dejo fotos del evento.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF5iv6zG-aDHdIY1gGfDmuM2SWj31bL2LKd7tWNnJLsee-SITv646JRW6fzKlXj9y76DQ3fzI0onaygpnue6nUatKnDWaJbXWNKdfb78N1Or3CFydxKKajh9iCo__96CjeukDHxMhBWy0/s1600-h/DSC02438.jpg&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5427197506589348098&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF5iv6zG-aDHdIY1gGfDmuM2SWj31bL2LKd7tWNnJLsee-SITv646JRW6fzKlXj9y76DQ3fzI0onaygpnue6nUatKnDWaJbXWNKdfb78N1Or3CFydxKKajh9iCo__96CjeukDHxMhBWy0/s320/DSC02438.jpg&quot; style=&quot;cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirdV319bkc5dq7Y68f3EUQ42hCeRJwQqtzY70tc3Ch5FZ3Ks-55hnGqSFnm0hay4RMsqniPNz1UHr3wieJ8n_fnO8uND7MPLwYGoBGWJv7fLLyiv9Ff8jQtj5xyPNU9tg57r7B0ANEmYs/s1600-h/DSC02439.jpg&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5427197512321246898&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirdV319bkc5dq7Y68f3EUQ42hCeRJwQqtzY70tc3Ch5FZ3Ks-55hnGqSFnm0hay4RMsqniPNz1UHr3wieJ8n_fnO8uND7MPLwYGoBGWJv7fLLyiv9Ff8jQtj5xyPNU9tg57r7B0ANEmYs/s320/DSC02439.jpg&quot; style=&quot;cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZbGguGa7yuhVqysM1hPNvrbGw43BAhcmvkOaElEhRATDE6WyNeesFM-tTY3LPkpzK6I9my_Cwv6KmfQh03Xkg3AiIJcH_-LoktPV8CUXjT85tjmgrStWLRuDMzKy7iBdss04XzJL6itc/s1600-h/DSC02427.jpg&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5427197511400213410&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZbGguGa7yuhVqysM1hPNvrbGw43BAhcmvkOaElEhRATDE6WyNeesFM-tTY3LPkpzK6I9my_Cwv6KmfQh03Xkg3AiIJcH_-LoktPV8CUXjT85tjmgrStWLRuDMzKy7iBdss04XzJL6itc/s320/DSC02427.jpg&quot; style=&quot;cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;</description><link>http://topicos-seguridad.blogspot.com/2010/01/el-primer-evento-de-la-comunidad-dotnet.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF5iv6zG-aDHdIY1gGfDmuM2SWj31bL2LKd7tWNnJLsee-SITv646JRW6fzKlXj9y76DQ3fzI0onaygpnue6nUatKnDWaJbXWNKdfb78N1Or3CFydxKKajh9iCo__96CjeukDHxMhBWy0/s72-c/DSC02438.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-535991592128833798</guid><pubDate>Mon, 07 Dec 2009 18:25:00 +0000</pubDate><atom:updated>2013-04-17T11:08:15.811-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">sistema de archivos</category><title>Almacenamiento Aislado (isolated storage) </title><description>El &lt;b style=&quot;color: #e06666;&quot;&gt;almacenamiento aislado&lt;/b&gt; (&lt;b&gt;isolated storage&lt;/b&gt; en ingles) es un sistema de archivos separado del sistema de archivos estandar en el cual podemos leer o escribir archivos en nuestras aplicaciones .net. Ademas, este tipo de almacenamiento es privado y aislado por usuario, dominio y ensamblado, lo que nos ofrece un nivel extra de seguridad que no es ofrecido por el Sistema Operativo.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
El acceso a un archivo del almacenamiento aislado esta restringido al usuario que lo creo, ademas del ensamblado.&lt;br /&gt;
&lt;br /&gt;
Las 3 principales clases que provee el framework .net para trabajar con almacenamiento aislado son:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;li&gt;IsolatedStorageFile&lt;/li&gt;
&lt;li&gt;IsolatedStorageFileStream&lt;/li&gt;
&lt;li&gt;IsolatedStorageStream&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;IsolatedStorageFile:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Provee la administración del almacenamiento aislado, cada sistema de almacenamiento es implementado como un sencillo archivo en el sistema de archivos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;IsolatedStorageFileStream:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Nos da la funcionalidad para leer y escribir en el almacenamiento aislado&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;IsolatedStorageStream:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Una clase para el manejo de excepciones relacionadas con el almacenamiento aislado.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Trabajando con almacenamiento aislado&lt;/h3&gt;
&lt;br /&gt;
trabajar con almacenamiento aislado es muy similar que hacerlo de la forma convencional. Pero debemos:&lt;br /&gt;
-Usar el namespace System.IO.IsolatedStorage&lt;br /&gt;
-declarar un objeto del tipo IsolatedStorageFile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
static void Main(string[] args)&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
{&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
/**************ESCRITURA EN EL ARCHIVO**********************/&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
System.IO.IsolatedStorage.IsolatedStorageFile aislado; //declaramos el objeto&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
aislado = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly(); //obtenemos un almacenamiento aislado por ensamblado&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
System.IO.IsolatedStorage.IsolatedStorageFileStream stream; //declaramos el stream &lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
stream = new System.IO.IsolatedStorage.IsolatedStorageFileStream(&quot;prueba.txt&quot;, System.IO.FileMode.Create, aislado);&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
System.IO.StreamWriter escribirArchivo = new System.IO.StreamWriter(stream);&amp;nbsp;&amp;nbsp;&amp;nbsp; //creamos el objeto que servira para escribir el archivo&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
escribirArchivo.Write(&quot;Este es un texto de prueba: Hello world&quot;);&amp;nbsp;&amp;nbsp; //escribimos en el archivo&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
escribirArchivo.Close();&amp;nbsp;&amp;nbsp;&amp;nbsp; //cerramos el archivo&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
/**************LECTURA DEL ARCHIVO**********************/&lt;br /&gt;
aislado = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly();&lt;br /&gt;
stream = new System.IO.IsolatedStorage.IsolatedStorageFileStream(&quot;prueba.txt&quot;, System.IO.FileMode.Open, aislado);&lt;br /&gt;
&lt;br /&gt;
System.IO.StreamReader leerArchivo = new System.IO.StreamReader(stream);&lt;br /&gt;
&lt;br /&gt;
Console.Write(leerArchivo.ReadToEnd());&lt;br /&gt;
leerArchivo.Close();&lt;br /&gt;
Console.ReadKey(); &lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
}&lt;/div&gt;
&lt;br /&gt;
Nota: en el código no importe el namespace System.IO ni el namespace System.IO.IsolatedStorage para que pudieran observar el namespace al que pertenece cada clase utilizada.</description><link>http://topicos-seguridad.blogspot.com/2009/12/almacenamiento-separado-isolated.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-5504370876183106423</guid><pubDate>Mon, 16 Nov 2009 21:03:00 +0000</pubDate><atom:updated>2013-04-17T11:08:23.827-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><title>Curso online de programacion: C# desde cero</title><description>Asi es, a todos los que esten interesados en tomar algun curso online sobre C#, esta es la oportunidad, los compañeros de la comunidad &lt;a href=&quot;http://dotnetguerrero.net/&quot;&gt;dotnetguerrero&lt;/a&gt; ofreceran a partir del dia 17 de noviembre el curso online que se dara en 14 sesiones (2 sesiones a la semana).&lt;br /&gt;
&lt;br /&gt;
Si quieren inscribirse, visiten la pagina de la comunidad: &lt;a href=&quot;http://dotnetguerrero.net/&quot;&gt;http://dotnetguerrero.net&lt;/a&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/11/curso-online-de-programacion-c-desde.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-5203096529582164905</guid><pubDate>Mon, 31 Aug 2009 19:37:00 +0000</pubDate><atom:updated>2013-04-17T11:08:41.554-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">azure</category><category domain="http://www.blogger.com/atom/ns#">how do i</category><category domain="http://www.blogger.com/atom/ns#">videos</category><title>how do i? - Videos para windows azure. Subete a la nube</title><description>AL igual que un post anterior les ofreciamos la dirección de la sección How do I de C#, en esta entrada les mostramos los videos de MSDN de windows Azure: &quot;How Do I? Videos for Azure Services Platform&quot;.&lt;br /&gt;
&lt;br /&gt;
En los titulos de los videos encontramos:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/es-es/azure/dd327648.aspx&quot; id=&quot;ctl00_mainContentContainer_ctl03&quot; onclick=&quot;javascript:Track(&#39;ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl03&#39;,this);&quot;&gt;How Do I: Get Started Developing with Windows Azure?&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/es-es/azure/dd327650.aspx&quot; id=&quot;ctl00_mainContentContainer_ctl05&quot; onclick=&quot;javascript:Track(&#39;ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl05&#39;,this);&quot;&gt;How Do I: Store Blobs in Windows Azure Storage?&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/es-es/azure/dd483299.aspx&quot; id=&quot;ctl00_mainContentContainer_ctl11&quot; onclick=&quot;javascript:Track(&#39;ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl11&#39;,this);&quot;&gt;How Do I: Store Data in Windows Azure Tables?&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/es-es/azure/dd441704.aspx&quot; id=&quot;ctl00_mainContentContainer_ctl19&quot; onclick=&quot;javascript:Track(&#39;ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl19&#39;,this);&quot;&gt;How Do I: Get Started with .NET Services?&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Entre otros.&lt;br /&gt;
&lt;br /&gt;
Pero si lo que quieren es un ejemplo de cómo subir sus archivos a la nube con la plataforma gratuita de Microsoft, &lt;a href=&quot;http://topicos-seguridad.blogspot.com/2009/07/aplicaciones-en-la-nube-con-azure.html&quot;&gt;pueden consultarlo aqui&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Subete a la nube.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://t0.gstatic.com/images?q=tbn:r9mEi5S45mNYiM:http://muycomputerpro.com/files/264-6506-FOTO/windows-azure-logo.jpg&quot; /&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/08/how-do-i-videos-para-windows-azure.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-6137024677698143124</guid><pubDate>Sun, 30 Aug 2009 16:00:00 +0000</pubDate><atom:updated>2013-04-17T11:08:50.306-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">aprendizaje</category><category domain="http://www.blogger.com/atom/ns#">dotnetguerrero</category><title>Nace una Comunidad: dotnet Guerrero</title><description>Asi es, en estos dias tengo el placer de informarles el nacimiento de una nueva comunidad: La comunidad&lt;a href=&quot;http://dotnetguerrero.comunidadesdeusuarios.net/&quot;&gt; &lt;span style=&quot;color: #ff6600;&quot;&gt;dotnet Guerrero&lt;/span&gt;&lt;/a&gt;, en la cual podrán participar todos aquellos interesados en compartir el conocimiento.&lt;br /&gt;
&lt;br /&gt;
Como su nombre lo dice, la comunidad es del estado de Guerrero y tiene su cuna en la ciudad capital: Chilpancingo de los Bravo; sin embargo, todos aquellos que deseen participar (sin importarn donde se encuentren) lo podrán hacer proponiendo temas, escribiendo artículos, tomando cursos, asistiendo a webcasts o en cualquier otra actividad de interés colectivo.&lt;br /&gt;
&lt;br /&gt;
Esperamos tener el apoyo de todos ustedes.&lt;br /&gt;
&lt;br /&gt;
-&lt;a href=&quot;http://dotnetguerrero.comunidadesdeusuarios.net/&quot; style=&quot;color: #ff6600;&quot;&gt;dotnet Guerrero&lt;/a&gt;.</description><link>http://topicos-seguridad.blogspot.com/2009/08/nace-una-comunidad-dotnet-guerrero.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-8876523242054777119</guid><pubDate>Fri, 28 Aug 2009 05:04:00 +0000</pubDate><atom:updated>2010-03-09T16:20:38.612-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">fingerprint</category><category domain="http://www.blogger.com/atom/ns#">lector de huellas</category><category domain="http://www.blogger.com/atom/ns#">sistemas biometricos</category><title>Utilizar lector de huellas en nuestras aplicaciones .net - Segunda parte</title><description>En esta entrada le mostraré la forma en la que pueden implementar el lector de huellas digitales (o dactilares) en nuestras aplicaciones .net.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGNCBo6a4PvaNrmRD325N6O9jtUUpdmmammRdrS7sB-xmmGEIQjUkF1jBLikF1SII7QLIT8BUMsIxSZeo80ZOqSRH4oTbs96N5VG0rwAH6pg70a3bBsj5ts1uMK2tER63u0tIV0_jbFMQ/s1600-h/fsdk.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5374880823900769010&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGNCBo6a4PvaNrmRD325N6O9jtUUpdmmammRdrS7sB-xmmGEIQjUkF1jBLikF1SII7QLIT8BUMsIxSZeo80ZOqSRH4oTbs96N5VG0rwAH6pg70a3bBsj5ts1uMK2tER63u0tIV0_jbFMQ/s320/fsdk.png&quot; style=&quot;cursor: pointer; display: block; height: 101px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
El ejemplo esta hecho en C# con VS 2010, MySQL y la librería de Griaulle (fingerpint SDK 2009); si no recuerdan de donde obtener la librería, pueden &lt;a href=&quot;http://topicos-seguridad.blogspot.com/2009/07/implementacion-de-lector-de-huellas-en.html&quot;&gt;consultarlo aquí&lt;/a&gt;. Se utilizó, también, el connector/net para enlazar a MySQL con C#.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Lo primero que debemos hacer es instalar el Griaulle Fingerprint SDK 2009, este ejemplo está hecho con la versión 2009 del SDK. Es importante recordar la ruta de la instalación.&lt;br /&gt;
&lt;br /&gt;
Como segundo paso debemos configurar nuestra base de datos, ya que la información se almacenará en dicha base de datos, en el ejemplo realizado tenemos una base de datos llamada “finger” y una tabla llamada “data”, la tabla tiene 5 campos:&lt;br /&gt;
&lt;span style=&quot;color: #ffcccc;&quot;&gt;Id (int)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ffcccc;&quot;&gt;texto_asociado (text)&lt;/span&gt;: en este campo almacenaremos un texto de referencia para identificar el registro&lt;br /&gt;
&lt;span style=&quot;color: #ffcccc;&quot;&gt;template (mediumblob)&lt;/span&gt;: aquí almacenaremos el template extraído de la huella.&lt;br /&gt;
&lt;span style=&quot;color: #ffcccc;&quot;&gt;Imagen (mediumblob)&lt;/span&gt;: este campo no se utiliza en este ejemplo&lt;br /&gt;
&lt;span style=&quot;color: #ffcccc;&quot;&gt;Calidad_template (int)&lt;/span&gt;: sirve para almacenar la calidad del template extraido y almacenado en el campo “template”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENFBcG9FXrwtw94Mt7Y04nIlIV2otui1GLNVnP2_2xF48q4q493rqCDFwQVjQYl88V22Q5Jtrzymrh7EORoWbGA8I7qHnFPrcCZh-777XC2DLmUHOrENETWI3gwsVVHk0-AdcBfE5JVM/s1600-h/add.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5374879474910534290&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENFBcG9FXrwtw94Mt7Y04nIlIV2otui1GLNVnP2_2xF48q4q493rqCDFwQVjQYl88V22Q5Jtrzymrh7EORoWbGA8I7qHnFPrcCZh-777XC2DLmUHOrENETWI3gwsVVHk0-AdcBfE5JVM/s320/add.png&quot; style=&quot;cursor: pointer; float: left; height: 320px; margin: 0pt 10px 10px 0pt; width: 272px;&quot; /&gt;&lt;/a&gt;Una vez creado el proyecto en VS, el primer paso es agregar la referencia de la librería de Griaulle a nuestro proyecto, eso lo hacemos con un clic con el botón derecho en el &lt;span style=&quot;font-weight: bold;&quot;&gt;explorador de soluciones&lt;/span&gt; (Solution Explorer), en la sección de&lt;span style=&quot;font-weight: bold;&quot;&gt; referencias&lt;/span&gt; (references), del menú emergente seleccionamos: &lt;span style=&quot;font-weight: bold;&quot;&gt;Agregar referencia&lt;/span&gt; (Add reference), posteriormente seleccionamos la pestaña &lt;span style=&quot;font-weight: bold;&quot;&gt;Examinar&lt;/span&gt; (Browse) y tenemos que elegir el directorio de instalación del SDK (en este caso: C:\Program Files\Griaule\Fingerprint SDK 2009\bin\GriauleFingerprintLibrary.dll); realizamos los mismo pasos para el connector/net que nos servirá para la Base de Datos (la dirección en este caso es: C:\Program Files\MySQL\MySQL Connector Net 6.0.4\Assemblies\MySql.Data.dll). Ya que hemos agregado las referencias, podemos iniciar con nuestro proyecto.&lt;br /&gt;
&lt;br /&gt;
En el ejemplo mostrado, hemos diseñado un formulario con 2 opciones:&lt;br /&gt;
Registrar: Inserta la información de la huella recién adquirida en la base de datos, junto con el texto asociado.&lt;br /&gt;
&lt;br /&gt;
Identificar: Identifica la huella, comparando la huella recién extraida contra cada una de las huellas almacenadas en la base de datos.&lt;br /&gt;
&lt;br /&gt;
Hace falta una opción importante: Verificar, pero es muy fácil de implementar.&lt;br /&gt;
Si no recuerdan lo que significa Identificar, Verificar o algún otro concepto, este es el momento perfecto para consultarlo en &lt;a href=&quot;http://topicos-seguridad.blogspot.com/2009/07/implementacion-de-lector-de-huellas-en.html&quot;&gt;este articulo&lt;/a&gt;.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1xjqR3iH2rYFENwSg2IUfpi6szeWrdAeAxwOysA7QPtIWjC4z4L5ic53LOTHZc96sJa6PySPspqcbPUU3MqkAWY4bSOCIEkYkIGe3NsjQU94kDbBZd5Lo3h6Nfvkoursh-Sgts4ob3hY/s1600-h/interfaz.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5374880825381734626&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1xjqR3iH2rYFENwSg2IUfpi6szeWrdAeAxwOysA7QPtIWjC4z4L5ic53LOTHZc96sJa6PySPspqcbPUU3MqkAWY4bSOCIEkYkIGe3NsjQU94kDbBZd5Lo3h6Nfvkoursh-Sgts4ob3hY/s320/interfaz.png&quot; style=&quot;cursor: pointer; display: block; height: 295px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Al momento de utilizar el fingerprint SDK, lo que debemos hacer es declarar e inicializar un objeto del tipo FingerprintCore:&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;GriauleFingerprintLibrary.FingerprintCore core = New GriauleFingerprintLibrary.FingerprintCore();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Después, declaramos los manejadores de los eventos onStatus (se dispara cada vez que un lector de huellas es conectado o desconectado) y onImage (se dispara cada vez que una imagen es adquirida por algún lector):&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;core.onStatus += new GriauleFingerprintLibrary.StatusEventHandler(core_onStatus); &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;core.onImage += new GriauleFingerprintLibrary.ImageEventHandler(core_onImage);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Uno de los requisitos para poder utilizar la libreria es “inicializarla”, es decir, indicar que vamos a iniciar el uso de la librería:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;core.Initialize();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Hecho esto, podemos indicar al lector que vamos a hacer uso de la captura de huellas:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;core.CaptureInitialize();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
--------------------------------&lt;br /&gt;
Texto agregado el 18/12/2009: Personalmente he optado por declarar los eventos y realizar las inicializaciones correspondientes en el evento load del formulario.&lt;br /&gt;
--------------------------------&lt;br /&gt;
&lt;br /&gt;
Hasta este punto hemos iniciado la captura de huellas con nuestro lector y hemos definido la función que se ejecutará cada vez que una huella se adquiere del lector (con el evento onImage) y la función que se ejecuta cuando un lector es conectado o desconectado en nuestro equipo (con el evento onStatus).&lt;br /&gt;
&lt;br /&gt;
En la función que se ejecuta cuando el lector es conectado al equipo, debemos indicarle a la librería que debe iniciar la captura de huellas con ese lector, esto lo hacemos de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;void core_onStatus(object source, &lt;span style=&quot;font-size: 85%;&quot;&gt;GriauleFingerprintLibrary.Events.StatusEventArgs se)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff6666; font-family: courier new; font-size: 85%;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff6666; font-family: courier new; font-size: 85%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;if (se.StatusEventType == GriauleFingerprintLibrary.Events.StatusEventType.SENSOR_PLUG)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #e06666; font-size: 85%; font-weight: bold;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #e06666; font-size: 85%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #e06666; font-size: 85%; font-weight: bold;&quot;&gt;core.StartCapture(source);&lt;/span&gt;&lt;span style=&quot;color: #e06666; font-size: 85%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #e06666; font-size: 85%; font-weight: bold;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff6666; font-family: courier new; font-size: 85%;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
/*--------Añadido el 09 de Marzo del 2010------------*/&lt;br /&gt;
&lt;br /&gt;
La función onImage que utilizamos en el ejemplo hace una comprobación de la calidad de la imagen obtenida del lector, si es de mala calidad se debe volver a capturar una huella, si es de calidad media se pregunta al usuario si desea continuar y si es de buena calidad se continúa sin ningún problem: &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void core_onImage(object source, GriauleFingerprintLibrary.Events.ImageEventArgs ie)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buttonOK.Enabled = groupBox1.Enabled = false;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagenHuella = ie.RawImage;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; core.Extract(imagenHuella, ref templateHuella); //&amp;nbsp; extraemos la informacion de la huella y almacenamos esa informacion en templateHuella (se tiene que pasar como referencia a la funcion)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(templateHuella.Quality)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // en caso de que la huella sea de mala calidad, se tiene que volver a extraer la huella&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; labelCalidad.Text = &quot;La huella es de mala calidad, vuelva a intentar&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // si la huella es de calidad media, preguntamos si desean volver a extraerla&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; labelCalidad.Text = &quot;Calidad media&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (MessageBox.Show(&quot;la huella es de una calidad media, desea continuar?&quot;, &quot;&quot;, MessageBoxButtons.YesNo) == DialogResult.Yes)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // si la huella es de buena calidá, se procede con el programa&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; labelCalidad.Text = &quot;Huella con buena calidad&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buttonOK.Enabled = groupBox1.Enabled = true;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (System.Exception exc)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(exc.Message);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
/*-----------------Aquí termina lo añadido el 09 de Marzo del 2010----------------*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La condición if() es para verificar que se ha conectado un lector (recuerden que también se ejecuta el evento onStatus cuando se desconecta un lector)&lt;br /&gt;
&lt;br /&gt;
La instrucción &lt;span style=&quot;font-weight: bold;&quot;&gt;core.StartCapture(source);&lt;/span&gt; inicia la captura con el lector recién conectado mediante el objeto source, que contiene los identificadores del lector conectado.&lt;br /&gt;
&lt;br /&gt;
En este momento, si colocamos una huella en el lector, se disparará también el evento &lt;span style=&quot;font-weight: bold;&quot;&gt;onImage&lt;/span&gt;, para poder manejar la huella, debemos extraer el template y almacenarlo en memoria para poder insertarlo en la base de datos, eso lo hacemos con la función &lt;span style=&quot;font-weight: bold;&quot;&gt;Extract(…)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;GriauleFingerprintLibrary.DataTypes.FingerprintRawImage imagenHuella;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;imagenHuella = ie.RawImage;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;core.Extract(imagenHuella, ref templateHuella);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
en la función &lt;span style=&quot;font-weight: bold;&quot;&gt;Extract(…)&lt;/span&gt;, el parámetro imagenHuella es la imagen original de la huella adquirida y el parámetro templateHuella es el objeto donde se almacenará el template que se extraiga a partir de imagenHuella.&lt;br /&gt;
&lt;br /&gt;
Ya que tenemos el template, estamos listos para insertar el registro en la base de datos, es importante que sea mediante parámetros, en el ejemplo hemos usado nuestra propia librería, por lo que la instrucción que usamos es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;bd.InsertarRegistroParametrizado(&quot;INSERT INTO data (texto_asociado,template,calidad_template,imagen) VALUES(&#39;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;+ txtBxRegistrar.Text + &quot;&#39;,@template,&quot; + templateHuella.Quality.ToString() + &quot;,&#39;&#39;)&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;&quot;@template&quot;, (object)templateHuella.Buffer);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como requirimiento minimo se debe insertar el template de la huella y la calidad que tiene dicho template (se obtiene con la propiedad &lt;span style=&quot;font-weight: bold;&quot;&gt;templateHuella.Quality&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
En el código disponible se puede observar cómo insertar registros con parámetros.&lt;br /&gt;
&lt;br /&gt;
Hasta este momento tenemos tenemos al menos un registro en la base de datos, ahora podemos iniciar el proceso de identificación.&lt;br /&gt;
&lt;br /&gt;
Para llevar a cabo el proceso de identificación es necesario recuperar cada uno de los registros existentes en nuestra base de datos para poder compararlos uno por uno. Para poder ir almacenando temporalmente los registros de la base de datos, debemos crear un objeto donde almacenemos el template&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;string consulta;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;byte[] dataTemp;&lt;/span&gt; //nos permitirá almacenar temporalmente el template de la B.D.&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;GriauleFingerprintLibrary.DataTypes.FingerprintTemplate templateTemp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;int precision,calidad; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;consulta = &quot;select texto_asociado, template, calidad_template from data where 1=1&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;MySql.Data.MySqlClient.MySqlDataReader rdr = bd.EjecutarConsulta(consulta);&lt;br /&gt;
&lt;/span&gt;//debemos preparar la libreria para la identificacion de huellas&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;core.IdentifyPrepare(templateHuella);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;while (rdr.Read())&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;dataTemp = (byte[])rdr[&quot;template&quot;];&lt;/span&gt; //extraemos el template desde la B.D.&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;calidad = (int)rdr[&quot;calidad_template&quot;];&lt;/span&gt; //extraemos la calidad de ese template&lt;br /&gt;
&lt;br /&gt;
/* Creamos un nuevo objeto del tipo temporal &quot;FingerprintTemplate&quot; y asignamos las propiedades del template que acabamos de extraer de la B.D.*/&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;templateTemp = new GriauleFingerprintLibrary.DataTypes.FingerprintTemplate();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;templateTemp.Buffer = dataTemp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;templateTemp.Size = dataTemp.Length;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;templateTemp.Quality = calidad;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;if ((core.Identify(templateTemp, out precision))==1) &lt;/span&gt;//si el template cumple con los requisitos de presición&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;MessageBox.Show(rdr[&quot;texto_asociado&quot;].ToString());&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff6666; font-family: courier new;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
En el código anterior, con el ciclo &lt;span style=&quot;font-family: courier new; font-weight: bold;&quot;&gt;while(rdr.Read())&lt;/span&gt;&lt;span style=&quot;font-family: courier new; font-weight: bold;&quot;&gt;{…}&lt;/span&gt; se va obteniendo cada uno de los registros de la base de datos uno por uno, dentro del ciclo asignamos la información del template en un arreglo de bytes, con la condición if(…) determinamos si el template de la base de datos coincide con el template recién extraido.&lt;br /&gt;
&lt;br /&gt;
Cualquier duda, comentario o sugerencia (en especial sugerencias) sobre el código, no duden en dejar su comentario. &lt;br /&gt;
Tal ves les interese &lt;a href=&quot;http://topicos-seguridad.blogspot.com/2010/03/identificacion-facial-con-net-griaule.html&quot;&gt;cómo detectar rostros en sus aplicaciones&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://www.clubcavi.com/&quot;&gt;&lt;/a&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/08/utilizar-lector-de-huellas-en-nuestras.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGNCBo6a4PvaNrmRD325N6O9jtUUpdmmammRdrS7sB-xmmGEIQjUkF1jBLikF1SII7QLIT8BUMsIxSZeo80ZOqSRH4oTbs96N5VG0rwAH6pg70a3bBsj5ts1uMK2tER63u0tIV0_jbFMQ/s72-c/fsdk.png" height="72" width="72"/><thr:total>151</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-4693288995346849092</guid><pubDate>Fri, 14 Aug 2009 06:53:00 +0000</pubDate><atom:updated>2013-04-17T11:09:30.884-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogit</category><category domain="http://www.blogger.com/atom/ns#">concurso</category><title>Vota por nosotros en el concurso Blogit.ms</title><description>Los chicos de Microsoft han organizado la segunda edición del &lt;a href=&quot;http://blogit.ms/&quot;&gt;concurso blogit.ms&lt;/a&gt; y en un giro sorprendente han ampliado el concurso a mas paises de latinoamerica, por lo que les invito a que participen en este concurso de top bloggers y de paso, pueden &lt;a href=&quot;http://blogit.ms/TopBloggers.aspx&quot;&gt;votar por mi blog en la pagina del concurso&lt;/a&gt;, solo tienes que darle clic en el botón votar correspondiente a este blog (&lt;span style=&quot;color: #ffcc99; font-weight: bold;&quot;&gt;http://topicos-seguridad.blogspot.com&lt;/span&gt; que al dia de hoy esta en el puesto 10 y 11 gracias a todos su votos, claro), escribir tu correo electrónico y posteriormente checar tu bandeja de entrada.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
En esta entrada también quiero hacerles la invitación a que visiten la página de la recientemente creada &lt;a href=&quot;http://dotnetguerrero.comunidadesdeusuarios.net/&quot;&gt;comunidad dotnet Guerrero&lt;/a&gt;, espero que encuentren los recursos de TI para poder desempeñarse en el ámbito escolar y laboral.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe height=&quot;800&quot; src=&quot;http://blogit.ms/TopBloggers.aspx&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A participar (y votar tambien) se ha dicho!!!</description><link>http://topicos-seguridad.blogspot.com/2009/08/vota-por-nosotros-en-el-concurso.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-3981343077962059708</guid><pubDate>Fri, 24 Jul 2009 04:12:00 +0000</pubDate><atom:updated>2013-04-17T11:09:39.644-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">aprendizaje</category><title>Series de videos (how do i?) - C#</title><description>Si a ti (al igual que a mi) se te facilita mucho más el aprendizaje guiado, es decir, con videos, entonces esta serie de video te puede ayudar mucho.&lt;br /&gt;
&lt;br /&gt;
En esta sección encontraremos videos para C#, videos básicos y temas avanzados.&lt;br /&gt;
&lt;br /&gt;
Aunque uno de los problemas es que están en inglés y necesitas silverlight.&lt;br /&gt;
&lt;br /&gt;
Encuentra los videos aquí: &lt;a href=&quot;http://msdn.microsoft.com/es-es/vcsharp/bb798022%28en-us%29.aspx&quot;&gt;http://msdn.microsoft.com/es-es/vcsharp/bb798022(en-us).aspx&lt;/a&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/07/series-de-videos-how-do-i-c.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-5185349660213197997</guid><pubDate>Mon, 20 Jul 2009 01:36:00 +0000</pubDate><atom:updated>2014-02-20T08:41:26.721-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">lector de huellas</category><category domain="http://www.blogger.com/atom/ns#">sistemas biometricos</category><title>Implementacion de lector de huellas en nuestas aplicaciones: Introduccion</title><description>(segunda parte: &lt;a href=&quot;http://topicos-seguridad.blogspot.com/2009/08/utilizar-lector-de-huellas-en-nuestras.html&quot;&gt;http://topicos-seguridad.blogspot.com/2009/08/utilizar-lector-de-huellas-en-nuestras.html&lt;/a&gt;) &lt;br /&gt;
&lt;br /&gt;
En esta entrada les mostraré una forma sencilla de implementar el uso de dispositivos biométricos para asegurar el acceso a nuestras aplicaciones, para lograr esto necesitaremos un lector de huellas (&lt;a href=&quot;http://computacion.mercadolibre.com.mx/accesorios/lector-de-huellas-microsoft&quot;&gt;puede ser Microsoft&lt;/a&gt;, ya que es económico), también necesitaremos la libreria fingerprint SDK 2009 para manejar el uso del lector (&lt;a href=&quot;http://www.griaulebiometrics.com/page/en-us/downloads&quot;&gt;que pueden descargar aquí&lt;/a&gt;) y necesitamos una Base de Datos (en nuestro caso MySQL).&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.griaulebiometrics.com/images_nw/ico_download_fingerprint.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://www.griaulebiometrics.com/images_nw/ico_download_fingerprint.png&quot; style=&quot;cursor: pointer; display: block; height: 88px; margin: 0px auto 10px; text-align: center; width: 88px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Repasando los conceptos&lt;br /&gt;
&lt;br /&gt;
Para poder utilizar sistemas biométricos primeramente necesitamos obtener una muestra que almacenaremos en la base de datos para posteriormente hacer comparaciones; dicha muestra tendrá que ser analizada para posteriormente extraer los elementos importantes (esta muestra la conoceremos como &quot;&lt;span style=&quot;color: #ff6666;&quot;&gt;template&lt;/span&gt;&quot;).&lt;br /&gt;
&lt;br /&gt;
El análisis de comparación de una muestra contra otra muestra almacenada en la Base de Datos puede darse de 2 formas:&lt;br /&gt;
&lt;span style=&quot;color: #ccffff;&quot;&gt;Comparacion&lt;/span&gt;: este tipo de comparaciones es uno a uno (1:1), es decir, se compara una muestra recién extraida contra otra previamente almacenada en la Base de Datos. Por ejemplo, un usuario introduce su nombre y pone su huella, el sistema obtiene el template de esa huella y la compara con la huella almacenada en la Base de Datos correspondiente a ese usuario.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ccffff;&quot;&gt;Identificación:&lt;/span&gt; estas comparaciones son uno a muchos (1:n), se compara un template contra el resto de los templates  almacenados en la Base de Datos. Por ejemplo, en una agencia policiaca extraen un template de algún sospechoso que no quiere identificarse y lo comparan contra todos los templates de la Base de Datos para poder Identificar al sospechoso.&lt;br /&gt;
&lt;br /&gt;
El proceso de comparación es mucho más rápido y efectivo que de identificación, por lo que su uso es recomendado para equipos de poco rendimiento o en los casos en los que se requiera un proceso de comparación efectivo.&lt;br /&gt;
&lt;br /&gt;
Al momento de extraer nuestra muestra biométrica, la extraeremos como un arreglo de bytes y posteriormente extraeremos el template para poder almacenarlo en un campo blob de nuestra Base de Datos, todo esto lo haremos a través de la libreria.&lt;br /&gt;
&lt;a href=&quot;http://www.innoveck.com/images/Microsoft_Fingerprint_Reader.jpg&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://www.innoveck.com/images/Microsoft_Fingerprint_Reader.jpg&quot; style=&quot;cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/a&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/07/implementacion-de-lector-de-huellas-en.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>23</thr:total><georss:featurename>Guadalajara, JAL, Mexico</georss:featurename><georss:point>20.6596492 -103.34962510000003</georss:point><georss:box>20.4219362 -103.67234860000002 20.8973622 -103.02690160000003</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-7280645613381843606</guid><pubDate>Sun, 12 Jul 2009 14:26:00 +0000</pubDate><atom:updated>2009-11-08T15:33:00.938-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IIS</category><category domain="http://www.blogger.com/atom/ns#">windows 7</category><title>Implementar IIS 7 en Windows7 RC</title><description>Es sabido por todos que la versión Release Candidate de Windows 7 esta disponible al público de forma gratuita, pero una característica que podemos aprovechar de Windows 7 RC es&lt;span style=&quot;font-weight: bold;&quot;&gt; Internet Information Services&lt;/span&gt; y activar IIS es muy sencillo.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Para realizar esto únicamente necesitamos tener instalada la versión RC de Windows 7 que puede ser descargada de forma gratuita desde la página de Microsoft.&lt;br /&gt;
&lt;br /&gt;
Como primer paso dentro del &lt;span style=&quot;font-weight: bold;&quot;&gt;panel de control&lt;/span&gt; y la categoria &lt;span style=&quot;font-weight: bold;&quot;&gt;Programas&lt;/span&gt;, seleccionamos &lt;span style=&quot;font-weight: bold;&quot;&gt;Activar o desactivar las caracteristicas de Windows&lt;/span&gt; y aparecerá una ventana que nos permitirá activar las caracteristicas de Windows 7 que no se activan por default. En esa ventana buscamos la casilla&lt;span style=&quot;color: #ff6666; font-weight: bold;&quot;&gt; Internet Information Services&lt;/span&gt; y activamos las casillas que consideremos necesarias (pueden activar todas si así lo desean) y damos clic en el botón aceptar.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCtKXtrLxd4pLKFloRIEcCIm_caX2jDUokCel9kMwNVH9uyiwgDEFGdxUG_NWGsWvbmIX4LErEctCsIxTLGces82hKkMLqfA7dbmAgvGAtPU-KxalqpXBeBfU-nRuI0480nR_iXPnwaYc/s1600-h/1.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357591005780316178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCtKXtrLxd4pLKFloRIEcCIm_caX2jDUokCel9kMwNVH9uyiwgDEFGdxUG_NWGsWvbmIX4LErEctCsIxTLGces82hKkMLqfA7dbmAgvGAtPU-KxalqpXBeBfU-nRuI0480nR_iXPnwaYc/s200/1.png&quot; style=&quot;cursor: pointer; display: block; height: 90px; margin: 0px auto 10px; text-align: center; width: 200px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWaj_1yVTQcXtOF_FkUMvU-M7rDUD1NIciZPrirkj4fbV39gY78gx0LdmHCXQ3uY3Wyi1vPRhgf42KQYuepsEvpabSPDSm8zXq_B8FdfbaiKqQwApwcFUaGxWLpUD1DvRo2ETCupuKxqQ/s1600-h/2.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357591011789021618&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWaj_1yVTQcXtOF_FkUMvU-M7rDUD1NIciZPrirkj4fbV39gY78gx0LdmHCXQ3uY3Wyi1vPRhgf42KQYuepsEvpabSPDSm8zXq_B8FdfbaiKqQwApwcFUaGxWLpUD1DvRo2ETCupuKxqQ/s200/2.png&quot; style=&quot;cursor: pointer; display: block; height: 200px; margin: 0px auto 10px; text-align: center; width: 156px;&quot; /&gt;&lt;/a&gt;En este momento únicamente tenemos que esperar a que se realicen los cambios y es todo.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS1QMeF1hFfoISkrbzC2EnAOtLdaqjw0eMF1RwS9V_hqEC-yHZVWko3WTwa8lREDwKuTJIBImZfLxizwF0HiomHGSHxLhyphenhyphenYPQRnLRvrRir8_YLfOWzMuBJAF5V92twhh3EkcoE0C5OVuc/s1600-h/3.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357591010971553714&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS1QMeF1hFfoISkrbzC2EnAOtLdaqjw0eMF1RwS9V_hqEC-yHZVWko3WTwa8lREDwKuTJIBImZfLxizwF0HiomHGSHxLhyphenhyphenYPQRnLRvrRir8_YLfOWzMuBJAF5V92twhh3EkcoE0C5OVuc/s200/3.png&quot; style=&quot;cursor: pointer; display: block; height: 114px; margin: 0px auto 10px; text-align: center; width: 200px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Podemos probar si IIS  esta funcionando si en nuestro browser escribimos las dirección &lt;span style=&quot;font-weight: bold;&quot;&gt;http://localhost/&lt;/span&gt;. Debemos ver algo parecido a esto:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2AAnAjInunu8iHJJ7NVfgxUYsH1BNgKWO_Qe61fw-e9wJObG-HmP-WmAhcDRIqizv7lsnvqIjskcqpEyQS5bUmYgT8fOIxbBLxhmYkxuBrlHp2E3hJ7MlYaxGC5XdX2OxbqrbN6Y64F0/s1600-h/4.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357591946081474418&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2AAnAjInunu8iHJJ7NVfgxUYsH1BNgKWO_Qe61fw-e9wJObG-HmP-WmAhcDRIqizv7lsnvqIjskcqpEyQS5bUmYgT8fOIxbBLxhmYkxuBrlHp2E3hJ7MlYaxGC5XdX2OxbqrbN6Y64F0/s320/4.png&quot; style=&quot;cursor: pointer; display: block; height: 230px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/07/implementar-iis-7-en-windows-7-rc.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCtKXtrLxd4pLKFloRIEcCIm_caX2jDUokCel9kMwNVH9uyiwgDEFGdxUG_NWGsWvbmIX4LErEctCsIxTLGces82hKkMLqfA7dbmAgvGAtPU-KxalqpXBeBfU-nRuI0480nR_iXPnwaYc/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-9054826600544653030</guid><pubDate>Sun, 12 Jul 2009 14:20:00 +0000</pubDate><atom:updated>2009-11-08T15:34:02.227-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">azure</category><category domain="http://www.blogger.com/atom/ns#">microsoft</category><title>Aplicaciones en la nube con Azure - getting started</title><description>En esta entrada les mostraré los pasos para iniciarse en el cloud computing y aprovecharemos el hosting gratuito que ofrece Azure (Maurucio Angulo fue quien me habló de este servicio).&lt;br /&gt;
&lt;br /&gt;
Primeramente necesitamos suscribirnos en &lt;a href=&quot;http://www.azure.com/&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;www.azure.com&lt;/span&gt;&lt;/a&gt; y crear un nuevo proyecto de servidor, eso lo podemos hacer con nuestra cuenta de Windows Live ID. Como segundo requisito necesitamos &lt;span style=&quot;color: #ff6666; font-weight: bold;&quot;&gt;Visual Studio 2008&lt;/span&gt; o &lt;span style=&quot;color: #ff6666; font-weight: bold;&quot;&gt;Visual Studio 2010&lt;/span&gt;, necesitaremos también el &lt;span style=&quot;color: #ff6666; font-weight: bold;&quot;&gt;framework 3.5 SP&lt;/span&gt;1 o superior y &lt;span style=&quot;color: #ccccff; font-weight: bold;&quot;&gt;Windows Azure tools for Visual Studio&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El ejemplo creado en esta entrada esta hecho en Windows 7 con Visual Studio 2008.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQoiEp72Ari_N7MpCT1CQU6DaL_P58qK-2Jfp_dE6NCsgOI7hoy_xRAQ89yXk_a7Gxx4fuUy2qtxU-EPr07MVuUv7FjEf_S5OcUTYpsntp9yvPQJNkVEFX6xFxIGpypPFNBRH8w3cE2u4/s1600-h/1.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357575248251585362&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQoiEp72Ari_N7MpCT1CQU6DaL_P58qK-2Jfp_dE6NCsgOI7hoy_xRAQ89yXk_a7Gxx4fuUy2qtxU-EPr07MVuUv7FjEf_S5OcUTYpsntp9yvPQJNkVEFX6xFxIGpypPFNBRH8w3cE2u4/s200/1.png&quot; style=&quot;cursor: pointer; float: left; height: 142px; margin: 0pt 10px 10px 0pt; width: 200px;&quot; /&gt;&lt;/a&gt;Ya que tenemos todo listo para trabajar, ejecutamos Visual Studio Y creamos un nuevo proyecto del tipo &lt;span style=&quot;color: #cccccc;&quot;&gt;Cloud Service&lt;/span&gt; y como plantilla elegimos&lt;span style=&quot;color: #cccccc;&quot;&gt; Web Cloud Service&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
En este momento observamos que nuestra solución contiene 2 proyectos, uno de esos proyectos es un proyecto Web, la pruebas las haremos sobre el archivo default.aspx. Podemos modificar el archivo default.aspx a nuestro gusto (como prueba pueden hacer simplemente un &quot;hola nube&quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNXB9FdZrmUNXL7rc5uPBfanGMFUvJ0j9oXRZPVHUzhxNvwg52KT8mJOMpbzhlgYwecSF3G7A1hEu68xGoQtARsFPNnsl99V1cO0KZkRBe9XY6K5UFJGUjx9JnsH2gRqRml-_tuSHItPw/s1600-h/2.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357575251034885730&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNXB9FdZrmUNXL7rc5uPBfanGMFUvJ0j9oXRZPVHUzhxNvwg52KT8mJOMpbzhlgYwecSF3G7A1hEu68xGoQtARsFPNnsl99V1cO0KZkRBe9XY6K5UFJGUjx9JnsH2gRqRml-_tuSHItPw/s200/2.png&quot; style=&quot;cursor: pointer; float: left; height: 106px; margin: 0pt 10px 10px 0pt; width: 200px;&quot; /&gt;&lt;/a&gt;Una de las ventajas que ofrece Visual Studio es la posibilidad de &quot;depurar&quot; nuestra aplicación y tener un &quot;preview&quot; sin necesidad de contar con IIS 7. Esta opción esta disponible si presionamos la tecla &lt;span style=&quot;font-weight: bold;&quot;&gt;F5&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLAqYr0WaXjSM4rg-LdC0MOM1n10jRuP6vepYkWz-3DWZkNq7wME6fCnBhY_4Q3kEswyvSclsO5rA81xiNGxHeMzG0O7irVsAyWsnNQ1IhLt7ooeZqkxs6OKt6ui8lQZPWP__hde4eFJY/s1600-h/4.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357575263132943026&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLAqYr0WaXjSM4rg-LdC0MOM1n10jRuP6vepYkWz-3DWZkNq7wME6fCnBhY_4Q3kEswyvSclsO5rA81xiNGxHeMzG0O7irVsAyWsnNQ1IhLt7ooeZqkxs6OKt6ui8lQZPWP__hde4eFJY/s200/4.png&quot; style=&quot;cursor: pointer; float: left; height: 111px; margin: 0pt 10px 10px 0pt; width: 200px;&quot; /&gt;&lt;/a&gt;Ya que hemos probado nuestra aplicación, el siguiente paso es subir dicha aplicación a la nube, para hacer eso utilizaremos la herramienta de publicación, damos clic el menu &lt;span style=&quot;font-weight: bold;&quot;&gt;Build&lt;/span&gt; y escogemos la opción &lt;span style=&quot;font-weight: bold;&quot;&gt;Publish...&lt;/span&gt;; esta acción generará 2 archivos de publicación: &lt;span style=&quot;font-weight: bold;&quot;&gt;cspkg&lt;/span&gt; (cloud servcice package) y&lt;span style=&quot;font-weight: bold;&quot;&gt; cscfg&lt;/span&gt; (cloud service config), estos dos archivos son los que subiremos a nuestro servidor azure.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Skldvfqo53hTjz5yuICKvyA3hR_kEe9YZV8_f6vEtXjC8tMYNdC16SWiSDLHtV737Or1l6bzpCxtkUyN6HPzF4FsZe1jBYk9-7sdQagGfheEJkxGh4dqvJodSg13Whm1gPYb6-qUh3k/s1600-h/5.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357575266843839778&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Skldvfqo53hTjz5yuICKvyA3hR_kEe9YZV8_f6vEtXjC8tMYNdC16SWiSDLHtV737Or1l6bzpCxtkUyN6HPzF4FsZe1jBYk9-7sdQagGfheEJkxGh4dqvJodSg13Whm1gPYb6-qUh3k/s200/5.png&quot; style=&quot;cursor: pointer; float: left; height: 155px; margin: 0pt 10px 10px 0pt; width: 200px;&quot; /&gt;&lt;/a&gt;De vuelta en la pagina de azure, en la seccion &quot;&lt;span style=&quot;color: #ffcccc; font-weight: bold;&quot;&gt;manage project&lt;/span&gt;&quot; podemos subir los archivos generados, los subiremos dentro de &quot;staging&quot;.&lt;br /&gt;
&lt;br /&gt;
Hecho esto, debemos esperar un momento para poder ver nuestra aplicacion en la nube, si queremos que nuestra aplicacion este en el dominio que nos ofrece azure, únicamente tenemos que dar clic sobre las flechas que aparecen en la seccion manage project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtFTxE8pLY6eqPxmKSaTLg8vnaFI2bZuQcaqYi_a_9D9rn536Vk7k7S4XsD-FDvpl2-60d8BiwJMll4UWwt_jjgtgVdXEm152_xT-mkhRjkWI2ByWqczOE_qVLKOGhdmyZw8hqgnK90t4/s1600-h/3.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5357575256031768130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtFTxE8pLY6eqPxmKSaTLg8vnaFI2bZuQcaqYi_a_9D9rn536Vk7k7S4XsD-FDvpl2-60d8BiwJMll4UWwt_jjgtgVdXEm152_xT-mkhRjkWI2ByWqczOE_qVLKOGhdmyZw8hqgnK90t4/s200/3.png&quot; style=&quot;cursor: pointer; float: left; height: 156px; margin: 0pt 10px 10px 0pt; width: 200px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pueden ver el ejemplo en esta dirección: &lt;a href=&quot;http://ajesusflores.cloudapp.net/&quot; style=&quot;font-weight: bold;&quot;&gt;http://ajesusflores.cloudapp.net&lt;/a&gt;.</description><link>http://topicos-seguridad.blogspot.com/2009/07/aplicaciones-en-la-nube-con-azure.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQoiEp72Ari_N7MpCT1CQU6DaL_P58qK-2Jfp_dE6NCsgOI7hoy_xRAQ89yXk_a7Gxx4fuUy2qtxU-EPr07MVuUv7FjEf_S5OcUTYpsntp9yvPQJNkVEFX6xFxIGpypPFNBRH8w3cE2u4/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-6897164344002541417</guid><pubDate>Sat, 11 Jul 2009 23:28:00 +0000</pubDate><atom:updated>2009-11-10T18:37:10.506-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IE</category><title>Advertencia de Microsoft sobre vulnerabilidad en IE (Internet Explorer)</title><description>&lt;img src=&quot;http://www.minademas.com/wp-content/uploads/2007/10/ie7.jpg&quot; style=&quot;float: left;&quot; /&gt;Microsoft anunció que los usuarios que utilizan IE6 o IE7 bajo Windows XP y Windows Server 2003 están bajo riesgo de ataque.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
El atacante que logre explotar esa vulnerabilidad exitosamente puede obtener los mismo privilegios que el usuario local.&lt;br /&gt;
&lt;br /&gt;
Sin duda, Microsoft estará trabajando para mejorar la protección de los usuarios: La compañía dice: &quot;Microsoft esta trabajando arduamente para desarrollar la entullezcan de seguridad correspondiente para Windows&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.techshout.com/images/microsoft-ie-fix.jpg&quot; style=&quot;float: right;&quot; /&gt;La recomendación de Microsoft es remover el soporte para ActiveX&lt;span style=&quot;font-weight: bold;&quot;&gt; &lt;/span&gt;Video&lt;span style=&quot;font-weight: bold;&quot;&gt; Control&lt;/span&gt; hasta que el bug sea corregido. Los atacantes puede explotar la vulnerabilidad cuando se visitan paginas con código malicioso.&lt;br /&gt;
&lt;br /&gt;
Sin duda, lo recomendable es mantener usuarios con con cuentas configuradas con los mínimos permisos necesarios, de esta forma se podría reducir el impacto de la vulnerabilidad.&lt;br /&gt;
&lt;br /&gt;
Microsoft dijo que los usuarios de IE8 y Windows Vista están a salvo.</description><link>http://topicos-seguridad.blogspot.com/2009/07/advertencia-de-microsofto-sobre.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-3846003175936784891</guid><pubDate>Wed, 24 Jun 2009 21:14:00 +0000</pubDate><atom:updated>2009-09-20T14:17:37.432-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">webslices</category><title>Webslice del clima</title><description>Si piensas viajar al puerto de acapulco o vives en ahi, no te puedes perder el webslice del clima, con lo que siempre estarás al dia con la lluvia y el sol.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/clima_aca.php&quot;&gt;Clima de Acapulco.&lt;/a&gt;&lt;input value=&quot;Clima-Agregar&quot; class=&quot;addButton&quot; onclick=&quot;window.external.AddToFavoritesBar(&#39;http://ajesusflores.host56.com/clima_aca.php&#39;,&#39;Clima&#39;,&#39;slice&#39;);&quot; type=&quot;button&quot;&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/06/webslice-del-clima.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-7986012228082429657</guid><pubDate>Tue, 02 Jun 2009 20:14:00 +0000</pubDate><atom:updated>2009-09-20T13:20:36.438-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">webslices</category><title>Mantente al dia con este blog: webslice de seguridad</title><description>En esta entrada les ofrezco el webslice de este blog:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/seguridad.php&quot;&gt;Tópicos de seguridad informática.&lt;/a&gt;&lt;input value=&quot;Seguridad informática-Agregar&quot; class=&quot;addButton&quot; onclick=&quot;window.external.AddToFavoritesBhttp://ajesusflores.host56.com/seguridad.php&#39;,&#39;Seguridad&#39;,&#39;slice&#39;);&quot; type=&quot;button&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Recuerda que debes contar con IE8 para poder agregar el webslice a tu barra de herramientas.</description><link>http://topicos-seguridad.blogspot.com/2009/09/mantente-al-dia-con-este-blog-webslice.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-582603318892488504</guid><pubDate>Mon, 01 Jun 2009 02:27:00 +0000</pubDate><atom:updated>2009-06-01T22:56:57.711-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">noticias</category><category domain="http://www.blogger.com/atom/ns#">webslices</category><title>El universal Webslice: Mantente informado con El Universal</title><description>&lt;a href=&quot;http://security-topics.blogspot.com/2009/05/technology-webslice.html&quot;&gt;Go to the English Version!!!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En esta entrada pongo a su disposición 2 nuevos Webslices con noticias de uno de los diarios mas leidos de Mexico: El Universal.&lt;br /&gt;&lt;br /&gt;El primer WebSlice es para estar siempre al tanto de las noticias nacionales, mientras que el segundo WebSlice es de noticias sobre tecnologías.&lt;br /&gt;&lt;br /&gt;Recuerden que &quot;no&quot; se pueden suscribir a los webslices directamente en esta pagina, tienen que suscribirse en estos enlaces:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/webslice_eluniversal-mexico.php&quot;&gt;Noticias de Mexico.&lt;/a&gt;&lt;input type=&quot;button&quot; value=&quot;Noticias de Mexico-Agregar&quot; class=&quot;addButton&quot; onclick=&quot;window.external.AddToFavoritesBar(&#39;http://ajesusflores.host56.com/webslice_eluniversal-mexico.php&#39;,&#39;Noticias&#39;,&#39;slice&#39;);&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/webslice_eluniversal-tecno.php&quot;&gt;Noticias sobre tecnologia.&lt;/a&gt;&lt;input type=&quot;button&quot; value=&quot;Noticias sobre Tecnologia-Agregar&quot; class=&quot;addButton&quot; onclick=&quot;window.external.AddToFavoritesBar(&#39;http://ajesusflores.host56.com/webslice_eluniversal-tecno.php&#39;,&#39;Noticias&#39;,&#39;slice&#39;);&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Un aspecto que debemos destacar es que los Webslices sólo funcionan en Internet Explorer 8 y en Firefox con el complemento &lt;a href=&quot;https://addons.mozilla.org/es-ES/firefox/search?q=webslices&amp;amp;cat=all&quot;&gt;WebChunks&lt;/a&gt; instalado, no se queden fuera de la jugada.&lt;br /&gt;&lt;br /&gt;Sin importar las circunstancias, les dejo aquí las noticias de estos dos Webslices.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/webslice_eluniversal-mexico.php&quot;&gt;&lt;b&gt;El Universal - Mexico:&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;iframe style=&quot;border: 0px none ;&quot; name=&quot;ElUniversal_Mexico&quot; src=&quot;http://ajesusflores.host56.com/webslice_eluniversal-mexico.php&quot; width=&quot;400&quot; height=&quot;370&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/webslice_eluniversal-tecno.php&quot;&gt;&lt;b&gt;El Universal - Tecnologia:&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;iframe style=&quot;border: 0px none ;&quot; name=&quot;ElUniversal_Mexico&quot; src=&quot;http://ajesusflores.host56.com/webslice_eluniversal-tecno.php&quot; width=&quot;400&quot; height=&quot;370&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Post Data: También les ofreceré noticias de La Jornada (en cuanto encuentre el Feed).</description><link>http://topicos-seguridad.blogspot.com/2009/05/el-universal-webslice-mantente.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-1056136721802950623</guid><pubDate>Fri, 29 May 2009 06:00:00 +0000</pubDate><atom:updated>2009-05-31T20:28:47.609-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogit</category><category domain="http://www.blogger.com/atom/ns#">msdn</category><category domain="http://www.blogger.com/atom/ns#">technet</category><category domain="http://www.blogger.com/atom/ns#">webslices</category><title>Pruebas sobre WebSlices V 2.0 - Blogs MSDN (nuevamente) y Technet</title><description>A diferencia de la entrada anterior, en esta entrada ofrezo 2 Webslices:&lt;br /&gt;&lt;br /&gt;-Blogs de MSDN&lt;br /&gt;-Blogs de Technet&lt;br /&gt;&lt;br /&gt;En estos webslices solo se muestran las 4 últimas entradas. Espero que sea de utilidad.&lt;br /&gt;&lt;br /&gt;Para poder suscribirse a los webslices, lo tienen que hacer desde estas paginas:&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/msdnTechnet_2.php&quot;&gt;http://ajesusflores.host56.com/msdnTechnet_2.php&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/msdnBlogs_2.php&quot;&gt;http://ajesusflores.host56.com/msdnBlogs_2.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En esta entrada, solo se muestra una porcion de esa pagina, ¿pero por que? bueno, resulta que los Webslices solo muestran contenido que proviene del servidor donde se hizo la suscripcion&lt;br /&gt;&lt;br /&gt;ENJOY THEM!!!&lt;br /&gt;&lt;br /&gt;&lt;div id=&quot;msdn_blogs&quot; class=&quot;hslice&quot;&gt;&lt;br /&gt;&lt;p class=&quot;entry-title&quot;&gt;Actualizaciones de los Blogs de MSDN&lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;entry-content&quot;&gt;&lt;br /&gt;Suscribrete para obtener las actualizaciones al instante de los blos de MSDN&lt;br /&gt;&lt;iframe style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; src=&quot;http://ajesusflores.host56.com/msdnBlogs_2.php&quot; height=&quot;250&quot; width=&quot;350&quot;&gt;&lt;br /&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/msdnBlogs_2.php&quot; rel=&quot;feedurl&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id=&quot;technet_blogs&quot; class=&quot;hslice&quot;&gt;&lt;br /&gt;&lt;p class=&quot;entry-title&quot;&gt;Actualizaciones de los blogs de Technet&lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;entry-content&quot;&gt;&lt;br /&gt;Suscribrete para obtener las actualizaciones al instante de los blos de Technet&lt;br /&gt;&lt;iframe style=&quot;BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none&quot; src=&quot;http://ajesusflores.host56.com/msdnTechnet_2.php&quot; height=&quot;300&quot; width=&quot;350&quot;&gt;&lt;br /&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href=&quot;http://ajesusflores.host56.com/msdnTechnet_2.php&quot; rel=&quot;feedurl&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/05/pruebas-sobre-webslices-v-20-blogs-msdn.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-2122632144374458207</guid><pubDate>Wed, 27 May 2009 06:20:00 +0000</pubDate><atom:updated>2009-05-27T01:33:32.528-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogit</category><category domain="http://www.blogger.com/atom/ns#">twitter</category><category domain="http://www.blogger.com/atom/ns#">webslices</category><title>Pruebas sobre Webslices - Blogs MSDN</title><description>En esta entrada ofrezco un webslice para mantenerse actualizado con los blogs de MSDN. Realmente hay algunos blogs que ofrecen contenido sumamente interesante.&lt;br /&gt;
&lt;br /&gt;
Suscribanse!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;msdnBlogs&quot; class=&quot;hslice&quot; style=&quot;background-color:#000000; font-family:Verdana;&quot;&gt;&lt;br /&gt;
&lt;h2 class=&quot;entry-title&quot;&gt;Blogs MSDN&lt;/h2&gt;&lt;br /&gt;
&lt;div id=&quot;ContenidoBlogs&quot; class=&quot;entry-content&quot; style=&quot;background-color:#000000; font-family:Verdana; font-size:smaller;&quot;&gt;&lt;br /&gt;
&lt;p&gt;Suscribete a este Webslice para las actualizaciones de los blogs de MSDN.&lt;/p&gt;&lt;a rel=&quot;feedurl&quot; href=&quot;http://blogs.msdn.com/MainFeed.aspx?Type=AllBlogs&quot; style=&quot;display:none&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;Hasta el momento he tenido problemas con el estilo al momento de utilizar un feed en el webslice&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stay in touch</description><link>http://topicos-seguridad.blogspot.com/2009/05/pruebas-sobre-webslices-follow-me-on.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-2491299572062360086</guid><pubDate>Wed, 27 May 2009 05:08:00 +0000</pubDate><atom:updated>2009-05-26T22:19:47.486-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogit</category><title>Concurso Blogit.ms V 3.0 has been released!!!!!</title><description>Así es, la tercera edición del concurso de bloggers mexicanos &quot;blogit.ms&quot; ha dado inicio, este concurso es sobre tecnologia (especialmente Microsoft). Es por esto que esta entrada es una invitación a todos aquellos bloggers mexicanos para que participen, la pagina donde pueden registrar su blog y hacer las votaciones es: &lt;a href=&quot;http://www.blogit.ms/&quot;&gt;http://www.blogit.ms&lt;/a&gt;, Las bases del concurso las pueden consultar en este enlace: &lt;a href=&quot;http://www.blogit.ms/ContestBases.aspx&quot;&gt;http://www.blogit.ms/ContestBases.aspx&lt;/a&gt; y este último enlace es para las P+F (FAQ):&lt;a href=&quot;http://www.blogit.ms/FAQ.aspx&quot;&gt;http://www.blogit.ms/FAQ.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Participen.&lt;br /&gt;&lt;br /&gt;Ah, y también voten por este blog.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object data=&quot;data:application/x-silverlight&quot; type=&quot;application/x-silverlight-2&quot; width=&quot;234&quot; height=&quot;90&quot;&gt;                                     &lt;param name=&quot;source&quot; value=&quot;http://www.blogit.ms/BlogIT.xap&quot;&gt;&lt;param name=&quot;onerror&quot; value=&quot;onSilverlightError&quot;&gt;&lt;param name=&quot;background&quot; value=&quot;white&quot;&gt;&lt;param name=&quot;minRuntimeVersion&quot; value=&quot;2.0.31005.0&quot;&gt;&lt;param name=&quot;autoUpgrade&quot; value=&quot;true&quot;&gt;&lt;a href=&quot;http://go.microsoft.com/fwlink/?LinkID=124807&quot; style=&quot;text-decoration: none;&quot;&gt;                                         &lt;img src=&quot;http://go.microsoft.com/fwlink/?LinkId=108181&quot; alt=&quot;Get Microsoft Silverlight&quot; style=&quot;border-style: none;&quot; /&gt;                                     &lt;/a&gt;&lt;/object&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/05/concurso-blogitms-v-30-has-been.html</link><author>noreply@blogger.com (ajesusflores)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-8196796370801597234</guid><pubDate>Tue, 07 Apr 2009 04:01:00 +0000</pubDate><atom:updated>2013-04-17T11:10:29.876-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">criptografia</category><category domain="http://www.blogger.com/atom/ns#">ejemplo</category><category domain="http://www.blogger.com/atom/ns#">llaves publicas y privadas</category><title>Creación de llaves públicas y privadas del algoritmo asimétrico RSA como archivos XML en C#</title><description>En esta entrada les mostraré la forma en que podemos generar nuestras propias llaves tanto públicas y privadas del algoritmo de encriptación asimétrico RSA (llamado así por sus creadores), las llaves son generadas como archivos XML, esto con la finalidad de poder distribuir la llave pública para los fines que sean necesarios y el ejemplo está hecho en C# para aplicaciones de escritorio. El ejemplo esta hecho en VS 2008 express edition.&lt;br /&gt;
&lt;br /&gt;
Si todo esto de la encriptación y las llaves públicas y privadas se te dificulta un poco, te recomiendo que consultes &lt;a href=&quot;http://topicos-seguridad.blogspot.com/2009/02/criptografia-una-breve-introduccion.html&quot;&gt;esta información&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Todo el proceso es realmente sencillo y se hace con el namespace &lt;b style=&quot;color: #ea9999;&quot;&gt;System.Security.Cryptography&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Para este ejemplo y para ilustrar el contenido que tendrán los archivos, se tienen 2 cuadros de texto, en el primero se tiene el contenido de la llave privada (y pública tambien), mientras que en el segundo se tiene únicamente el contenido de la llave pública. &lt;br /&gt;
&lt;br /&gt;
Tambien se tienen 3 botones, con un botón se generan las llaves y con otros botones se exporta el contenido de los cuadros de texto a archivos XML.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-wyfgXzvTpNEhn42MD2cz43DwyhXUaQ5SVYBLO42CPKiT3wBQZOubYw6_RUAIwVXJ0d-2ilwwjdn8_2xt-MTpRzUesZXUStb208Vq1UavdiU-3Oo7L6d4lmBOzPg60ShaFMet7VxtLzs/s1600-h/rsa1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-wyfgXzvTpNEhn42MD2cz43DwyhXUaQ5SVYBLO42CPKiT3wBQZOubYw6_RUAIwVXJ0d-2ilwwjdn8_2xt-MTpRzUesZXUStb208Vq1UavdiU-3Oo7L6d4lmBOzPg60ShaFMet7VxtLzs/s320/rsa1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;En el evento Load del formulario tenemos la siguiente instrucción:&lt;br /&gt;
&lt;div style=&quot;color: #ea9999;&quot;&gt;
&lt;b&gt;algoritmoRSA = new System.Security.Cryptography.RSACryptoServiceProvider(2048);&lt;/b&gt;&lt;/div&gt;
la variable algoritmoRSA fue previamente declarada.&lt;br /&gt;
&lt;br /&gt;
En el evento clic del boton generar tenemos lo siguiente:&lt;br /&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;textBox1.Text = algoritmoRSA.ToXmlString(true);&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;textBox2.Text = algoritmoRSA.ToXmlString(false);&lt;/b&gt;&lt;/div&gt;
El sistema provee la funcionalidad necesaria para poder obtener las llaves mediante el método&lt;b style=&quot;color: #e06666;&quot;&gt; ToXmlString(bool indicador);&lt;/b&gt; el valor que acepta este método lo utlizamos para indicar si es la llave privada (con &lt;b&gt;true&lt;/b&gt;) o si es la llave pública (con &lt;b&gt;false&lt;/b&gt;).&lt;br /&gt;
&lt;br /&gt;
En los botones que nos permiten exportar el contenido de los cuadros de texto tenemos un código como este:&lt;br /&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;SaveFileDialog sfd = new SaveFileDialog();&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sfd.Filter = &quot;archivos xml |*.xml&quot;;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sfd.ShowDialog() == DialogResult.OK)&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.StreamWriter sw = new System.IO.StreamWriter(sfd.FileName);&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sw.Write(this.textBox1.Text);&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sw.Close();&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/b&gt;&lt;/div&gt;
esto nos permite guardar los archivos xml.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG-4MylXPVFucMNZMBQzHZL6Te0Es8YVtxvzqcG2Gzx8d9X8bQaYbxmVtg4dD8X2OpYxWi9IRoJasusk52GpTi0wbymD30XtmwPGrrQIT9AhufiPvqJI8gvypOcHyhTBsTqIgxz8o9Eq0/s1600-h/rsa2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG-4MylXPVFucMNZMBQzHZL6Te0Es8YVtxvzqcG2Gzx8d9X8bQaYbxmVtg4dD8X2OpYxWi9IRoJasusk52GpTi0wbymD30XtmwPGrrQIT9AhufiPvqJI8gvypOcHyhTBsTqIgxz8o9Eq0/s400/rsa2.jpg&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
</description><link>http://topicos-seguridad.blogspot.com/2009/04/creacion-de-llaves-publicas-y-privadas.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-wyfgXzvTpNEhn42MD2cz43DwyhXUaQ5SVYBLO42CPKiT3wBQZOubYw6_RUAIwVXJ0d-2ilwwjdn8_2xt-MTpRzUesZXUStb208Vq1UavdiU-3Oo7L6d4lmBOzPg60ShaFMet7VxtLzs/s72-c/rsa1.jpg" height="72" width="72"/><thr:total>1</thr:total><georss:featurename>Guerrero, México</georss:featurename><georss:point>17.544534270099081 -99.4976806640625</georss:point><georss:box>16.889842270099081 -100.43151866406249 18.199226270099082 -98.5638426640625</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8098716457077183209.post-4181482188740716359</guid><pubDate>Sun, 05 Apr 2009 19:01:00 +0000</pubDate><atom:updated>2009-04-05T14:19:28.872-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogit</category><category domain="http://www.blogger.com/atom/ns#">concurso</category><category domain="http://www.blogger.com/atom/ns#">windows</category><category domain="http://www.blogger.com/atom/ns#">windows 7</category><title>Windows 7 Beta - imagenes.</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOE4rI8D4yStydyVoaWxneBi1VT1AIiFhKGMeDgCIZzbh81yXjnFqJps_Wh7jJp-HVPGNCl8RRbJjPrhWxcr9Q0XLyw3JCKEZxuyywQ1JP1THWjAiAuh6Iu5JwLslc9Cv8xiSOIyxDws/s1600-h/HPIM3070.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOE4rI8D4yStydyVoaWxneBi1VT1AIiFhKGMeDgCIZzbh81yXjnFqJps_Wh7jJp-HVPGNCl8RRbJjPrhWxcr9Q0XLyw3JCKEZxuyywQ1JP1THWjAiAuh6Iu5JwLslc9Cv8xiSOIyxDws/s200/HPIM3070.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321317880369415026&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;&lt;/a&gt;como parte de los premios entregados por el&lt;a href=&quot;http://topicos-seguridad.blogspot.com/2009/04/entrega-de-los-premios-del-segundo.html&quot;&gt;segundo concurso BlogIt&lt;/a&gt; de Micrsosoft se encuentra un disco de Windows 7 (beta). Les dejo unas imágenes (que seguramente varios han visto) para que puedan apreciar que el sistema tiene algunos cambios interesantes.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_WIKNn8pbTiPSJ2j6pVFCJXDyXaz2kgja0EyurZbcMFlMSBB5Grf5inzvyoqREXFM63jZFDcNu2UHUSyVQa2LvzIHRSLY1nmB6Sj7vHrE7PAbt29IL9E_C-elOGqSQr87_Qj817ZXyl4/s1600-h/HPIM3072.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_WIKNn8pbTiPSJ2j6pVFCJXDyXaz2kgja0EyurZbcMFlMSBB5Grf5inzvyoqREXFM63jZFDcNu2UHUSyVQa2LvzIHRSLY1nmB6Sj7vHrE7PAbt29IL9E_C-elOGqSQr87_Qj817ZXyl4/s320/HPIM3072.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321314652777453378&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirBWgO67ZhdgtJNd4YyMPFz_lAYSc35W_SvN-4pjqy3Sqogtu85nkWwGEQgLsomxnXrOj6iZlK-wV_iyv6A_Ev_C6CW9oF5DPBAjx_Wxy2nZl7I0etNfFuwJV46NC92NPbu53suhcDgsk/s1600-h/HPIM3077.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirBWgO67ZhdgtJNd4YyMPFz_lAYSc35W_SvN-4pjqy3Sqogtu85nkWwGEQgLsomxnXrOj6iZlK-wV_iyv6A_Ev_C6CW9oF5DPBAjx_Wxy2nZl7I0etNfFuwJV46NC92NPbu53suhcDgsk/s400/HPIM3077.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321312382679141858&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvOkA3Iq1RBJ6_rTJDIPtebkbdOX75hBxwzhyphenhyphen022t4CGZuSfdi_1Uqli4SfpWFY2PXwBV9n1OtY_pcWtmL_Rit-N4fHpkTA0H_d2xiOSGDOSHNo3xZ1OXXF5pgfl8b37BCkc5aLePwRs8/s1600-h/HPIM3078.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvOkA3Iq1RBJ6_rTJDIPtebkbdOX75hBxwzhyphenhyphen022t4CGZuSfdi_1Uqli4SfpWFY2PXwBV9n1OtY_pcWtmL_Rit-N4fHpkTA0H_d2xiOSGDOSHNo3xZ1OXXF5pgfl8b37BCkc5aLePwRs8/s200/HPIM3078.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321309873301360242&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcWpOyU2HXdNI1ul4oaJ3tsaxvYCDpbP_kAiEb8QShEXgV67D87NW65Sol9sCvrn8MjhjkCW3iKYmxRCI2J7lcmMjUpUyjeMLJ0sqkFMpzI8zI5Vm1HwEN-CYCuO6KtVlI504PZZqjTBI/s1600-h/HPIM3079.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcWpOyU2HXdNI1ul4oaJ3tsaxvYCDpbP_kAiEb8QShEXgV67D87NW65Sol9sCvrn8MjhjkCW3iKYmxRCI2J7lcmMjUpUyjeMLJ0sqkFMpzI8zI5Vm1HwEN-CYCuO6KtVlI504PZZqjTBI/s200/HPIM3079.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321307697816272418&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKmGBp0pHTC48dW-hI-oNvqhz1ZTtFm7vEQurvqhxVMf7eeNRER6mmL5RWgOsNKjtz-kStToLtrvd3kRZzkpnis8V0rHp_V78VGImvlet0De-_dgk7LjvNM1rnGp7fC73e4sEY_qRofn0/s1600-h/HPIM3081.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKmGBp0pHTC48dW-hI-oNvqhz1ZTtFm7vEQurvqhxVMf7eeNRER6mmL5RWgOsNKjtz-kStToLtrvd3kRZzkpnis8V0rHp_V78VGImvlet0De-_dgk7LjvNM1rnGp7fC73e4sEY_qRofn0/s320/HPIM3081.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321305471213551506&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1pCe7b8Y0yZDH9B3lQeLcet4NxfVFsX-MOjx5Q2XG4k2ITRYg5jqrrGiv2RD2ffftjtj5d84zagKpN7fXSABTMSHxjmsY95O7UGJoqGOxvYQubslr62axWcWxOD09jDDKtin6sI7-cYA/s1600-h/HPIM3082.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1pCe7b8Y0yZDH9B3lQeLcet4NxfVFsX-MOjx5Q2XG4k2ITRYg5jqrrGiv2RD2ffftjtj5d84zagKpN7fXSABTMSHxjmsY95O7UGJoqGOxvYQubslr62axWcWxOD09jDDKtin6sI7-cYA/s400/HPIM3082.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321304691150452882&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0JDQLOEcMOU5-dMbPMWrWhu2K_x53uKkUU-ctsqWsFLaGwX50_RjGn9QaGc4sBHN8DJGfYiIN50yU7a1yVYQg2a8fvUL83oRypkZgjj-6QBOssmQSGm4yRBqn9PVY9ZCSXSf-h9BkyCs/s1600-h/HPIM3085.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0JDQLOEcMOU5-dMbPMWrWhu2K_x53uKkUU-ctsqWsFLaGwX50_RjGn9QaGc4sBHN8DJGfYiIN50yU7a1yVYQg2a8fvUL83oRypkZgjj-6QBOssmQSGm4yRBqn9PVY9ZCSXSf-h9BkyCs/s200/HPIM3085.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321303714125204082&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ5hWTQed7L9q8mmvYCUtNIbo9nOEQeAMiUoPLAD5FsoKZLvT8F3TVCOZ70jIZsYbFvThdXSACZ1slB__BhOW4glWHZLOt1FKrjHK1UHupSpFvuBYouX_aQdF9TyLnai2iXtjJkMFDSfU/s1600-h/HPIM3088.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ5hWTQed7L9q8mmvYCUtNIbo9nOEQeAMiUoPLAD5FsoKZLvT8F3TVCOZ70jIZsYbFvThdXSACZ1slB__BhOW4glWHZLOt1FKrjHK1UHupSpFvuBYouX_aQdF9TyLnai2iXtjJkMFDSfU/s200/HPIM3088.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5321302814172028914&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cabe aclarar que esto no es una reseña de Windows 7, es tan solo una muestra de lo que ustedes pueden observar a primera vista con el Windows 7 (beta)&lt;/span&gt;</description><link>http://topicos-seguridad.blogspot.com/2009/04/windows-7-beta-imagenes.html</link><author>noreply@blogger.com (ajesusflores)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOE4rI8D4yStydyVoaWxneBi1VT1AIiFhKGMeDgCIZzbh81yXjnFqJps_Wh7jJp-HVPGNCl8RRbJjPrhWxcr9Q0XLyw3JCKEZxuyywQ1JP1THWjAiAuh6Iu5JwLslc9Cv8xiSOIyxDws/s72-c/HPIM3070.JPG" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>