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

<channel>
	<title>It should work...</title>
	<atom:link href="http://vierito.es/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://vierito.es/wordpress</link>
	<description>Cuando cualquier trasto es útil</description>
	<lastBuildDate>Sat, 27 Feb 2010 13:41:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Resolución de conflictos, es decir, cómo no perder nunca al 3 en raya</title>
		<link>http://vierito.es/wordpress/2010/02/04/resolucion-de-conflictos-es-decir-como-no-perder-nunca-al-3-en-raya/</link>
		<comments>http://vierito.es/wordpress/2010/02/04/resolucion-de-conflictos-es-decir-como-no-perder-nunca-al-3-en-raya/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 20:31:19 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[Opinión]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[tic tac toe]]></category>
		<category><![CDATA[tres en raya]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=749</guid>
		<description><![CDATA[A menudo, ya sea con amigos o no, nos encontramos con situaciones en las que no hay vuelta atrás, uno opina una cosa, otro otra, y eso no va a cambiar. Pero queda algo, el orgullo, en el fondo tu sabes que tienes razón y quieres dejarlo patente. Veamos las opciones:

Llegar a las manos: Darse [...]]]></description>
			<content:encoded><![CDATA[<p>A menudo, ya sea con amigos o no, nos encontramos con situaciones en las que no hay vuelta atrás, uno opina una cosa, otro otra, y eso no va a cambiar. Pero queda algo, el orgullo, en el fondo tu sabes que tienes razón y quieres dejarlo patente. Veamos las opciones:</p>
<ul>
<li>Llegar a las manos: Darse leches está mal visto. Meterse mano también.</li>
<li>Jugárselo a piedra, papel o tijera: si es el otro es japonés estás perdido, vas a perder sí o sí, ellos nacieron con un don para ello. Si no es japonés nada te asegura que vayas a ganar, así que nada, mala opción.</li>
<li>Jugárselo al tres-en-raya. Esta es la buena.</li>
</ul>
<p>El tres en raya es un juego sencillo, cuando la gente se pone a jugar se cree que es un juego tonto (que lo es!) y que más o menos, sin considerar empates, el 50% de las partidas las ganarán y el resto las perderán pero no es tan tan sencillo. Así que le sueltas: &#8220;Pues ya está! Nos lo jugamos al tres en raya. El primero en ganar será el que tenga la razón, ¿es justo no?&#8221; Suelen aceptar.</p>
<p>Vamos a asumir que el juego es empezando con un tablero vacío, que empiezas donde quieras y que cuando ya has puesto las piezas posibles y no ha ganado nadie comienza una partida nueva desde cero.</p>
<p>También vamos a asumir que tú no estás en la parra y que sólo vas a perder si te provocan una situación en la que el contrincante te puede hacer tres en raya de dos maneras simultáneas y no es que se te ha <em>escapado</em> la línea ¬¬. Tú eres cruz, tu víctima será cara.</p>
<h3>Cómo no perder</h3>
<p>Se supone que el que empieza lleva la voz cantante. Tu contrincante puede empezar en el centro, en una esquina o en un lado. Lo decisivo son las 2 primeras posiciones.</p>
<p>Si él empieza en el centro, ve siempre a la esquina. En caso de que luego su ficha se ponga en línea tu ve de nuevo a una esquina.</p>
<p style="text-align: center;"><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDEwLzAyL25vcGVyZGVyX2NlbnRyby5wbmc="><img class="size-medium wp-image-755   aligncenter" title="noperder_centro" src="http://vierito.es/wordpress/wp-content/uploads/2010/02/noperder_centro-480x256.png" alt="no perder al tres en raya cuando el otro empieza en el centro" width="480" height="256" /></a></p>
<p>Si empieza en una esquina nosotros cogemos el centro.  En caso de que él vuelva a colocar su ficha en línea entonces nosotros nos vamos a una posición que no sea esquina.</p>
<p style="text-align: center;"><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDEwLzAyL25vcGVyZGVyX2VzcXVpbmEucG5n"><img class="size-medium wp-image-756  aligncenter" title="noperder_esquina" src="http://vierito.es/wordpress/wp-content/uploads/2010/02/noperder_esquina-480x278.png" alt="noperder_esquina" width="480" height="278" /></a></p>
<p>Si empieza en un lado cogemos el centro de nuevo. En caso de que él coga un lado contiguo debemos colocar nuestra ficha en la esquina común.</p>
<p style="text-align: center;"><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDEwLzAyL25vcGVyZGVyX2xhZG8ucG5n"><img class="size-medium wp-image-757  aligncenter" title="noperder_lado" src="http://vierito.es/wordpress/wp-content/uploads/2010/02/noperder_lado-480x254.png" alt="noperder_lado" width="480" height="254" /></a></p>
<p>Ahora ya lo tenemos neutralizado.</p>
<h3>Cómo intentar ganar</h3>
<p>Intentar ganar viene a ser lo mismo pero al revés, con alguna variación más porque él no tiene por qué hacer de su primer movimiento los que yo he hecho antes.  Sólo tienes que esperar a que lleve 3 o 4 partidas y que ponga donde no toca en su segundo movimiento.</p>
<p>Aplicado al primer caso, si empiezas en el centro y él no pone en una esquina está muerto, en el caso de que lo haga tu colocas tu ficha haciendo línea. Ahora si él no se posiciona en una de las dos esquina restantes habrá perdido también.</p>
<p>Si tu contrincante se sabe esto, simplemente jugar será un while(true) hasta que uno de los dos se harte, y entonces, por supuesto, tiene razón el otro <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>P.S. Aprovecho este post para anunciar que TuXeD se ha comprado un dominio nuevo y pasa de <a title=\"/var/log/TuXeD\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3R1eGVkLnNlcnZlYmxvZy5uZXQ=">/var/log/TuXeD</a> a <a title=\"Limited Entropy Dot Com - TuXeD\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5saW1pdGVkLWVudHJvcHkuY29t">Limited Entropy Dot Com</a>. ¡Ya estás actualizando tus feeds y bookmarks!<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDgvMTAvY3Vlc3Rpb24tZGUtb3B0aW1pemFjaW9uLw==" rel=\"bookmark\" title=\"August 10, 2009\">Cuestión de optimización</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDgvMzEvY2FtcHVzLXBhcnR5LTA4LWRpYXJpby1kZS1hLWJvcmRvLXBhcnRlLTEv" rel=\"bookmark\" title=\"August 31, 2008\">[Campus Party 08] Diario de a bordo &#8211; Parte 1</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDQvMTUvJWMyJWExZmVsaXotbm8tY3VtcGxlYW5vcy8=" rel=\"bookmark\" title=\"April 15, 2008\">¡Feliz no-cumpleaños!</a></li>
</ul>
<p><!-- Similar Posts took 14.010 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=749" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2010/02/04/resolucion-de-conflictos-es-decir-como-no-perder-nunca-al-3-en-raya/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Congreso de Seguridad Rooted CON 2010</title>
		<link>http://vierito.es/wordpress/2010/01/13/congreso-de-seguridad-rooted-con-2010/</link>
		<comments>http://vierito.es/wordpress/2010/01/13/congreso-de-seguridad-rooted-con-2010/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 16:56:40 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[conferencias]]></category>
		<category><![CDATA[rootedcon]]></category>
		<category><![CDATA[rootedlabs]]></category>
		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=733</guid>
		<description><![CDATA[
Cómo se puede leer ya en muchos sitios, este año se celebra un nuevo congreso de seguridad informática en España. Su web es http://www.rootedcon.es y como ellos mismos dicen su objetivo es ofrecer conferencias altamente técnicas y fomentar el conocimiento, no bastante con conocer que existen cosas, hay que saber cómo son y por qué [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDEwLzAxL3Jvb3RlZGNvbi5wbmc="><img class="size-full wp-image-738 aligncenter" title="rootedcon" src="http://vierito.es/wordpress/wp-content/uploads/2010/01/rootedcon.png" alt="rootedcon" width="200" height="104" /></a></p>
<p>Cómo se puede leer ya en muchos sitios, este año se celebra un nuevo congreso de seguridad informática en España. Su web es <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5yb290ZWRjb24uZXM=">http://www.rootedcon.es</a> y como ellos mismos dicen su objetivo es ofrecer conferencias altamente técnicas y fomentar el conocimiento, no bastante con conocer que existen cosas, hay que saber cómo son y por qué funcionan así <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Se va a organizar un wargame tipo <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXB0dXJlX3RoZV9mbGFnI0NvbXB1dGVyX3NlY3VyaXR5">Capture The Flag</a> a manos de un <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3NleHkucGFuZGFzLmVzL2Jsb2cv">Sexy Panda</a>, ¿qué más se puede tener? Además hay una serie de talleres intensivos denominados <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cHM6Ly9zaXRlcy5nb29nbGUuY29tL2Evcm9vdGVkY29uLmVzL3Jvb3RlZGxhYnMv">RootedLabs</a> donde podrás aprender con los mejores sobre: ingeniería inversa, análisis forense, análisis de malware, pentesting, securización de redes inalámbricas y seguridad web (aún quedan plazas libres en los labs si te interesa algún área).</p>
<p>Allá por noviembre me enteré de la existencia el congreso y desde un principio me interesó acudir, pero ¿por qué no algo más? Hablando con <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3R1eGVkLnNlcnZlYmxvZy5uZXQv">TuXeD</a> nos planteamos la posibilidad de enviar algo al <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5yb290ZWRjb24uZXMvcm9vdGVkLWNvbi0yMDEwL2NmcC5odG1s">Call For Papers</a>, estuvimos unas cuantas semanas dudando pero tiró para adelante&#8230; <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Unas semanas después (contra todo pronóstico, por lo menos mío) resulta que nos han seleccionado la propuesta, además junto con los primeros ponentes confirmados, cosa que considero un honor más aún. Ya de por sí, ser el último mono iba a ser considerado un éxito 100% por nuestra parte.</p>
<p>Para que os hagáis una idea del personal, esto es lo que hay confirmado por ahora:<br />
<a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5yb290ZWRjb24uZXMvcm9vdGVkLWNvbi0yMDEwL3BvbmVudGVzLmh0bWw=">http://www.rootedcon.es/rooted-con-2010/ponentes.html</a></p>
<ul> &#8211; David Barroso, de <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zMjFzZWMuY29tLw==">S21Sec</a><br />
- Joxean Koret, de <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2Jsb2cuNDhiaXRzLmNvbS8=">48bits</a> &amp; <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5wYW5kYXNlY3VyaXR5LmNvbS8g">Panda Security</a><br />
- Alfonso Muñoz Muñoz, de la <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5ldWkudXBtLmVzLyA=">EUI-UPM</a> y colaborador cátedra <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5jYXBzZGVzaS51cG0uZXMv">Applus-UPM</a>.<br />
- Alejandro Ramos &#8220;dab&#8221;, de <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20v">SecurityByDefault</a>.<br />
- Antonio Ramos, de <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zMjFzZWMuY29tLw==">S21Sec</a>.<br />
- David Reguera, de <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5oaXNwYXNlYy5jb20v">Hispasec Sistemas</a>.<br />
- Rubén Santamarta, de <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5yZXZlcnNlbW9kZS5jb20v">ReverseMode</a> &amp; <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2Jsb2cuNDhiaXRzLmNvbS8=">48bits</a>.<br />
- Chema Alonso, de <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5pbmZvcm1hdGljYTY0LmNvbS8=">Informática64</a></ul>
<p>Y <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3R1eGVkLnNlcnZlYmxvZy5uZXQv">TuXeD</a> y yo! No puedo ocultar que estoy emocionado <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  me lo voy a pasar de lo lindo seguro.</p>
<p>Poco a poco se tienen que ir confirmando más ponentes y saldrán los detalles de la conferencias. Esto promete.</p>
<p>Si queréis acudir al evento daos prisa porque debido a la gran acogida pronto colgarán el cartel de todo vendido. Me alegro de que haya surgido una nueva iniciativa así y más aún con precios populares y apostando por gente muy capaz que hay por nuestro país.</p>
<p>Por la mocosfera mucha gente ya se ha hecho eco del evento:<br />
<a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20vc2VhcmNoL2xhYmVsL3Jvb3RlZGNvbg==">http://www.securitybydefault.com/search/label/rootedcon<br />
</a><br />
Y aquí entrevistas a gente que lo organiza o va a estar danzando por ahí:<br />
<a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VsbGFkb2RlbG1hbC5ibG9nc3BvdC5jb20vc2VhcmNoL2xhYmVsL0VudHJldmlzdGFz">http://elladodelmal.blogspot.com/search/label/Entrevistas</a></p>
<p>Can&#8217;t wait!</p>
<p>ACTUALIZACIÓN: Ya empiezan a salir más nombres de ponentes y títulos de las conferencias. Toda la información <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5yb290ZWRjb24uZXMvcm9vdGVkLWNvbi0yMDEwL3BvbmVudGVzLmh0bWw=">aquí</a><br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTIvMjQvMjVjMy1ub3RoaW5nLXRvLWhpZGUv" rel=\"bookmark\" title=\"December 24, 2008\">25C3: Nothing to Hide</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDYvMTEvY3VhbmRvLW5vLXNlLXRpZW5lLWN1aWRhZG8tY29uLWxhLWNyaXB0b2dyYWZpYS8=" rel=\"bookmark\" title=\"June 11, 2009\">Cuando no se tiene cuidado con la criptografía&#8230;</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDYvMjUvY2FtcHVzLXBhcnR5LTA5LXBsYW5uaW5nLw==" rel=\"bookmark\" title=\"June 25, 2009\">[Campus Party 09] Planning</a></li>
</ul>
<p><!-- Similar Posts took 15.231 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=733" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2010/01/13/congreso-de-seguridad-rooted-con-2010/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Descodificar tonos DTMF usando Matlab</title>
		<link>http://vierito.es/wordpress/2009/11/25/descodificar-tonos-dtmf-usando-matlab/</link>
		<comments>http://vierito.es/wordpress/2009/11/25/descodificar-tonos-dtmf-usando-matlab/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 01:16:50 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[DTMF]]></category>
		<category><![CDATA[FFT]]></category>
		<category><![CDATA[Fourier]]></category>
		<category><![CDATA[Matlab]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=710</guid>
		<description><![CDATA[Ya vimos como crear tonos DTMF usando Matlab y han pedido en un par de comentarios [1] [2] cómo se haría a la inversa, así que aquí va  
He cogido el script para generar los tonos del otro post y lo he cambiado para los pitidos duren 40ms (que se resume a cambiar que [...]]]></description>
			<content:encoded><![CDATA[<p>Ya vimos como <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDEvMTUvbGxhbWFuZG8tcG9yLXRlbGVmb25vLWNvbi1tYXRsYWIv">crear tonos DTMF usando Matlab</a> y han pedido en un par de comentarios [<a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDEvMTUvbGxhbWFuZG8tcG9yLXRlbGVmb25vLWNvbi1tYXRsYWIvI2NvbW1lbnQtOTIw">1</a>] [<a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDEvMTUvbGxhbWFuZG8tcG9yLXRlbGVmb25vLWNvbi1tYXRsYWIvI2NvbW1lbnQtMTA5OQ==">2</a>] cómo se haría a la inversa, así que aquí va <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>He cogido el script para generar los tonos del otro post y lo he cambiado para los pitidos duren 40ms (que se resume a cambiar que use 320 muestras en lugar de 1200 para cada pitido o silencio), para que sea un poco más real. El wav que voy a usar será el siguiente: <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzExL3Jpbmcud2F2">ring.wav</a></p>
<p>Empezamos, ¿qué necesitamos? Cada pitido estará compuesto por una pareja de tonos así que para saber qué número es deberemos reconocer las dos frecuencias principales que tienen los pitidos, y conocer la frecuencia viene a ser lo mismo que saber el periodo.</p>
<p>Hace un tiempo hice una práctica de Tratamiento Digital de la Señal en la que se hacían cosas de estas, uno de los códigos no es mío, está indicado. El resto los hicimos <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL21vdW5zdHJ1b2RlbGFzZ2FsbGV0YXMuYmxvZ3Nwb3QuY29t">Rafa</a> y yo en su día.</p>
<p>Aprovechándonos de la Transformada de Fourier:</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span>P,f<span style="color: #080;">&#93;</span>=periodograma<span style="color: #080;">&#40;</span>x,N<span style="color: #080;">&#41;</span>
<span style="color: #228B22;">% [P f]=periodograma(x,N)</span>
<span style="color: #228B22;">% Calcula N muestras del periodograma de las muestras en x</span>
<span style="color: #228B22;">% N debe ser &gt; que length(x)</span>
<span style="color: #228B22;">%</span>
<span style="color: #228B22;">% P: Periodograma propiamente</span>
<span style="color: #228B22;">% f frecuencias correspondientes</span>
&nbsp;
k=<span style="color: #33f;">0</span>:N-<span style="color: #33f;">1</span>;
f=k./N;
&nbsp;
L=<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>;
P=<span style="color: #33f;">1</span>/L*<span style="color: #080;">&#40;</span><span style="color: #0000FF;">fft</span><span style="color: #080;">&#40;</span>x,N<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>.^<span style="color: #33f;">2</span>;</pre></div></div>

<p>Pero lo propio será usar un programa que use <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dfZnVuY3Rpb24=">ventanas</a>  para su propósito:</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> <span style="color: #080;">&#91;</span>P,f<span style="color: #080;">&#93;</span>=periodmodif<span style="color: #080;">&#40;</span>x,ventana,N<span style="color: #080;">&#41;</span>
<span style="color: #228B22;">% [P ,f]=periodmodif(x,ventana,N)</span>
<span style="color: #228B22;">%</span>
<span style="color: #228B22;">% Calcula N muestras del periodograma modificado de las muestras en x</span>
<span style="color: #228B22;">% N debe ser &gt; que length(x)</span>
<span style="color: #228B22;">%</span>
<span style="color: #228B22;">% P: Periodograma propiamente</span>
<span style="color: #228B22;">% f frecuencias correspondientes</span>
&nbsp;
<span style="color: #0000FF;">if</span> N &lt;= <span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>
   <span style="color: #0000FF;">error</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'N debe ser &gt; que length(x)'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">else</span>
   k=<span style="color: #33f;">0</span>:N-<span style="color: #33f;">1</span>;
   f=k./N;
&nbsp;
   L=<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>;
   m=<span style="color: #33f;">0</span>:L-<span style="color: #33f;">1</span>;
&nbsp;
   U=<span style="color: #33f;">1</span>/L*<span style="color: #080;">&#40;</span><span style="color: #0000FF;">sum</span><span style="color: #080;">&#40;</span>ventana<span style="color: #080;">&#40;</span>m+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>.^<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
   P=<span style="color: #33f;">1</span>/<span style="color: #080;">&#40;</span>L*U<span style="color: #080;">&#41;</span>*<span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">fft</span><span style="color: #080;">&#40;</span>x.*ventana,N<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>.^<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">end</span></pre></div></div>

<p>Cargamos el fichero <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzExL3Jpbmcud2F2">ring.wav</a></p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">&gt;&gt; <span style="color: #080;">&#91;</span>x,fs,nbits<span style="color: #080;">&#93;</span>= <span style="color: #0000FF;">wavread</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'ring.wav'</span><span style="color: #080;">&#41;</span>
&gt;&gt; t=<span style="color: #33f;">0</span>:<span style="color: #33f;">1</span>/fs:<span style="color: #33f;">1</span>/fs*<span style="color: #080;">&#40;</span><span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
&gt;&gt; <span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span></pre></div></div>

<p><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzExL3JpbmcucG5n"><img src="http://vierito.es/wordpress/wp-content/uploads/2009/11/ring-480x360.png" alt="ring" title="ring" width="480" height="360" class="aligncenter size-medium wp-image-719" /></a></p>
<p>Ahora tendremos que calcular de cuanto es nuestra ventana mínima. La separación mínima entre tonos es de 320 muestras (que además en este caso es la misma entre todos los tonos) luego la frecuencia digital será 320 / fs = 320/8000 = 0.04</p>
<p>Y aquí un poco de teoría sobre ventanas gracias a los <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3VzZXJzLmFsbGllZG1vZHMubmV0L35mYWx1Y28vYXB1bnRlc3Bhay8=">Apuntes de Pak</a>:</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzExL3ZlbnRhbmFzX0xURFNfcGFrLlBORw=="><img src="http://vierito.es/wordpress/wp-content/uploads/2009/11/ventanas_LTDS_pak.PNG" alt="ventanas_LTDS_pak" title="ventanas_LTDS_pak" width="463" height="548" class="aligncenter size-full wp-image-720" /></a></p>
<p>Pero no voy a aburriros con ella así que nos quedaremos en que vamos a usar una ventana tipo Hamming, luego necesitaremos una longitud de ventana L = 4 / resolución = 4 / 0.04 = 100 muestras</p>
<p>Ahora vamos a determinar los dígitos, y para ello vamos a hacer uso de la siguiente función para búscar máximos:</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> p=buscapicosu<span style="color: #080;">&#40;</span>x,umbral<span style="color: #080;">&#41;</span>
<span style="color: #228B22;">%posi_picos=buscapicosu(x,umbral)</span>
<span style="color: #228B22;">% Busca los máximos locales de un vector mayores que un cierto umbral</span>
<span style="color: #228B22;">% umbral se expresa en % respecto al valor máximo del vector.</span>
<span style="color: #228B22;">% Ej. buscapicos(x,60) buscaria los picos mayores o iguales al 60% del</span>
<span style="color: #228B22;">% pico más alto</span>
<span style="color: #228B22;">%</span>
<span style="color: #228B22;">% posi_picos son los indices del vector de entrada correspondientes a los picos.</span>
&nbsp;
<span style="color: #228B22;">% (C) Antonio Albiol , 2003</span>
&nbsp;
<span style="color: #228B22;">%Primero descarto los valores menores que el umbral</span>
&nbsp;
umbral=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#40;</span>:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>*umbral/<span style="color: #33f;">100</span>;
&nbsp;
x=x.*<span style="color: #080;">&#40;</span>x&gt;umbral<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">%Ahora buscaré los máximos</span>
&nbsp;
<span style="color: #228B22;">%Primero creo un vector con dos valores muy pequeños en los extremos</span>
xe=<span style="color: #080;">&#91;</span>-<span style="color: #0000FF;">inf</span>;x<span style="color: #080;">&#40;</span>:<span style="color: #080;">&#41;</span>;-<span style="color: #0000FF;">inf</span><span style="color: #080;">&#93;</span>;
&nbsp;
<span style="color: #228B22;">%Ahora calculo la derivada</span>
d1=<span style="color: #0000FF;">diff</span><span style="color: #080;">&#40;</span>xe<span style="color: #080;">&#41;</span>;
ld1=<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>d1<span style="color: #080;">&#41;</span>;
<span style="color: #228B22;">%Ahora busco valores de la derivada de signo diferente consecutivos y que sean máximos</span>
p=<span style="color: #0000FF;">find</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">sign</span><span style="color: #080;">&#40;</span>d1<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>:ld1<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>.*<span style="color: #0000FF;">sign</span><span style="color: #080;">&#40;</span>d1<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>:<span style="color: #080;">&#40;</span>ld1-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>&lt;<span style="color: #33f;">0</span> &amp; <span style="color: #0000FF;">sign</span><span style="color: #080;">&#40;</span>d1<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>:ld1-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>&gt;<span style="color: #33f;">0</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<p>Cada pitido y cada silencio dura 320 muestras luego calculamos periodos en esas zonas. Vamos a por el primer dígito, con ventana Hamming de 100 y usando 1024 puntos:</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">&gt;&gt; <span style="color: #080;">&#91;</span>P,f<span style="color: #080;">&#93;</span>=periodmodif<span style="color: #080;">&#40;</span>x<span style="color: #080;">&#40;</span><span style="color: #33f;">320</span>:<span style="color: #33f;">320</span>+<span style="color: #33f;">99</span><span style="color: #080;">&#41;</span>,hamming<span style="color: #080;">&#40;</span><span style="color: #33f;">100</span><span style="color: #080;">&#41;</span>,<span style="color: #33f;">1024</span><span style="color: #080;">&#41;</span>;
&gt;&gt; buscapicosu<span style="color: #080;">&#40;</span><span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>P<span style="color: #080;">&#41;</span>,<span style="color: #33f;">50</span><span style="color: #080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">ans</span> =
&nbsp;
   <span style="color: #33f;">110</span>
   <span style="color: #33f;">190</span>
   <span style="color: #33f;">836</span>
   <span style="color: #33f;">916</span></pre></div></div>

<p>En el espectro digital, de 0 a 1, veremos que las frecuencias se repiten en espejo a partir de 0.5. Luego la frecuencia 110 se corresponde con la 916, igualmente ocurre entre la de 190 y 836, son lo mismo. Así que sólo tenemos que ver a qué corresponden 110 y 190.</p>
<p>Nota a tener en cuenta: en las FFTs (Fast Fourier Transforms) el cálculo se hace mucho más rapido cuando N es una potencia de 2, por eso la elección de hacerlo en 1024 puntos no ha sido del todo al azar.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">&gt;&gt; <span style="color: #33f;">110</span>/<span style="color: #33f;">1024</span>*fs
&nbsp;
<span style="color: #0000FF;">ans</span> =
&nbsp;
  <span style="color: #33f;">859.3750</span>
&nbsp;
&gt;&gt; <span style="color: #33f;">190</span>/<span style="color: #33f;">1024</span>*fs
&nbsp;
<span style="color: #0000FF;">ans</span> =
&nbsp;
  1.4844e+003</pre></div></div>

<p>Nos vamos a la tablita y vemos con qué 2 valores más cercanos concuerdan 859.375 y 1484.4 Hz. Claramente sería con 852 y 1477 Hz que juntos corresponden con el dígito 9.</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzExL2R0bWYxLnBuZw=="><img src="http://vierito.es/wordpress/wp-content/uploads/2009/11/dtmf1.png" alt="dtmf1" title="dtmf1" width="485" height="189" class="aligncenter size-full wp-image-722" /></a></p>
<p>Y así con cada uno de los dígitos <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Sé que estaría mucho mejor un script que hiciera todo el proceso entero y obtuviera qué número es de la tabla pero últimamente necesito días de 30 horas así os tendréis que conformar con esto. ¿A qué número he llamado?<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDEvMTUvbGxhbWFuZG8tcG9yLXRlbGVmb25vLWNvbi1tYXRsYWIv" rel=\"bookmark\" title=\"January 15, 2009\">Llamando por teléfono con Matlab</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMjQvZnByaW50LXByb2Nlc2Fkby1kZS1sYS1pbWFnZW4taHVlbGxhcy1kYWN0aWxhcmVzLw==" rel=\"bookmark\" title=\"October 24, 2008\">[Fprint] Procesado de la imagen &#8211; Huellas dactilares</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDgvMTAvY3Vlc3Rpb24tZGUtb3B0aW1pemFjaW9uLw==" rel=\"bookmark\" title=\"August 10, 2009\">Cuestión de optimización</a></li>
</ul>
<p><!-- Similar Posts took 8.448 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=710" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/11/25/descodificar-tonos-dtmf-usando-matlab/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
<enclosure url="http://vierito.es/wordpress/wp-content/uploads/2009/11/ring.wav" length="12204" type="audio/x-wav" />
		</item>
		<item>
		<title>Masterclass con Carl Verheyen</title>
		<link>http://vierito.es/wordpress/2009/10/28/masterclass-con-carl-verheyen/</link>
		<comments>http://vierito.es/wordpress/2009/10/28/masterclass-con-carl-verheyen/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 19:47:23 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=693</guid>
		<description><![CDATA[
El pasado jueves acudí a la Masterclass de Carl Verheyen que se había organizado en Valencia y no defraudó, es más, no es que no defraudara si no que me impresionó mucho.
Calificado por varios medios como uno de los 10 mejores guitarristas del mundo y el mejor guitarrista de estudio que hay, ha grabado para [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzEwL1ZlcmhleWVuMDIuanBn"><img class="size-full wp-image-698  aligncenter" title="Verheyen02" src="http://vierito.es/wordpress/wp-content/uploads/2009/10/Verheyen02.jpg" alt="Verheyen02" width="453" height="604" /></a></p>
<p>El pasado jueves acudí a la Masterclass de <a title=\"Carl Verheyen\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5jYXJsdmVyaGV5ZW4uY29tLw==">Carl Verheyen</a> que se había organizado en Valencia y no defraudó, es más, no es que no defraudara si no que me impresionó mucho.</p>
<p>Calificado por varios medios como uno de los 10 mejores guitarristas del mundo y el mejor guitarrista de estudio que hay, ha grabado para varios cientos de discos, 200 bandas sonoras (incluyendo producciones recientes de Disney y Pixar por ejemplo), miles de <em>jingles</em> para televisión y radio, &#8230; vamos, que la lista es larga. Un señor del calibre de <a title=\"Dann Huff\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYW5uX0h1ZmY=">Dann Huff</a>, <a title=\"Steve Lukhater\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zdGV2ZWx1a2F0aGVyLm5ldA==">Steve Lukhater</a> y similares pero que, por su papel, suelen permanecer en un segundo plano comparados con el grupo de guitarristas a los que se les consideran <em>estrellas</em>.</p>
<p>La masterclass comenzó con su impresionante versión de <a title=\"Little Wing - Jimi Hendrix\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWdQUTBhUGNxV2dN">Little Wing de Jimi Hendrix</a>. Hay versiones geniales como la de <a title=\"Stevie Ray Vaughan - Little Wing Cover\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXpBRy1rWF9JbFV3">Stevie Ray Vaughan</a> o la de <a title=\"Andy Timmons - Little Wing Cover\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUFFeUZBcnJiR0JZ">Andy Timmons</a> pero fue verle tocar y dejar a todas las versiones que había oído hasta ahora totalmente por los suelos.</p>
<p><span id="more-693"></span></p>
<p>El enfoque fue dar un repaso a como ha ido viendo y aprendiendo las cosas desde que empezó a tocar, sus influencias, lo que él considera importante, etc, todo acompañado de ejemplos y pasajes.</p>
<p>Era alucinante el dominio de todos los estilos y cómo era capaz de sonar como quien quisiera. De todas las personas que le han influenciado fue desglosando con qué se había quedado él y que le parecía que ese guitarrista había aportado o supuesto a la música. Pasó por blues crudo de Albert King, el uso de pentatónicas mayores y menores de B.B. King, el vibrato de Eric Clapton, diferentes estilos de jazz, Wes Montgomery, las Walking Bass Lines de Joe Pass y muchos más, también como Jimi Hendrix supuso el nexo de unión entre toda esa música anterior y lo que vendría después en los 70 y 80 (cosa que él mismo dijo que no concebió hasta mucho después de que Hendrix muriera), estilos country, funky, rock y así hasta tiempo más actuales.</p>
<p>Prácticamente el 100% de sus influencias son americanas, por no decir el 100% pero mostró su interés por músicas europeas y orientales, como el flamenco, música india, pakistaní y otras.</p>
<p>Llegó un punto en su vida que comentó que dejó de centrarse en estilos, le gustaban tantas cosas distintas que decidió aprender todo lo que escuchara y le gustara independientemente de quien fuera o que estilo tuviera&#8230; y por lo visto lo ha hecho xDDD Se lo sabe todo, parecía que lo único en que no tenía interés era en técnicas de tapping a dos manos y poco más, cosas al estilo pajillero no han calado en él.</p>
<p style="text-align: center;"><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzEwL1ZlcmhleWVuMDEuanBn"><img class="size-medium wp-image-699  aligncenter" title="Verheyen01" src="http://vierito.es/wordpress/wp-content/uploads/2009/10/Verheyen01-479x360.jpg" alt="Verheyen01" width="479" height="360" /></a></p>
<p>Comentó como durante décadas su planteamiento era 80% músico de sesión y 20% artista en solitario pero que ha ido evolucionando y posiblemente ahora sea justo al revés. Para ser un buen músico de sesión destacó la importancia de:</p>
<ul>
<li>conocer no, dominar muchos estilos</li>
<li>saber leer música al vuelo</li>
<li>un base rítmica muy sólida, aspecto mucho más importante que la faceta solista</li>
<li>la puntualidad, el tiempo es oro en el estudio y generalmente <em>hay una oportunidad</em></li>
</ul>
<p>También hubo cabida para conceptos armónicos, improvisación, líneas melódicas, etc, todo explicado con la claridad pasmosa e igualmente cosas más de técnicas como chickenpicking para el country,  como ajusta sus stratos para que no se desafinen con el uso del trémolo o jugar con los armónicos.</p>
<p>Suele usar stratos pero comentó que su arsenal estaba sobre las 70 guitarras, 50 amplificadores y 200 pedales. Para esta ocasión tocaba con un cabezal+pantalla Engl Powerball en el canal limpio que no era de su propiedad y poco más, de hecho quiso activar el bypass del bucle de efectos donde me parece que había un TC Electronics G Major (creo) y alguna cosa más.</p>
<p>Hubo turnos para preguntas donde la gente se animó bastante a participar y si hubiera sido por él la masterclass hubiera durado más y más.</p>
<p>La anécdota de la noche fue una historia sobre Chet Atkins. Se acaba de casar con su actual mujer y vivían en una casa de 2 habitaciones, la de dormir y &#8220;la del músico&#8221; xD donde estudiaba y practicaba y donde se tenían que cocer las habas para cambiar y dominar el mundo. Una día se levantó por la mañana y su puso a ensayar, &#8230; canciones de Chet Atkins, una de esas piezas típicas que pueden parecer chorras, o de canciones de niños (pero de eso nada) al levantarse su mujer y escucharle:</p>
<blockquote><p>mujer: ¿¿pero qué estás tocando? O_o ¡¡eso es lo que tararea mi padre!! eso es perder el tiempo, ¿no se supone que esto era el cuarto donde &#8220;El Músico&#8221; tenía que crecer e inspirarse? ¿estudiar complicados pasajes del jazz más enrevesado?</p>
<p>Carl: cariño, pero esto&#8230; esto es importante, es Chet!! Tengo que dominarlo!</p>
<p>mujer: Pamplinas! Eso es perder el tiempo y tocar tonterías.</p></blockquote>
<p>En este momento la mujer se va de casa refunfuñando y Carl continúa practicando esas melodías durante 3 horas cuando recibe una llamada.</p>
<blockquote><p>teléfono: ¿oiga? Carl Verheyen, buscamos un músico de sesión para mañana a primera hora, ¿sabe grabar al estilo Chet Atkins? Son para 2 cuñas de 30 y 60 segundos para una cadena de supermercados.</p>
<p>Carl: Sí, por supuesto, allí estaré.</p></blockquote>
<p>Al día siguiente Carl acudió al estudio, le propusieron una tonadilla en la tonalidad de C, que el transportó a E, la cambió bastante, hizo el arreglo y grabó ambas cuñas en cosa de 45 minutos (nos tocó el extracto). Por una hora de estudio pagaban según convenio $80 pero como era el único música era el principal luego percibió el doble, $160. No está mal por 45 minutos de trabajo. El se fue feliz a casa, día productivo.</p>
<p>El asunto es que ese jingle fue el usado en todos los supermercados de una cadena repartida por todo USA y por tema de royalties cada vez que se reproducía tenían que pagarle, es más, cada vez que la cambiarán también, con el detalle importante de que era la melodía para decir las ofertas del día, luego la cambiaban todos los días en todos los supermercados. &#8220;Hoy, en nuestro apartado de frutas tenemos, oferta manzanas a tanto&#8221;. Esto le supuso un sobresueldo de aproximadamente $1000 durante 4 años y medio (tengamos en cuenta que hace muchos años eso era mucho más dinero que hoy) y todo por 45 minutos de trabajo gracias a hacer el melón tocándo cancioncitas &#8220;chorras&#8221; al estilo Chet Atkins. Con eso se pagó la casa, entre otras cosas <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Muchas gracias a la gente de <a title=\"Academia Europa Musical Valencia\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2FjYWRlbWlhZXVyb3BhLmVzLw==">Academia Musical Europa</a>, que llevaban cámara y me han pasado las fotos (aunque yo ahora soy de <a title=\"L'espai musical\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5sZXNwYWkubmV0Lw==">L&#8217;espai Musical</a> jeje )</p>
<p>Lo dicho, guitarrista 100% recomendable, me dijo que volvería a Valencia en marzo con su banda, así que no os lo perdáis! <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzEwL3ZlcmhleWVuX3ZlY3RfYmcucG5n"><img class="aligncenter size-full wp-image-700" title="verheyen_vect_bg" src="http://vierito.es/wordpress/wp-content/uploads/2009/10/verheyen_vect_bg.png" alt="verheyen_vect_bg" width="480" height="341"/></a><br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDIvMTcvY29sZHBsYXktdnMtam9lLXNhdHJpYW5pLw==" rel=\"bookmark\" title=\"February 17, 2009\">Coldplay VS Joe Satriani</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTEvMDQvdGhlLW5pZ2h0cy1zb3VsLw==" rel=\"bookmark\" title=\"November 4, 2008\">The Night&#8217;s Soul</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDMvMjgvY29uY2llcnRvLWFuZHktdGltbW9ucy8=" rel=\"bookmark\" title=\"March 28, 2008\">Concierto Andy Timmons</a></li>
</ul>
<p><!-- Similar Posts took 8.486 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=693" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/10/28/masterclass-con-carl-verheyen/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Port-Knocking y Crypt-Port-Knocking</title>
		<link>http://vierito.es/wordpress/2009/09/25/port-knocking-y-crypt-port-knocking/</link>
		<comments>http://vierito.es/wordpress/2009/09/25/port-knocking-y-crypt-port-knocking/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:28:05 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Crypt Port Knocking]]></category>
		<category><![CDATA[hping]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[Port Knocking]]></category>
		<category><![CDATA[Replay Attack]]></category>
		<category><![CDATA[Single Packet Authentication]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=687</guid>
		<description><![CDATA[Estaba curioseando por foros de Gentoo cuando me encontré un post interesante sobre una evolución del clásico Port-Knocking,  pero vayamos por pasos.


Port-Knocking
Cuando nosotros tenemos un servicio en un servidor, éste, escucha en uno o varios puertos las peticiones externas. Este puerto deberá estar abierto en el firewall para que se puedan efectuar estas conexiones. La [...]]]></description>
			<content:encoded><![CDATA[<p>Estaba curioseando por <a title=\"Gentoo Forums\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2ZvcnVtcy5nZW50b28ub3JnLw==">foros de Gentoo</a> cuando me encontré un post interesante sobre una <a title=\"Crytp Port Knocking\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2ZvcnVtcy5nZW50b28ub3JnL3ZpZXd0b3BpYy10LTY4Nzk1Ni5odG1s">evolución del clásico Port-Knocking</a>,  pero vayamos por pasos.</p>
<h3><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA5L3ByaXNvbi5qcGc="></a></h3>
<p style="text-align: center;"><img class="size-full wp-image-688  aligncenter" title="prison" src="http://vierito.es/wordpress/wp-content/uploads/2009/09/prison.jpg" alt="prison" width="470" height="300" /></p>
<h2>Port-Knocking</h2>
<p>Cuando nosotros tenemos un servicio en un servidor, éste, escucha en uno o varios puertos las peticiones externas. Este puerto deberá estar abierto en el firewall para que se puedan efectuar estas conexiones. La idea del <strong>Port Knocking</strong> es que el puerto del servicio permanece cerrado y <strong>sólo se abrirá bajo una petición externa basada en un paquete o grupo de paquetes específicos</strong>, previamente conocidos por el cliente, que serán enviados al servidor. Es decir, yo tendría mi servidor ssh con el puerto 22 cerrado y cuando un cliente envíe un paquete con ciertas características a otro puerto entonces el puerto 22 se abriría temporalmente para ese cliente. De este modo permanecería <strong>escondido</strong> antes escaneos de puertos e intentos automatizados de fuerza bruta, por ejemplo. Este sistema se podría ir mejorando:</p>
<ul>
<li>que tenga que ser <strong>una secuencia</strong> de puertos y no uno sólo</li>
<li>que además tengan que ser unos <strong>puertos de origen específicos</strong></li>
<li>combinarlo con otras herramientas: <strong>Portsentry</strong>, denyhost, fail2ban (destaco la primera herramienta  ya que es una forma fácil de banear intentos de escaneos sin el uso de un IDS completo ni cortafuegos)</li>
<li>jugar con las FLAGs TCP y opciones poco comunes de los paquetes</li>
<li><strong>abrir el puerto sólo para la IP llamante</strong>, no todas</li>
<li>&lt;paranoic&gt;requerir una <strong>temporización</strong> determinada (algo elástica, claro está) entre en el envío de los paquetes&lt;/paranoic&gt;</li>
<li>y mil cosas que se nos puedan ocurrir</li>
</ul>
<p><span id="more-687"></span></p>
<p>Para estos menesteres existen varias herramientas pero todo suelen terminar siendo scripts que escuchan los puertos y van cambiando reglas del cortafuegos y los servicios. Pero no todo es bonito e ideal, imaginad que no tienes una <em>puerta trasera</em>, ¿qué ocurre si cae el servicio encargado de escuchar el portknocking? Te quedas tú sin poder acceder. Deberías dejarte una <em>IP blanca</em> por ejemplo, que siempre tuviera acceso al puerto sin mayor barrera. O tener otro servicio que compruebe si el primer servicio está online y haga de watchdog xD.</p>
<p>Pero ¿cuál es la debilidad clave un sistema así? <strong>Replay Attack</strong>. Me explico, si mi máquina está en una subred y otra máquina de esa subred ha sido comprometida, ésta podría estar usando un sniffer (tcpdump, wireshark) y capturar la secuencia usada para la apertura de puertos. Y aquí es donde entra lo que he venido a contar.</p>
<h2>Crypt-Port-Knocking</h2>
<p>Vamos a cortar por lo sano esa debilidad: <strong>Single Packet Authentication</strong>. Esta manera de proceder difiere en que vamos a llamar a un <strong>puerto aleatorio cada vez</strong> y la conexión con el servicio también se hará en un puerto aleatorio cada vez pero lo que es más importante añadiremos i<strong>nformación cifrada</strong> en el paquete gracias a <strong>OpenSSL</strong> con lo que se quiera hacer (en este caso usando <span>256-bit AES-cbc, se podría mejorar para ultraparanoicos™  usando un cifrado asimétrico</span> con GPG, por ejemplo). Podríamos pensar que para evitar ataques replay en la información cifrada se podría incluir datos variantes en el tiempo, cambios preacordados de la clave de cifrado, usar iteraciones en una función de hashing pero se complica el tema cuando hay muchos usuarios. Para ello, es mejor opción aprovechar que podemos tener 16bytes de datos aleatorios en el paquete que luego podemos identificar gracias a un hash del mismo e ignorar todos los paquetes duplicados. Para crear los paquetes a medida podremos usar <strong>hping</strong>.</p>
<p>Para hacer uso de las características del Single Packet Authentication el autor del post, BoneKracker, ha creado una serie de <strong>scripts en bash</strong>, formados por un cliente y un servidor de una forma bastante clara y transparente. <a title=\"Crytp Port Knocking\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2ZvcnVtcy5nZW50b28ub3JnL3ZpZXd0b3BpYy10LTY4Nzk1Ni5odG1s">Echadle un vistazo</a> que ahí está todo el código y con una explicación más extensa.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDMvMjgvZGVqYXItYm9uaXRvLXVuLXNlcnZlci1zc2gtcGFydGUtMS8=" rel=\"bookmark\" title=\"March 28, 2008\">Dejar bonito un server SSH &#8211; Parte 1</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDcvMTAvY2FtcHVzLXBhcnR5LTA4LXRhbGxlci1kZS1hbnRlbmFzLXktY2hhcmxhLXNvYnJlLXNlcnZpZG9yZXMv" rel=\"bookmark\" title=\"July 10, 2008\">[Campus Party 08] Taller de antenas y charla sobre servidores</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDMvMzEvZGVqYXItYm9uaXRvLXVuLXNlcnZlci1zc2gtcGFydGUtMi8=" rel=\"bookmark\" title=\"March 31, 2008\">Dejar bonito un server SSH &#8211; Parte 2</a></li>
</ul>
<p><!-- Similar Posts took 9.846 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=687" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/09/25/port-knocking-y-crypt-port-knocking/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Arduino MEGA y módulo XBee &#8211; Instalación en gentoo</title>
		<link>http://vierito.es/wordpress/2009/09/19/arduino-mega-y-modulo-xbee-instalacion-en-gentoo/</link>
		<comments>http://vierito.es/wordpress/2009/09/19/arduino-mega-y-modulo-xbee-instalacion-en-gentoo/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 23:37:13 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[electronics]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Arduino Mega]]></category>
		<category><![CDATA[Arduino XBee Shield]]></category>
		<category><![CDATA[ATMEL]]></category>
		<category><![CDATA[AVR]]></category>
		<category><![CDATA[avr-gcc]]></category>
		<category><![CDATA[crossdev]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[microcontrolador]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=675</guid>
		<description><![CDATA[Mageles, Jaime y Bea me regalaron una Arduino MEGA! Fue una gran sorpresa y además la acompañaron del módulo wireless XBee Shield que usa tecnología Zigbee, que proporciona comunicación inalámbrica entre placas de este tipo u otros dispositivos Zigbee.

Para quien no lo conozca, las Arduino son una plataforma de desarrollo electrónico enfocada al prototipado rápido [...]]]></description>
			<content:encoded><![CDATA[<p><a title=\"Mageles\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL21hZ2VsZXMud29yZHByZXNzLmNvbQ==">Mageles</a>, Jaime y <a title=\"Kuasar\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2t1YXNhci5lcy9ibG9n">Bea</a> me regalaron una Arduino MEGA! Fue una gran sorpresa y además la acompañaron del módulo wireless XBee Shield que usa tecnología Zigbee, que proporciona comunicación inalámbrica entre placas de este tipo u otros dispositivos Zigbee.</p>
<p style="text-align: center;"><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA5L0FyZHVpbm9NZWdhLmpwZw=="><img class="size-medium wp-image-677  aligncenter" title="ArduinoMega" src="http://vierito.es/wordpress/wp-content/uploads/2009/09/ArduinoMega-480x249.jpg" alt="ArduinoMega" width="480" height="249" /></a><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA5L3hiZWUuanBn"><img class="size-full wp-image-680  aligncenter" title="xbee" src="http://vierito.es/wordpress/wp-content/uploads/2009/09/xbee.jpg" alt="xbee" width="300" height="300" /></a></p>
<p>Para quien no lo conozca, las <strong>Arduino</strong> son una plataforma de desarrollo electrónico enfocada al prototipado rápido <strong>cuyas especificaciones son totalmente libres</strong>. Existen varios modelos de placas para los diseños con características más o menos avanzadas y podremos trabajar con ellas tanto en Windows, Mac OS X ó GNU/Linux, sin tener que usar compiladores y/o herramientas de desarrollo de pago.</p>
<p>La mía es una <strong>Arduino MEGA</strong>, que es una mejora de la Duemilanove y la Diecimila gracias a su mayor I/O y capacidad de memoria, entre otras cosas. Las specs principales son:</p>
<ul>
<li>Microcontrolador Atmel AVR 8-bit MEGA1280 @16MHz</li>
<li>128kB FLASH MEM (4kB usados por el bootloader incluído, usado para poder cargar cógido directamente)</li>
<li>8kB SRAM</li>
<li>4kB EEPROM</li>
<li>54 pines digitales (soportan hasta 40mA): I/O, comunicación serie, interrupciones, 8-bit PWM, SPI, I2C, &#8230;</li>
<li>16 pines de entrada analógica con una resolución de 10bits, útil para todo tipo de sensores.</li>
</ul>
<p>Lo primero que tenemos que hacer para empezar a jugar es instalar las herramientas necesarias. En el árbol de paquete de Gentoo hay bastante para microcontroladores AVR (<em>$ eix -S avr</em> ) pero si además queremos afinar e ir a por el kit completo para Arduino tampoco tendremos problemas.</p>
<p><span id="more-675"></span></p>
<p>Necesitaremos una versión de Java (yo uso <em>sun-jdk-1.6</em>) además de los siguiente paquetes:</p>
<p><code># emerge crossdev jikes uisp rxtx</code></p>
<p>Yo, de antes, ya tenía instalado <em>avra</em> (AVR Assembler) y <em>avrdude</em> (para subir y bajar código a las microcontroladoras) que había usado para trastear con las <em>AVR Tiny2313</em>, <em>ATmega32</em> y <em>ATmega64</em> aunque en realidad casi siempre usé el IDE que te proporciona ATMEL de forma gratuita para Windows y alguna vez Bascom-AVR.</p>
<p>Una vez tengamos los paquetes básicos instalados <strong>necesitamos generar el <em>toolchain</em></strong> con el que vamos a trabajar para generar código compatible con la arquitectura AVR. Para ello nos ayudaremos de la herramienta crossdev:</p>
<p><code># crossdev -t avr -s4 --without-headers</code></p>
<p>Tardará un ratillo pero una vez termine ya dispondremos de nuestro flamante compilador <strong><em>avr-gcc</em>.</strong> Ahora nos bajamos el IDE que nos proporciona Arduino en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hcmR1aW5vLmNjL2VuL01haW4vU29mdHdhcmU=">http://www.arduino.cc/en/Main/Software</a>, lo descomprimimos y lo dejamos por ahora ahí. Dependiendo de versiones puede que algunos tengan que hacer un enlace (por supuesto respetando <em>paths</em> y versiones de tu sistema):</p>
<p><code>$ ln -s /usr/lib/binutils/avr/2.19.1/ldscripts/ ~/programs/arduino-0017/ldscripts</code></p>
<p>Dependiendo de distribuciones o la configuración será necesario estar en los grupos <em>tty</em> y <em>uucp</em>, pero para ahorrarte problemas añade el usuario a esos grupos.</p>
<p>Mmmm ¿qué mas necesitamos? Arduino se conecta por USB a nuestro ordenador y el kernel de linux nos proporciona el driver, yo ya lo tenía instalado pero si no:</p>
<p><code>Device Drivers -&gt; USB support -&gt; USB Serial Converter support -&gt; USB FTDI Single Port Serial Driver (EXPERIMENTAL)</code></p>
<p>Lo ponemos como módulo, compilamos y lo cargamos:</p>
<p><code># make modules_install<br />
# modprobe ftdi_sio</code></p>
<p>Conectamos la Arduino y podremos ver si todo funciona:</p>
<p><code># dmesg<br />
usb 4-2: new full speed USB device using uhci_hcd and address 5<br />
usb 4-2: configuration #1 chosen from 1 choice<br />
ftdi_sio 4-2:1.0: FTDI USB Serial Device converter detected<br />
usb 4-2: Detected FT232RL<br />
usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB0</code></p>
<p>OK! <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Volvemos al IDE que ya tenemos descomprimido y lo ejectuamos</p>
<p><code>$ ./arduino<br />
Experimental:  JNI_OnLoad called.<br />
Stable Library<br />
=========================================<br />
Native lib Version = RXTX-2.1-7<br />
Java lib Version   = RXTX-2.1-7</code></p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA5L2FyZHVpbm8wMS5wbmc="><img class="aligncenter size-full wp-image-678" title="arduino01" src="http://vierito.es/wordpress/wp-content/uploads/2009/09/arduino01.png" alt="arduino01" width="480" height="574" /></a></p>
<p>Ahora sólo nos faltará elegir en la configuración que queremos el <em>/dev/ttyUSB0</em> y que estamos usando una placa Arduino MEGA, et voilà!</p>
<p>Para probar el funcionamiento haremos un &#8220;Hello Word&#8221; al estilo electrónica, es decir, hacer parpadear un LED <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Hay ejemplos por ahí pero el código sería:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">const</span> <span style="color: #993333;">int</span> ledPin <span style="color: #339933;">=</span>  <span style="color: #0000dd;">13</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// LED connected to digital pin 13</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	pinMode<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// set pin 13 as output</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">// set the LED on</span>
	delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                  <span style="color: #666666; font-style: italic;">// wait for a second</span>
	digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// set the LED off</span>
	delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                  <span style="color: #666666; font-style: italic;">// wait for a second</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>A ver si busco ratos y hago algo interesante con mi nuevo juguete, ya no hay excusa. Si quieres saber por donde empezar acude a <a title=\"Arduino\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2FyZHVpbm8uY2M=">http://arduino.cc</a><br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTAvMzAvZnByaW50LWxhLWltcGxlbWV0YWNpb24tZGVsLWRyaXZlci8=" rel=\"bookmark\" title=\"October 30, 2008\">[Fprint] La implemetación del driver</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDYvMjEvZWwta2VybmVsLWRlLWxpbnV4LWVuLXByb2Z1bmRpZGFkLw==" rel=\"bookmark\" title=\"June 21, 2008\">El kernel de linux en profundidad</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDkvMjUvcG9ydC1rbm9ja2luZy15LWNyeXB0LXBvcnQta25vY2tpbmcv" rel=\"bookmark\" title=\"September 25, 2009\">Port-Knocking y Crypt-Port-Knocking</a></li>
</ul>
<p><!-- Similar Posts took 9.324 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=675" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/09/19/arduino-mega-y-modulo-xbee-instalacion-en-gentoo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[Campus Party 09] Las crónicas</title>
		<link>http://vierito.es/wordpress/2009/09/07/campus-party-09-las-cronicas/</link>
		<comments>http://vierito.es/wordpress/2009/09/07/campus-party-09-las-cronicas/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 15:13:05 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[campus party]]></category>
		<category><![CDATA[concurso de seguridad]]></category>
		<category><![CDATA[SecurityByDefault]]></category>
		<category><![CDATA[Sistemas de Detección de Intrusos]]></category>
		<category><![CDATA[valencia]]></category>
		<category><![CDATA[wargame]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=629</guid>
		<description><![CDATA[Ya hace más de un mes que terminó la Campus Party en Valencia. Como ya comenté este año la Campus volvió a la Ciudad de las Artes y las Ciencias para bien y para mal. La carpa no tenía nada que ver con la de 2004, era mucho más grande y mejor climatizada aunque una [...]]]></description>
			<content:encoded><![CDATA[<p>Ya hace más de un mes que terminó la <a title=\"Campus Party Valencia\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=d3d3LmNhbXB1cy1wYXJ0eS5lcy8=">Campus Party</a> en Valencia. Como ya comenté <a title=\"Campus Party 2009 Valencia\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDYvMjUvY2FtcHVzLXBhcnR5LTA5LXBsYW5uaW5nLw==">este año la Campus volvió a la Ciudad de las Artes y las Ciencias</a> para bien y para mal. La carpa no tenía nada que ver con la de 2004, era mucho más grande y mejor climatizada aunque una de las tardes (martes o miércoles) el aire acondicionado se estropeó y menuda calina. El mayor inconveniente era la zona de tiendas&#8230; calor, ruido de los compresores, sólo un par de baños cerca, etc. Al final optamos por volvernos a dormir a casa cada noche. Como gran ventaja, volvió el &#8220;ambiente de campus&#8221;, gritos, jaleos, descerebrados soltando burradas, estabas cerca de los amigos, etc <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  eso se echaba de menos en la Feria.</p>
<p>Jaime tenía sus charlas de PHP a las 10 y eso es primerísima hora en la campus, que digo! es una hora inaceptable en la campus! Intentamos llegar a tiempo para poder apoyarle pero durmiendo fuera y acostándonos tarde (más bien cerca del amanecer) era complicado estar antes de las 11. Además se nos juntaba con el suplicio de aparcar y llegar andando desde donde cristo perdió la cruz, al año que viene nos cogemos parking. Este año estuvo a buen precio (no como años anteriores) pero se nos pasó el momento o no nos lo planteamos lo suficiente. El catering a mí me pareció peor que otros años, era otra empresa y encima la CP no dió paella para todos gratis el miércoles como venía siendo tradición&#8230; ratas.</p>
<p>A diferencia de otros años, que ya el domingo disponíamos de las acreditaciones y incluso alguna vez teníamos la tienda puesta de antes, esta vez llegábamos de viaje por la tarde y no fue hasta la noche cuando estuvimos acomodados en el puesto. Así cerquita estábamos <a title=\"kuasar\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2t1YXNhci5lcy9ibG9n">kuasar</a>, Jaime, <a title=\"mageles\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL21hZ2VsZXMud29yZHByZXNzLmNvbQ==">Mageles</a>, <a title=\"TuXeD\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3R1eGVkLnNlcnZlYmxvZy5uZXQ=">TuXeD</a> (a partir del jueves), <a title=\"Ricardo Varela - phobeo\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3Bob2Jlby5jb20=">phobeo</a>, <a title=\"Ernesto Jiménez\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VybmVzdG8tamltZW5lei5jb20v">Ernesto</a> (encantado de conocerte!), <a title=\"Carrie es el mal\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2NhcnJpZWJsb2cud29yZHByZXNzLmNvbS8=">Laura</a>, <a title=\"Ender\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2VuZGVyM25ldC53b3JkcHJlc3MuY29tLw==">Ender</a>, <a title=\"akae usa tanga rosa\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2FrYWUuZXM=">akae</a> y unos cuantos más, justo en el medio de la zona de innovación. Repartidos por el resto de la campus estaban muchos más conocidos pero no terminaría nombrándolos, bueno va, a <a title=\"Flexa\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy50aGVmbGV4YS5jb20v">Flexa</a> sí, que se hizo una camiseta super molona con TOOOOODOS nuestros nicks <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Sigue leyendo!</p>
<p><span id="more-629"></span></p>
<p>Hoy no os traigo un diario detallado, no hay ganas de escribir tanto y además seguro que aburriría, que con el viaje por el Bosnia y Croacia os dejé un misal, por lo menos! El año pasado sí fue un poco más extenso: <a title=\"Campus Party 2008 Parte 1\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDgvMzEvY2FtcHVzLXBhcnR5LTA4LWRpYXJpby1kZS1hLWJvcmRvLXBhcnRlLTEv">Campus Party 08 Parte 1</a> y <a title=\"Campus Party 2008 Parte 2\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDkvMDcvY2FtcHVzLXBhcnR5LTA4LWRpYXJpby1kZS1hLWJvcmRvLXBhcnRlLTIv">Campus Party 08 Parte 2</a></p>
<p>TuXeD dió su <a title=\"TuXeD - Smartcards and Side Channel\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW45VUNJTUw3SW1r">charla sobre Smartcards y Side Channel</a> el jueves por la mañana y yo la mía el sábado sobre <a title=\"vierito5 - Sistemas de Detección de Intrusos\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDgvMDMvY2FtcHVzLXBhcnR5LTA5LXNpc3RlbWFzLWRlLWRldGVjY2lvbi1kZS1pbnRydXNvcy8=">Sistemas de Detección de Intrusos</a>. Hubo cosas interesantes, hasta vino <a title=\"Jose de Castro\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2pvc2VkZWNhc3Ryby5uZXQv">Jose de Castro</a> a tocar! Este año han subido a youtube bastantes <a title=\"Talleres y Conferencias - Campus Party 2009 Valencia\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy55b3V0dWJlLmNvbS92aWV3X3BsYXlfbGlzdD9wPURCRTAyNDU2Rjg2Njk2RTU=">videos con talleres y ponencias</a>.</p>
<p style="text-align: center;"><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L2phaW1lLmpwZw=="><img class="aligncenter size-medium wp-image-632" title="jaime" src="http://vierito.es/wordpress/wp-content/uploads/2009/08/jaime-480x320.jpg" alt="jaime" width="480" height="320" /></a><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L1R1WGVELmpwZw=="><img class="aligncenter size-medium wp-image-633" title="TuXeD" src="http://vierito.es/wordpress/wp-content/uploads/2009/08/TuXeD-480x320.jpg" alt="TuXeD" width="480" height="320" /></a><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L3ZpZXJpdG81XzAxLmpwZw=="><img class="size-medium wp-image-634  aligncenter" title="vierito5_01" src="http://vierito.es/wordpress/wp-content/uploads/2009/08/vierito5_01-320x480.jpg" alt="vierito5_01" width="320" height="480" /></a><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L3ZpZXJpdG81XzAyLmpwZw=="><img class="aligncenter size-medium wp-image-635" title="vierito5_02" src="http://vierito.es/wordpress/wp-content/uploads/2009/08/vierito5_02-480x320.jpg" alt="vierito5_02" width="480" height="320" /></a></p>
<p>Un año más hubo concurso de seguridad, esta vez organizado por <a title=\"SecurityByDefault\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20v">SecurityByDefault</a>, a los cuales fue un placer conocer en persona. El año pasado participamos <a title=\"TuXeD\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3R1eGVkLnNlcnZlYmxvZy5uZXQ=">TuXeD</a>, <a title=\"Amine Taouirsa\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL21hcGV0aXRlbW9ydC5jb20v">Amine</a> y yo juntos y lo ganamos así que este año nos pusimos manos a la obra de nuevo. TuXeD no pudo mirarse nada hasta bien entrado el jueves y el pobre Amín trabajaba en el <a title=\"Restaurante Aleimuna\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2FsZWltdW5hLmVzLw==">restaurante</a> de sus padres  (el cual recomiendo) todos los días full-time así que no tenía más remedio conectarse desde el ordenador del restaurante por vnc a su casa y mirarse las cosillas entre que servía un plato y otro xDDD En fin, menudo plan, aún así el equipo funcionó a la perfección y nos pudimos hacer de nuevo con el primer puesto después de mucho empeño <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Enhorabuena chicos!</p>
<p>El concurso estaba divido en 4 categorías: redes, web, binarios y cripto, para cubrir pruebas de todo tipo. El concurso me gustó mucho, con más nivel que otros años pero&#8230; siempre hay un pero jeje, había demasiado fuerza bruta/suerte. Si acertabas a la primera pan comido si no&#8230; 2 días perdidos, fue el &#8220;fallo/feature&#8221; más criticado por los participantes.</p>
<p>Hubo pruebas de todo tipo, algunas muy originales. Por ejemplo, en redes había obtener que orden de nmap había sido ejecutada viendo una captura o crackear la sharedKey del handshake en una autenticación RADIUS, esta prueba me gustó mucho ya que no existía/teníamos herramienta para hacerlo así que hubo que tirar del RFC y programarse un crackeador (en C). En cripto hubo que crackear un certificado pkcs12 y unos mensajes de twitter en cifrados RC4, en binarios en una había que modificar el comportamiento del programa gracias a un LD_PRELOAD y en otra era un buffer overflow en el cual había que volver a los inicios con el señor Aleph One. En una de las pruebas de web una herramienta de <a title=\"Dani Kachakil\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2thY2hha2lsLmNvbQ==">Dani Kachakil</a> (<a title=\"Dani Kachakil Solución reto criptografía\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDYvMDgvc29sdWNpb24tZGUtbGFzLXBydWViYXMtMTEteS0xMi1kZWwtcmV0by8=">nuestro chico maravillas</a>) nos solventó la papeleta y la web4 fue la única prueba que nos quedó por resolver porque nos quedamos atascado en un detalle&#8230; no acertar el nombre de un fichero php! Había que saltarse la directiva LIMIT de un apache y luego era un Blind SQL. Lástima. Las últimas horas del concurso fueron muy estresantes,  la noche del viernes Skull y Dade se había puesto manos a la obra hasta el amanecer y se posicionaron segundos, ellos había resuelto la web4 que valía más puntos que la cripto3 así que si resolvían una prueba más nos adelantaban. Estaban a puntito a puntito de obtener la solución de la cripto4 con la que nos adelantaban pero a falta de 15minutos pudimos sacarla nosotros y nos alejamos <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Maldito LSB! Probamos decenas de herramientas! <a title=\"Rooibo - Joca\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3Jvb2liby53b3JkcHJlc3MuY29tLw==">Joca</a> y <a title=\"cucaracha\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2N1Y2FyYWNoYS5pbmVydGluYy5vcmcvdjQv">cucaracha</a> estuvieron muy muy fuertes en la competición así que felicidades a ellos también.</p>
<p>No me he extendido mucho en las pruebas del wargame pero la gente de <a title=\"SecurityByDefault\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20v">SecurityByDefault</a> se han currado unos posts con las soluciones por categorías: <a title=\"Solución Redes Wargame Campus Party 2009\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20vMjAwOS8wOC8xNC13YXJnYW1lLWNwMjAwOS1wcnVlYmFzLWRlLXJlZGVzLmh0bWw=">Redes</a>, <a title=\"Solución Web Wargame Campus Party 2009\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20vMjAwOS8wOC8yNC13YXJnYW1lLWNwMjAwOS1wcnVlYmFzLWRlLXdlYi5odG1s">Web</a>, <a title=\"Solución Criptografía Wargame Campus Party 2009\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20vMjAwOS8wOC8zNC13YXJnYW1lLWNwMjAwOS1wcnVlYmFzLWRlLmh0bWw=">Cripto</a> y <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20vMjAwOS8wOS80NC13YXJnYW1lLWNwMjAwOS1wcnVlYmFzLWRlLWJpbmFyaW9zLmh0bWw=">Binarios</a>.</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L3ByZW1pb3NfY3AyMDA5LmpwZw=="><img class="aligncenter size-medium wp-image-636" title="premios_cp2009" src="http://vierito.es/wordpress/wp-content/uploads/2009/08/premios_cp2009-480x320.jpg" alt="premios_cp2009" width="480" height="320" /></a><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L3ZpZXJpdG81X3dhcmdhbWUuanBn"><img class="aligncenter size-medium wp-image-637" title="vierito5_wargame" src="http://vierito.es/wordpress/wp-content/uploads/2009/08/vierito5_wargame-480x320.jpg" alt="vierito5_wargame" width="480" height="320" /></a></p>
<p>Ricardo y Ernesto participaron en un par de competiciones y se las llevaron al agua las 2, si es que están hechos unos <em>crás</em>. Luego Ricardo confesó que había amenazado a los contrincantes para que huyeran despavoridos.</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L1JpY2FyZG8teS1Fcm5lc3RvLmpwZw=="><img class="aligncenter size-medium wp-image-638" title="Ricardo y Ernesto" src="http://vierito.es/wordpress/wp-content/uploads/2009/08/Ricardo-y-Ernesto-480x360.jpg" alt="Ricardo y Ernesto" width="480" height="360" /></a></p>
<p>La última noche la pasamos de buen rollo en los jardines de al lado de la CAC, como tiene que ser, tirados en el césped y con spirits!</p>
<p>Os pondría más fotos y más decentes pero no tenía cámara así que sólo tengo las que salen por el flickr de la campus xDD</p>
<p>Otro año más, a poder ser mejor.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDkvMDcvY2FtcHVzLXBhcnR5LTA4LWRpYXJpby1kZS1hLWJvcmRvLXBhcnRlLTIv" rel=\"bookmark\" title=\"September 7, 2008\">[Campus Party 08] Diario de a bordo &#8211; Parte 2</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDgvMDkvZW4tYmVybGluLw==" rel=\"bookmark\" title=\"August 9, 2008\">En Berlin!</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDYvMjUvY2FtcHVzLXBhcnR5LTA5LXBsYW5uaW5nLw==" rel=\"bookmark\" title=\"June 25, 2009\">[Campus Party 09] Planning</a></li>
</ul>
<p><!-- Similar Posts took 10.263 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=629" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/09/07/campus-party-09-las-cronicas/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Crackeador de hashes MD5 en C y OpenSSL</title>
		<link>http://vierito.es/wordpress/2009/08/28/crackeador-de-hashes-md5-en-c-y-openssl/</link>
		<comments>http://vierito.es/wordpress/2009/08/28/crackeador-de-hashes-md5-en-c-y-openssl/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 11:43:03 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[crackeador]]></category>
		<category><![CDATA[cracker]]></category>
		<category><![CDATA[cracking]]></category>
		<category><![CDATA[criptografía]]></category>
		<category><![CDATA[diccionario]]></category>
		<category><![CDATA[EVP_DigestInit]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[MD5]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[password cracking]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=642</guid>
		<description><![CDATA[Un hash es una función criptográfica de tipo resumen cuyo objetivo es identificar casi unívocamente un conjunto de datos. Pretende ser una función inyectiva, es decir, que para una salida (valor imagen) solo exista una entrada (valor origen) pero debido a que su salida está limitada en tamaño es posible que para entradas diferentes existan [...]]]></description>
			<content:encoded><![CDATA[<p>Un hash es una función criptográfica de tipo resumen cuyo objetivo es identificar <em>casi unívocamente</em> un conjunto de datos. Pretende ser una función inyectiva, es decir, que para una salida (valor imagen) solo exista una entrada (valor origen) pero debido a que su salida está limitada en tamaño es posible que para entradas diferentes existan claves resultantes iguales. Eso sería una colisión y una función hash deberá tener una salida pequeña equilibrada con su resistencia a colisiones. MD5 tiene una salida fija de 128 bits, lo que vienen siendo 32 dígitos en hexadecimal.</p>
<p>Primero de todo vamos a hacer un programa que nos permita calcular el hash md5 de un string que se le pase y luego ya pasaremos al crackeador.</p>
<p>Sería más fácil hacer un script en bash o perl gracias a la utilidad CLI de OpenSSL, a la hora de calcular un solo hash no importa mucho la velocidad pero si luego queremos hacer un pequeño crackeador no podemos partir de algo que ya sabemos que va a ser mucho más lento. Así que lo que vamos a usar es C y la librería de OpenSSL.</p>
<p>Si no sabemos por donde empezar un extracto del man:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">$ man md5
...
<span style="color: #202020;">SYNOPSIS</span>
&nbsp;
<span style="color: #339933;">#include </span>
&nbsp;
        <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>MD5<span style="color: #009900;">&#40;</span><span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>d<span style="color: #339933;">,</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> n<span style="color: #339933;">,</span>
                         <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>md<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #993333;">int</span> MD5_Init<span style="color: #009900;">&#40;</span>MD5_CTX <span style="color: #339933;">*</span>c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #993333;">int</span> MD5_Update<span style="color: #009900;">&#40;</span>MD5_CTX <span style="color: #339933;">*</span>c<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> <span style="color: #993333;">void</span> <span style="color: #339933;">*</span>data<span style="color: #339933;">,</span>
                         <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> len<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #993333;">int</span> MD5_Final<span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>md<span style="color: #339933;">,</span> MD5_CTX <span style="color: #339933;">*</span>c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
...
<span style="color: #202020;">DESCRIPTION</span>
...
<span style="color: #202020;">Applications</span> should use the higher level functions EVP_DigestInit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span> etc. <span style="color: #202020;">instead</span> of calling the hash functions directly.
...</pre></div></div>

<p><span id="more-642"></span><br />
Vemos que podríamos añadir esa librería y usar las funciones MD5_Init(), MD5_Update y MD5_Final pero ya nos avisan que deberíamos usar unas funciones de más alto nivel así que: <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by9FVlBfRGlnZXN0SW5pdC5odG1s">EVP_DigestInit</a></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">$ man EVP_DigestInit
...
<span style="color: #202020;">SYNOPSIS</span>
        <span style="color: #339933;">#include </span>
&nbsp;
        <span style="color: #993333;">void</span> EVP_MD_CTX_init<span style="color: #009900;">&#40;</span>EVP_MD_CTX <span style="color: #339933;">*</span>ctx<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        EVP_MD_CTX <span style="color: #339933;">*</span>EVP_MD_CTX_create<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #993333;">int</span> EVP_DigestInit_ex<span style="color: #009900;">&#40;</span>EVP_MD_CTX <span style="color: #339933;">*</span>ctx<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> EVP_MD <span style="color: #339933;">*</span>type<span style="color: #339933;">,</span> ENGINE <span style="color: #339933;">*</span>impl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #993333;">int</span> EVP_DigestUpdate<span style="color: #009900;">&#40;</span>EVP_MD_CTX <span style="color: #339933;">*</span>ctx<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> <span style="color: #993333;">void</span> <span style="color: #339933;">*</span>d<span style="color: #339933;">,</span> size_t cnt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #993333;">int</span> EVP_DigestFinal_ex<span style="color: #009900;">&#40;</span>EVP_MD_CTX <span style="color: #339933;">*</span>ctx<span style="color: #339933;">,</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>md<span style="color: #339933;">,</span>
               <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> <span style="color: #339933;">*</span>s<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>De paso, aprovecho para desaconsejar el uso de MD5 a día de hoy y como mínimo usar SHA1 o incluso dejarte de monsergas y pasar a SHA256, SHA512.</p>
<p>He intentado que el programa sea bastante fácil de entender y seguir, ahí va:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include</span>
<span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #339933;">#ifdef DEBUG</span>
<span style="color: #339933;">#define DBG 1</span>
<span style="color: #339933;">#else</span>
<span style="color: #339933;">#define DBG 0</span>
<span style="color: #339933;">#endif</span>
&nbsp;
<span style="color: #339933;">#define MAX_SIZE_WORD 200</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>simple_digest<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span>algth<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>buffer<span style="color: #339933;">,</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> len<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> <span style="color: #339933;">*</span>olen<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
	EVP_MD <span style="color: #339933;">*</span>m<span style="color: #339933;">;</span>
	EVP_MD_CTX ctx<span style="color: #339933;">;</span>
	<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>ret<span style="color: #339933;">;</span>
&nbsp;
	OpenSSL_add_all_digests <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>m <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>EVP_MD<span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> EVP_get_digestbyname<span style="color: #009900;">&#40;</span>algth<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">return</span> NULL<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> malloc<span style="color: #009900;">&#40;</span>EVP_MAX_MD_SIZE<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">return</span> NULL<span style="color: #339933;">;</span>
&nbsp;
	EVP_DigestInit<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>ctx<span style="color: #339933;">,</span> m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	EVP_DigestUpdate<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>ctx<span style="color: #339933;">,</span> buffer<span style="color: #339933;">,</span> len<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	EVP_DigestFinal<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>ctx<span style="color: #339933;">,</span> ret<span style="color: #339933;">,</span> olen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> ret<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> hex_print<span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>buff<span style="color: #339933;">,</span><span style="color: #993333;">int</span> len<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> MAX_SIZE_WORD <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
		strncpy<span style="color: #009900;">&#40;</span>buff<span style="color: #339933;">,</span> argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> strlen<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// calculate string's md5 hash</span>
		out <span style="color: #339933;">=</span> simple_digest<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;md5&quot;</span><span style="color: #339933;">,</span>buff<span style="color: #339933;">,</span>strlen<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,&amp;</span>amp<span style="color: #339933;">;</span>olen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// print results</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>DBG<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Word: %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Hash: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		hex_print<span style="color: #009900;">&#40;</span>out<span style="color: #339933;">,</span>olen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Not computing hash<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>I can feel your dark side... ;)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Compilamos y probamos:</p>
<pre>$ gcc mymd5.c -o mymd5 -l ssl
$ ./mymd5 passworddeelite
5b4f50aa173b977e4cd0850cf7c52bd0</pre>
<p>Podemos comprobar su correcto funcionamiento comparando con webs online que ofrecen utilidades para calcular hashes MD5 [<a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5taXJhY2xlc2FsYWQuY29tL3dlYnRvb2xzL21kNS5waHA=">1</a>], [<a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL21kNS1oYXNoLW9ubGluZS53YXJheGUudXMv">2</a>].</p>
<p>Y ahora a por el crackeador. No vamos a intentar buscar colisiones sino a partir de un diccionario sacar la clave. Le pasaremos como parámetros un fichero con el hash y un diccionario con una palabra por línea.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include</span>
<span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #339933;">#ifdef DEBUG</span>
<span style="color: #339933;">#define DBG 1</span>
<span style="color: #339933;">#else</span>
<span style="color: #339933;">#define DBG 0</span>
<span style="color: #339933;">#endif</span>
&nbsp;
<span style="color: #339933;">#define MAX_SIZE_BUFF 200</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>simple_digest<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span>algth<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>buffer<span style="color: #339933;">,</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> len<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> <span style="color: #339933;">*</span>olen<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
	EVP_MD <span style="color: #339933;">*</span>m<span style="color: #339933;">;</span>
	EVP_MD_CTX ctx<span style="color: #339933;">;</span>
	<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>ret<span style="color: #339933;">;</span>
&nbsp;
	OpenSSL_add_all_digests <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>m <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>EVP_MD<span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> EVP_get_digestbyname<span style="color: #009900;">&#40;</span>algth<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">return</span> NULL<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> malloc<span style="color: #009900;">&#40;</span>EVP_MAX_MD_SIZE<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">return</span> NULL<span style="color: #339933;">;</span>
&nbsp;
	EVP_DigestInit<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>ctx<span style="color: #339933;">,</span> m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	EVP_DigestUpdate<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>ctx<span style="color: #339933;">,</span> buffer<span style="color: #339933;">,</span> len<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	EVP_DigestFinal<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>ctx<span style="color: #339933;">,</span> ret<span style="color: #339933;">,</span> olen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> ret<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> hex_print<span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>buff<span style="color: #339933;">,</span><span style="color: #993333;">int</span> len<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	        <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Usage: mymd5crack /path/to/hashfile /path/to/dictfile<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        	exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	FILE <span style="color: #339933;">*</span>hashfile<span style="color: #339933;">;</span>
	hashfile <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>hashfile<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		perror<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	FILE <span style="color: #339933;">*</span>dictfile<span style="color: #339933;">;</span>
	dictfile <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>dictfile<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		perror<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	read <span style="color: #339933;">=</span> getline<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>line<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>len<span style="color: #339933;">,</span> hashfile<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>strlen<span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #0000dd;">33</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;ERROR: Invalid hash length %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>strlen<span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	
&nbsp;
	strtohex<span style="color: #009900;">&#40;</span>line<span style="color: #339933;">,</span>hash<span style="color: #339933;">,</span><span style="color: #0000dd;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>DBG<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Input hash: %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Input buffer from hash: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			hex_print<span style="color: #009900;">&#40;</span>hash<span style="color: #339933;">,</span><span style="color: #0000dd;">16</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//Read words in a loop</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>read <span style="color: #339933;">=</span> getline<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>line<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>len<span style="color: #339933;">,</span> dictfile<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> strlen<span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			tries<span style="color: #339933;">++;</span>	
&nbsp;
			<span style="color: #666666; font-style: italic;">//Copy word into buffer</span>
			strcpy<span style="color: #009900;">&#40;</span>buff_words<span style="color: #339933;">,</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>DBG<span style="color: #009900;">&#41;</span>
				<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Input buffer from dict: %s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>buff_words<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// compute md5</span>
			out <span style="color: #339933;">=</span> simple_digest<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;md5&quot;</span><span style="color: #339933;">,</span>buff_words<span style="color: #339933;">,</span>strlen<span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,&amp;</span>amp<span style="color: #339933;">;</span>olen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>DBG<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;For password %s MD5 is: &quot;</span><span style="color: #339933;">,</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				hex_print<span style="color: #009900;">&#40;</span>out<span style="color: #339933;">,</span>olen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">//Compare computed md5 with hash</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>memcmp<span style="color: #009900;">&#40;</span>out<span style="color: #339933;">,</span>hash<span style="color: #339933;">,</span><span style="color: #0000dd;">16</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
				<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;PASSWORD FOUND!! in %d tries: %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tries<span style="color: #339933;">,</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				fclose<span style="color: #009900;">&#40;</span>hashfile<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				fclose<span style="color: #009900;">&#40;</span>dictfile<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				free<span style="color: #009900;">&#40;</span>out<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span>
					free<span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			free<span style="color: #009900;">&#40;</span>out<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>A word from dict is too long... cough*, cough*...<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Password not found in %d tries!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tries<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span>
		free<span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	fclose<span style="color: #009900;">&#40;</span>hashfile<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	fclose<span style="color: #009900;">&#40;</span>dictfile<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Y comprobamos su funcionamiento metiendo en /tmp/hash el hash obtenido anteriormente:</p>
<pre>$ gcc mymd5cracker.c -o mymd5cracker -l ssl
$ ./mymd5cracker /tmp/hash /tmp/dict
PASSWORD FOUND!! in 6 tries: passworddeelite</pre>
<p>Premio! Podéis ir en paz.</p>
<p>Para descargar <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L215bWQ1LmM=">mymd5.c</a> y <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L215bWQ1Y3JhY2tlci5j">mymd5cracker.c</a></p>
<p>Gracias a <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3R1eGVkLnNlcnZlYmxvZy5uZXQ=">TuXeD</a> que siempre está ahí para echar una mano.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDQvMTgvZGVzY2lmcmFuZG8tdW4tcmV0by1kZWwtZmJpLw==" rel=\"bookmark\" title=\"April 18, 2009\">Descifrando un reto del FBI</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDYvMjEvZWwta2VybmVsLWRlLWxpbnV4LWVuLXByb2Z1bmRpZGFkLw==" rel=\"bookmark\" title=\"June 21, 2008\">El kernel de linux en profundidad</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDUvMjIvc29sdWNpb25lcy1kZWwtcmV0by1kZS1jcmlwdG9ncmFmaWEtcGFydGUtMi8=" rel=\"bookmark\" title=\"May 22, 2009\">Soluciones del reto de criptografía &#8211; Parte 2</a></li>
</ul>
<p><!-- Similar Posts took 10.603 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=642" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/08/28/crackeador-de-hashes-md5-en-c-y-openssl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Va de pre-fetching, Wordpress y links malintencionados</title>
		<link>http://vierito.es/wordpress/2009/08/13/va-de-pre-fetching-wordpress-y-links-malintencionados/</link>
		<comments>http://vierito.es/wordpress/2009/08/13/va-de-pre-fetching-wordpress-y-links-malintencionados/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 01:02:48 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[fallo de seguridad]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[firefox 3.5]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[pre-fetching]]></category>
		<category><![CDATA[vulnerabilidad]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress 2.8.3]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=620</guid>
		<description><![CDATA[Como más de uno sabrá ya, ha salido a la luz una vulnerabilidad en Wordpress 2.8.3 mediante la cual se puede resetear el password de administrador con un link malicioso (maliiiiiiiiiigno) como el siguiente:
http://DOMAIN_NAME.TLD/wordpress/wp-login.php?action=rp&#38;key=o7naCKN3OoeU2KJMMsag
Hasta aquí normal, de vez en cuando salen vulnerabilidades, además cuando recibes un correo (por ejemplo) con el link maloso te das [...]]]></description>
			<content:encoded><![CDATA[<p>Como más de uno sabrá ya, ha salido a la luz una <a title=\"Vulnerabilidad Wordpress 2.8.3\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2xpc3RzLmdyb2sub3JnLnVrL3BpcGVybWFpbC9mdWxsLWRpc2Nsb3N1cmUvMjAwOS1BdWd1c3QvMDcwMTM5Lmh0bWw=">vulnerabilidad en Wordpress 2.8.3</a> mediante la cual se puede <strong>resetear el password de administrador</strong> con un link malicioso (maliiiiiiiiiigno) como el siguiente:</p>
<pre><em><em><a title=\"Link malicioso Wordpress 2.8.3\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RvbWFpbl9uYW1lLnRsZC93b3JkcHJlc3Mvd3AtbG9naW4ucGhwP2FjdGlvbj1ycCZhbXA7a2V5PW83bmFDS04zT29lVTJLSk1Nc2Fn">http://DOMAIN_NAME.TLD/wordpress/wp-login.php?action=rp&amp;key=o7naCKN3OoeU2KJMMsag</a></em></em></pre>
<p>Hasta aquí normal, de vez en cuando salen vulnerabilidades, además cuando recibes un correo (por ejemplo) con el link maloso te das cuenta de que hay gato encerrado.. pero ¿puede haber otros factores? Uhm, sí. ¿Qué tal los <a title=\"Peligros de los acortadores de URLs\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zZWN1cml0eWJ5ZGVmYXVsdC5jb20vMjAwOS8wNy9hY29ydGFuZG8tbGEtc2VndXJpZGFkLmh0bWw=">acortadores de direcciones</a>? No se vería en principio a donde vas.</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA4L2J1Zy1mZWF0dXJlLmpwZw=="><img class="aligncenter size-medium wp-image-621" title="bug-feature" src="http://vierito.es/wordpress/wp-content/uploads/2009/08/bug-feature-480x360.jpg" alt="bug-feature" width="480" height="360" /></a></p>
<p>Por otro lado, hace un par de días actualicé Firefox a la versión 3.5.2 y esta mañana me he dado cuenta de que tiene activado un <strong>pre-fetch</strong> de links para navegar de un modo más rápido, es decir, precarga la primera búsqueda de google, precarga el siguiente post del blog que estás leyendo, etc. ¿Precarga un link malicioso que has recibido intentando explotar el bug anterior?</p>
<p>No me parece <strong>nada segura</strong> este tipo de<em> navegación acelerada</em> así que para desactivar esta opción se puede entrar en el <a title=\"about:config\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=YWJvdXQ6Y29uZmln">about:config</a> y desactivarla:</p>
<p><code>network.prefetch-next = false</code></p>
<p>Y ahora el mundo es un poquito mejor (de hecho ya han ido llegando correos maliciosos por algún sitio intentando explotarlo).</p>
<p>Sobre Wordpress, ó se actualiza a la versión 2.8.4 ó se cambia <a title=\"Vulnerabilidad Wordpress 2.8.3\" href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5kcmFnb25qYXIub3JnL3Jlc2V0ZW8tcmVtb3RvLWRlbC1wYXNzd29yZC1kZS1hZG1pbi1lbi13b3JkcHJlc3MueGh0bWw=">a mano</a> el código vulnerable.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDQvMTAvYnVzcXVlZGFzLWN1cmlvc2FzLXZvbHVtZW4tMi8=" rel=\"bookmark\" title=\"April 10, 2009\">Búsquedas curiosas &#8211; Volumen 2</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDUvMjIvc29sdWNpb25lcy1kZWwtcmV0by1kZS1jcmlwdG9ncmFmaWEtcGFydGUtMi8=" rel=\"bookmark\" title=\"May 22, 2009\">Soluciones del reto de criptografía &#8211; Parte 2</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMTEvMjEvcGFyYS1sb3MtYW1hbnRlcy1kZS14a2NkLWxsZWdhLw==" rel=\"bookmark\" title=\"November 21, 2008\">Para los amantes de XKCD llega&#8230;</a></li>
</ul>
<p><!-- Similar Posts took 9.314 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=620" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/08/13/va-de-pre-fetching-wordpress-y-links-malintencionados/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Cuestión de optimización</title>
		<link>http://vierito.es/wordpress/2009/08/10/cuestion-de-optimizacion/</link>
		<comments>http://vierito.es/wordpress/2009/08/10/cuestion-de-optimizacion/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 19:37:54 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[Opinión]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[cat]]></category>
		<category><![CDATA[eficiencia]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[optimización]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=255</guid>
		<description><![CDATA[Y es que se ha perdido el romanticismo&#8230; xD
A día de hoy contamos con ordenadores chorrecientas veces más rápidos que hace pocos años y cuando se programa haces pruebas con sistemas de 3GHz, varios MB de cache y 2GB de RAM mínimo y todo tira para adelante. Bueno, todo tira hasta cierto punto, tus programas [...]]]></description>
			<content:encoded><![CDATA[<p>Y es que se ha perdido el romanticismo&#8230; xD</p>
<p>A día de hoy contamos con ordenadores chorrecientas veces más rápidos que hace pocos años y cuando se programa haces pruebas con sistemas de 3GHz, varios MB de cache y 2GB de RAM mínimo y todo tira para adelante. Bueno, todo tira hasta cierto punto, tus programas luego se van a estar ejecutando juntos con otras decenas de programas o simplemente se van a estar ejecutando constantemente y vas a perder un gran porcentaje de la capacidad de proceso de cómo lo podrías estar haciendo.</p>
<p>Bueno, y es normal, cosas de la comodidad, <strong>yo el primero</strong>. Ahora te quedas tranquilo con que funcione, en los 80 tenía que funcionar y caber en 64kB de RAM. No digo que se programe peor (seguramente sí xD) pero ya no nos fijamos en muchos detalles que antes eran totalmente necesarios (la de trucos que usaba la gente para poder aprovechar el 100% del hardware del Commodore64) y ahora desperdiciamos por todos lados y al final <strong>sí que pasa factura</strong>. La gente que programe sistemas embebidos lo tiene muy claro aunque casi se va a acabar el asunto también ahí porque ya los procesadores de los móviles/PDAs/cosas_pequeñas tirán mucho.</p>
<p><span id="more-255"></span></p>
<p>Me he encontrado con programas que están al 100% de CPU en idle, con programas que daban su salida en unos 12~15 minutos cuando otro para el mismo propósito lo hacía en aproximadamente 1 segundo (no daré nombres xD), programas en los que notas el &#8216;refresco&#8217; de los elementos cuando lo usas cuando te sobra CPU para hacerlo bien, etc. Hay que intentar evitar marañas de bucles for anidados!</p>
<p>Al final todo pasa por conocer muy bien el lenguaje que usas, haber pasado horas y horas, pensar las cosas antes de hacerlas, incluso un poquito de sentido común, cosa que creo que es difícil de abstraer a veces cuando se programa.</p>
<p>Por ejemplo, en matlab es muy importante reservar el espacio para las variables antes y crear los vectores del tamaño que van a ser al final de las operaciones porque si aumentamos el tamaño de un vector[n], internamente lo que siempre hace es crear un nuevo vector[n+1] y copiar los datos del antiguo.</p>
<p>Hace unos meses me comentó un amigo que en el trabajo tenían un método númerico que disminuyó su tiempo de ejecución en más de un 20% (siendo su tiempo varias horas) al sustituir un resultado de una operación que siempre era el mismo por el valor guardado en una variable! Es de cajón pero hay que caer.</p>
<p>Y ahora vienen algunos ejemplos, por no meterme en un lenguaje tipo C en el que hay muchas posibilidades de hacer las cosas y hay que currarse más los ejemplo iré a algo más sencillo como es hacer scripts cerdos para administrar un máquinas o similares.</p>
<p>Un ejemplo sería un uso poco adecuado de las órdenes <em>cat, grep, ls, awk</em> y similares. Cuando manipulamos algo pequeño no pasa nada pero cuando se trata de varios ficheros logs y son decenas de MB pues la cosa empieza a tomar importancia.</p>
<p>Respecto a <em>grep</em> cuando una persona empieza y se plantea buscar una cadena lo primero que piensa es &#8216;muestro el archivo y luego saco las líneas coincidentes&#8217;:</p>
<p><code># cat tinyproxy.log | grep remote<br />
real    0m55.071s<br />
user    0m24.477s<br />
sys     0m0.727s</code></p>
<p>Luego descubres que en realidad lo puedes hacer &#8216;todo en uno&#8217; y es bastantes más rápido:</p>
<p><code># grep remote tinyproxy.log<br />
real    0m36.024s<br />
user    0m22.550s<br />
sys     0m0.527s</code></p>
<p>Luego, sin querer, entras en el man y te das cuenta de que existen varios tipos: <em>grep</em>, <em>egrep</em> (similar pero no idéntico a grep -E ) y  <em>fgrep</em> (idéntico a grep -F). Así que pruebas:</p>
<p><code># egrep remote tinyproxy.log<br />
real    0m55.122s<br />
user    0m25.029s<br />
sys     0m0.659s</code></p>
<p>Joder, vuelve a ser lento a pesar de no hacer un cat. ¿Por qué? Porque es una función más compleja.</p>
<ul>
<li>grep: soporta expresiones regulares básicas.</li>
<li>fgrep: no soporta expresiones regulares =&gt; el más rápido.</li>
<li>egrep: soporta expresiones regulares avanzadas =&gt; el más lento.</li>
</ul>
<p>Para los curiosos, el nombre grep viene de g/re/p y significa lo que hace tal cual, buscar una expresión regular y hacer print de las coincidencias. En realidad a una escala grande ni siquiera deberíamos usar <em>grep</em> sino <em>sed</em> que es más rápido.</p>
<p>Lo mucha gente desconoce es que hay otra manera de evitar el <em>cat </em>de antes y ganar tiempo, y es que en realidad las concatenaciones siempre están ahí&#8230; así que lo podríamos hacer del siguiente modo:</p>
<p><code># &lt;tinyproxy.log grep remote<br />
real    0m43.931s<br />
user    0m22.338s<br />
sys     0m0.578s</code></p>
<p>Del mismo modo estos conceptos se puede usar en otras órdenes</p>
<p><code># cat tinyproxy.log | wc -l<br />
104265</code></p>
<p>real    0m0.088s<br />
user    0m0.021s<br />
sys     0m0.053s</p>
<p><code># wc -l tinyproxy.log<br />
104265 tinyproxy.log</code></p>
<p>real    0m0.021s<br />
user    0m0.013s<br />
sys     0m0.006s</p>
<p>Y del mismo modo:</p>
<p><code># cat tinyproxy.log | tail -n 200<br />
real    0m0.121s<br />
user    0m0.026s<br />
sys     0m0.056s</code></p>
<p><code># tail -n 200 tinyproxy.log<br />
real    0m0.010s<br />
user    0m0.000s<br />
sys     0m0.003s</code></p>
<p>Cambiando de tercio también solemos usar <em>echo</em> más veces de las que toca. Por ejemplo si tenemos :</p>
<p><code>var="valor_o_resultado_de_una_evaluacion"<br />
command -options `echo $var`</code></p>
<p>en la mayoría de los casos podremos sustituirlo por:</p>
<p><code>var="valor_o_resultado_de_una_evaluacion"<br />
command -options $var</code></p>
<p>Y así mil chorradas. Por cierto, el que sólo se conozca la opción de awk para coger columnas le recomiendo que se mire manules que termina siendo muy útil.</p>
<p>Creo que este post lleva más de 6 meses en drafts y no he añadido nada (de hecho  tampoco tengo ganas), así que aunque es un tema que da mucho de sí ha quedado bastante descafeinado técnicamente, pero ajo y agua!<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMTEvMjUvZGVzY29kaWZpY2FyLXRvbm9zLWR0bWYtdXNhbmRvLW1hdGxhYi8=" rel=\"bookmark\" title=\"November 25, 2009\">Descodificar tonos DTMF usando Matlab</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDkvMjUvcG9ydC1rbm9ja2luZy15LWNyeXB0LXBvcnQta25vY2tpbmcv" rel=\"bookmark\" title=\"September 25, 2009\">Port-Knocking y Crypt-Port-Knocking</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDgvMDMvMjgvZGVqYXItYm9uaXRvLXVuLXNlcnZlci1zc2gtcGFydGUtMS8=" rel=\"bookmark\" title=\"March 28, 2008\">Dejar bonito un server SSH &#8211; Parte 1</a></li>
</ul>
<p><!-- Similar Posts took 9.944 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/feed-statistics.php?view=1&post_id=255" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/08/10/cuestion-de-optimizacion/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
