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

<channel>
	<title>It should work... &#187; cryptoanálisis</title>
	<atom:link href="http://vierito.es/wordpress/tag/cryptoanalisis/feed/" rel="self" type="application/rss+xml" />
	<link>http://vierito.es/wordpress</link>
	<description>Cuando cualquier trasto es útil</description>
	<lastBuildDate>Sun, 20 May 2012 15:59:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Reto FBI Mayo 09</title>
		<link>http://vierito.es/wordpress/2009/05/29/reto-fbi-mayo-09/</link>
		<comments>http://vierito.es/wordpress/2009/05/29/reto-fbi-mayo-09/#comments</comments>
		<pubDate>Fri, 29 May 2009 16:11:36 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[criptografía]]></category>
		<category><![CDATA[cryptoanálisis]]></category>
		<category><![CDATA[FBI]]></category>
		<category><![CDATA[reto]]></category>
		<category><![CDATA[sustitución]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=434</guid>
		<description><![CDATA[Hoy me he enterado (via La Comunidad de DragonJar) que el 23/05/09 se publicó otro reto a estilo este que expliqué hace un tiempo. La solución después del &#8220;Read More&#8221; Nos dan una imagen con símbolos en plan de las runas. Lo primero es ver que tiene signos de puntuación. Un signo de admiración a [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy me he enterado (via <a title=\"La Comunidad de DragonJar\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5kcmFnb25qYXIub3JnLw==">La Comunidad de DragonJar</a>) que el 23/05/09 <a title=\"Reto 2009\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mYmkuZ292L3BhZ2UyL21heTA5L2NvZGVfMDUyMzA5Lmh0bWw=">se publicó otro reto</a> a estilo <a title=\"Reto FBI 2008\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDQvMTgvZGVzY2lmcmFuZG8tdW4tcmV0by1kZWwtZmJpLw==">este</a> que expliqué hace un tiempo.</p>
<p><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA1L2NvZGUwNTE4MDkuanBn"><img class="aligncenter size-full wp-image-435" title="code051809" src="http://vierito.es/wordpress/wp-content/uploads/2009/05/code051809.jpg" alt="code051809" width="480" height="247" /></a></p>
<p>La solución después del &#8220;Read More&#8221;</p>
<p><span id="more-434"></span></p>
<p>Nos dan una imagen con símbolos en plan de las runas. Lo primero es ver que tiene signos de puntuación. Un signo de admiración a principio de una palabra y un punto y una coma situados de la misma forma. Con eso se me ocurren 2 opciones: o es una transposición o está todo al revés. Como coincide que 3 elementos caen en esa posición vamos a suponer que simplemente le han dado la vuelta. En la Campus Party hubo una prueba que también tenía un signo de puntuación de estos y por culpa de suponer que era &#8216;al revés&#8217; perdimos mucho mucho tiempo jejeje resultó ser una transposición doble.</p>
<p>Así que cogemos todos los símbolos, les damos la vuelta y los sustituímos por letras siguiendo la estructura. Después de unos minutos ya lo tengo escrito en una hoja de papel y todo parece que sea una sustitucion simple (otra vez ¬¬). Hay 2 letras sueltas iguales, lo normal es que sea una &#8220;a&#8221; ya que es inglés. Y el final parece un &#8220;to go!&#8221; Bueno, no nos adelantemos. Vamos a buscar un patrón para tener por donde empezar.</p>
<p>Igual que en la solución del reto anterior del FBI cogemos <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDQvMTgvZGVzY2lmcmFuZG8tdW4tcmV0by1kZWwtZmJpLw==">el programita de buscar patrones en C</a> y el diccionario aspell (que es cutre pero sirve):</p>
<p><code>$ ./pattern en-common.dat ABCADEDBDEFG<br />
substituting<br />
substitution<br />
substitution's<br />
substitutions</code></p>
<p>A huevos! ¿no? Solo puede ser <em>substituting</em> o <em>substitution</em>. ¿Cuál de las 2 es? Vemos que además de ser sustitución simple el cambio guarda cierto parecido con las formas de los símbolos y no es difícil reconocer que es <em>substitution</em> y que justo la palabra que la precede es <em>simple</em> =&gt; <em>simple substitution</em>.</p>
<p>Vamos sustituyendo todas las letras que hemos sacado y las palabras van saliendo fácilmente. Al final el resultado es:</p>
<p><code>You have solved a simple substitution cipher, using symbols intead of letters and a few twists thrown in for good measure. Way to go!</code></p>
<p>Faciliiiiiiiiito <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>En breve tendréis la solución de las pruebas 11 y 12 de nuestro reto, que <a title=\"Dani Kachakil\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5rYWNoYWtpbC5jb20=">Dani Kachakil</a> se pasó un buen rato dándole al coco hasta sacarlas.<br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDQvMTgvZGVzY2lmcmFuZG8tdW4tcmV0by1kZWwtZmJpLw==" rel=\"bookmark\" title=\"April 18, 2009\">Descifrando un reto del FBI</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDYvMDgvc29sdWNpb24tZGUtbGFzLXBydWViYXMtMTEteS0xMi1kZWwtcmV0by8=" rel=\"bookmark\" title=\"June 8, 2009\">Solución de las pruebas 11 y 12 del reto</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDUvMTcvc29sdWNpb25lcy1kZWwtcmV0by1kZS1jcmlwdG9ncmFmaWEtcGFydGUtMS8=" rel=\"bookmark\" title=\"May 17, 2009\">Soluciones del reto de criptografía &#8211; Parte 1</a></li>
</ul>
<p><!-- Similar Posts took 6.295 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=434" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/05/29/reto-fbi-mayo-09/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Descifrando un reto del FBI</title>
		<link>http://vierito.es/wordpress/2009/04/18/descifrando-un-reto-del-fbi/</link>
		<comments>http://vierito.es/wordpress/2009/04/18/descifrando-un-reto-del-fbi/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 00:08:08 +0000</pubDate>
		<dc:creator>vierito5</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[criptografía]]></category>
		<category><![CDATA[cryptoanálisis]]></category>
		<category><![CDATA[FBI]]></category>
		<category><![CDATA[reto]]></category>
		<category><![CDATA[sustitución]]></category>

		<guid isPermaLink="false">http://vierito.es/wordpress/?p=336</guid>
		<description><![CDATA[Hace unos días TuXeD dejó propuesto un pequeño reto que propuso el FBI en 2008 para el entretenimiento del personal. Tal cual lo ví me puse manos a la obra. Vamos a la web y nos encontramos con esto: ¿Por dónde empezamos? Mmmm, así a primera vista vemos que el porcentaje de vocales es bajo, [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días <a title=\"TuXeD\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R1eGVkLnNlcnZlYmxvZy5uZXQ=">TuXeD</a> dejó propuesto un pequeño <a title=\"Code Cracking FBI Challenge 2008\" href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mYmkuZ292L2hlYWRsaW5lcy9jb2RlLnN3Zg==">reto</a> que propuso el FBI en 2008 para el entretenimiento del personal. Tal cual lo ví me puse manos a la obra.</p>
<p>Vamos a la web y nos encontramos con esto:</p>
<div id="attachment_337" class="wp-caption aligncenter" style="width: 490px"><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5LzA0L2ZiaS5qcGc="><img class="size-full wp-image-337" title="fbi" src="http://vierito.es/wordpress/wp-content/uploads/2009/04/fbi.jpg" alt="fbi" width="480" height="478" /></a><p class="wp-caption-text">Code Cracking Challenge FBI 2008</p></div>
<p style="text-align: center;">
<p>¿Por dónde empezamos? Mmmm, así a primera vista vemos que el porcentaje de vocales es bajo, casi todo son consonantes seguidas así que el cifrado usado debería ser de sustitución y no de transposición (en ese caso como se hubiera realizado un cambio de lugar de las letras debería haber un porcentaje razonable de vocales, cercano al 45% como es el caso del español o al 40% como es el caso del inglés, de todas formas seguro que es inglés al ser un reto del FBI).</p>
<div class="im">Enseguida nos damos cuenta que hay algo muy reconocible, algo tiene forma de URL:  YYY.AHB.MSK/NSCDC.OFZ</div>
<div class="im">¿Sera sea <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mYmkuZ292L2luZGV4LnBocA==" target=\"_blank\">www.fbi.gov/index.php</a> ? A ver si vamos a terminar antes de empezar! Bueno, lo pruebo y no xD, la web no carga así que debe ser otra cosa.</div>
<p>Asumimos es un cifrado de sustitución y viendo ese &#8216;YYY&#8217; vamos a suponer que son Ws y que seguro que la web es del dominio fbi.gov, con lo cual por ahora tenemos las siguientes correspondencias:</p>
<div class="im">Y-W<br />
A-F<br />
H-B<br />
B-I<br />
M-G<br />
S-O<br />
K-V</div>
<p>TuXeD nos ha dado la pista de que &#8220;es un puzzle más bien&#8221; así que en lugar de darle mil vueltas al Cryptool casi mejor cogemos una hoja de papel. Nos escribimos el mensaje y cambiamos las letras que hemos supuesto a ver si vemos algo que nos suene para obtener más concordancias entre letras.</p>
<div class="im">Una vez escrito está claro que es inglés (por si no estaba claro) porque aparece la conjunción &#8220;OF&#8221;.</div>
<p>Delante de la URL tenemos la palabra VI-I- así que parece claro que es la palabra VISIT ¿qué puedes hacer sino con una URL? Así que parece que nuestra suposición con las primeras concordancias eran buenas. Ya tenemos:</p>
<p>V-S<br />
F-T</p>
<p>Nos ponemos a sustituir de nuevo. Una vez terminado vemos que el final de la URL es -T-. Yo de primeras he pensado que siendo de 3 letras podía ser HTM, PHP, JSP, ASP etc incluso un fichero PDF, pero ahora seguro que es HTM así que:</p>
<p>O-H<br />
Z-M</p>
<p>Pero <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mYmkuZ292L2luZGV4Lmh0bQ==" target=\"_blank\">www.fbi.gov/index.htm</a> no carga, sh*t! así que no asignamos las letras de la palabra INDEX.</p>
<p>Nos ponemos de nuevo con el texto y vemos que FOBV casa con THIS pero ya no hay más palabras obvias pero, era inglés, ¿no? Hay una palabra que acaba en I-G, ¿será un gerundio? En ese caso L-N.</p>
<p>Ahora vemos un -NOW que seguro es un KNOW, luego Q-K.</p>
<p>Y ahora viene una de cajón, como no, parece que la palabra ENCRYPTION aparece en forma de -N&#8212;-TION. Esto ya está resuelto <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Una vez sustituidas los nuevos pares de letras ya podemos reconocer muchas palabras: cracking, success, congratulate, you, el texto es nuestro <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8220;Stupendous. We congratulate you on cracking this latest encryption. Visit <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mYmkuZ292L2NvZGVkLmh0bQ==" target=\"_blank\">www.fbi.gov/coded.htm</a> to let us know of your success.&#8221;</p>
<p>Cuya web si carga <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Y ahora los más avispados dirán, baaaaaaah, eso es una mierda, ¿cómo lo haces en un texto donde no hay una manera de empezar tan clara como esa URL? Así que me puse a ello.</p>
<p>Vamos a suponer que en el texto no estuviera la URL, ¿qué hago? Por las mismas deducciones que antes suponemos que es un cifrado de sustitución simple y ahora viene el truco, todos los idiomas tienen ciertas palabras que por su estructura son menos comunes que otras debido a tener la misma letra seguida en varias partes de la palabra. Debido a este tipo de cifrado usado ¡esa estructura se conserva! Pues vamos a chequear las palabras que nos parezcan de estructura más adecuada contra un diccionario, vamos a buscar patrones. Así que pillamos un diccionario de palabras en inglés (yo tenía el de aspell ya instalado así que con un <em>strings</em> lo meto en un txt) y con la ayuda del siguiente programa en C que tenía guardado buscamos patrones que encajen con la palabra elegida (no recuerdo de donde salió, si alguien lo sabe que me pase la fuente). Además, despues de comprobarla contra el diccionario seguro que podemos descartar muchas por la longitud que debe tener.</p>
<p>¿palabra candidata? Sin duda &#8220;VWNNDVV&#8221;, por esas repeticiones. Es de la forma ABCCDAA.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="" style="font-family:monospace;">$ ./pattern en-common.txt ABCCDAA
unsuccessful
unsuccessfully
falloff
falloffs
colossally
cappuccino
cappuccino's
cappuccinos
nonsuccessive
success
successor
success's
successive
successful
successfully
successively
successes
successor's
successors
succession
succession's
successions</pre></td></tr></table></div>

<p>Si nuestro diccionario es bueno hemos reducido el asunto a muy muy pocas palabras y gracias a que sabemos la longitud que tiene que tener la palabra sólo nos encajan 2. &#8220;falloff&#8221; y &#8220;success&#8221;. Tratándose de descifrar un código la palabra success tiene sentido, ¿no? Estaríamos dando de pleno en el clavo <img src='http://vierito.es/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ahora tendríamos ir operando como antes para ir sacando más palabras. Otra candidata para empezar podría haber sido la palabra cifrada que corresponde a &#8220;stupendous&#8221; pero el ataque contra diccionario no acota suficiente la solución.</p>
<p>Otro días más! Y aquí el programa en C:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> remove_nl<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span>str<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#91;</span>strlen<span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #009900;">&#41;</span>
      str<span style="color: #009900;">&#91;</span>strlen<span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> match_pattern<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span>match<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>pattern<span style="color: #339933;">,</span> size_t pattern_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>j<span style="color: #339933;">;</span>
&nbsp;
   <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;">&lt;</span>pattern_len<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
   <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>j<span style="color: #339933;">=</span>i<span style="color: #339933;">;</span> j<span style="color: #339933;">&gt;</span>pattern_len<span style="color: #339933;">;</span> j<span style="color: #339933;">++</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>pattern<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span>pattern<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
            <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>match<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">!=</span>match<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
               <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
         <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">!=</span>pattern<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
            <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>match<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span>match<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
               <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #993333;">char</span> word<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">64</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
   <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>pattern <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span>
   <span style="color: #993333;">int</span> pattern_len <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>argc<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: %s [word list] [crypto-pattern]<span style="color: #000099; font-weight: bold;">\n</span><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;">0</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: #0000dd;">0</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   pattern <span style="color: #339933;">=</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>
   pattern_len <span style="color: #339933;">=</span> strlen<span style="color: #009900;">&#40;</span>pattern<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   FILE <span style="color: #339933;">*</span>file <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>file<span style="color: #009900;">&#41;</span>
   <span style="color: #009900;">&#123;</span>
      perror<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;fopen()&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>feof<span style="color: #009900;">&#40;</span>file<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
   <span style="color: #009900;">&#123;</span>
      fgets<span style="color: #009900;">&#40;</span>word<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>word<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> file<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      remove_nl<span style="color: #009900;">&#40;</span>word<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>substr <span style="color: #339933;">=</span> word<span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>strlen<span style="color: #009900;">&#40;</span>substr<span style="color: #009900;">&#41;</span><span style="color: #339933;">&gt;=</span>pattern_len<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>substr<span style="color: #009900;">&#41;</span><span style="color: #339933;">&lt;</span>pattern_len<span style="color: #009900;">&#41;</span>
            <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
         <span style="color: #993333;">char</span> match<span style="color: #009900;">&#91;</span>pattern_len<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
         strncpy<span style="color: #009900;">&#40;</span>match<span style="color: #339933;">,</span> substr<span style="color: #339933;">,</span> pattern_len<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         match<span style="color: #009900;">&#91;</span>pattern_len<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
         <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>match_pattern<span style="color: #009900;">&#40;</span>match<span style="color: #339933;">,</span> pattern<span style="color: #339933;">,</span> pattern_len<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
            <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> word<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
         substr<span style="color: #339933;">++;</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
   fclose<span style="color: #009900;">&#40;</span>file<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></td></tr></table></div>

<p><br/><br/><i>&#8211;<br/>Fuente original en <a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNz">http://vierito.es/wordpress</a></i><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDUvMjkvcmV0by1mYmktbWF5by0wOS8=" rel=\"bookmark\" title=\"May 29, 2009\">Reto FBI Mayo 09</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3ZpZXJpdG8uZXMvd29yZHByZXNzLzIwMDkvMDUvMTcvc29sdWNpb25lcy1kZWwtcmV0by1kZS1jcmlwdG9ncmFmaWEtcGFydGUtMS8=" rel=\"bookmark\" title=\"May 17, 2009\">Soluciones del reto de criptografía &#8211; Parte 1</a></li>
<li><a href="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/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 7.409 ms --></p>
 <img src="http://vierito.es/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=336" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://vierito.es/wordpress/2009/04/18/descifrando-un-reto-del-fbi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

