<?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>DisidentS Team &#187; noukeys</title>
	<atom:link href="http://www.disidents.org/author/noukeys/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.disidents.org</link>
	<description>-= Sharing Knowledge since 1996! =- Seguridad, IngenierÃ­a Inversa, Redes, ProgramaciÃ³n, Noticias</description>
	<lastBuildDate>Fri, 03 Sep 2010 13:10:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Control de menores, aquÃ­ si, allÃ¡ no.</title>
		<link>http://www.disidents.org/2010/08/28/control-de-menores-aqui-si-alla-no/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=control-de-menores-aqui-si-alla-no</link>
		<comments>http://www.disidents.org/2010/08/28/control-de-menores-aqui-si-alla-no/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 16:13:37 +0000</pubDate>
		<dc:creator>noukeys</dc:creator>
				<category><![CDATA[ArtÃ­culos]]></category>
		<category><![CDATA[noukeys]]></category>
		<category><![CDATA[privacidad]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.disidents.org/?p=506</guid>
		<description><![CDATA[Caliente video, Â¿no? Me ha llamado la atenciÃ³n que youtube califica este vÃ­deo como no apto para menores y desde su pÃ¡gina necesitas confirmar tu edad para verlo, pero, si embebemos el video en una web (por ejemplo esta) no hay ningÃºn tipo de control. El contenido continua alojado en youtube, Â¿deberÃ­an controlar el acceso?; [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Sm1GV1W5TfA?fs=1&amp;hl=es_ES" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/Sm1GV1W5TfA?fs=1&amp;hl=es_ES" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Caliente video, Â¿no?</p>
<p>Me ha llamado la atenciÃ³n que youtube califica este vÃ­deo como no apto para menores y desde su pÃ¡gina necesitas confirmar tu edad para verlo, pero, si embebemos el video en una web (por ejemplo esta) no hay ningÃºn tipo de control.</p>
<p>El contenido continua alojado en youtube, Â¿deberÃ­an controlar el acceso?; Â¿deberÃ­amos hacerlo nosotros?</p>
<p>El debate queda abierto xD</p>
 <span class="post2pdf_span" style="border: 1px solid gray; width: 160px; text-align: left; "><a href="http://www.disidents.org/wp-content/plugins/post2pdf/generate.php?post=ú" rel="nofollow"><img src="http://www.disidents.org/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convert this post to pdf.</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.disidents.org/2010/08/28/control-de-menores-aqui-si-alla-no/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SuplantaciÃ³n de identidad en comentarios de WP</title>
		<link>http://www.disidents.org/2010/06/24/suplantacion-de-identidad-en-comentarios-de-wp/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=suplantacion-de-identidad-en-comentarios-de-wp</link>
		<comments>http://www.disidents.org/2010/06/24/suplantacion-de-identidad-en-comentarios-de-wp/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 15:45:21 +0000</pubDate>
		<dc:creator>noukeys</dc:creator>
				<category><![CDATA[ArtÃ­culos]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[noukeys]]></category>
		<category><![CDATA[phishing]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.disidents.org/?p=487</guid>
		<description><![CDATA[Mirando el blog de un amigo, me ha dado por registrarme y toqueteando me he dado cuenta de una cosa muy curiosa. 1.- Creo mi perfil noukeys y, como vemos en estas imÃ¡genes y escribo un comentario. 2.- Bueno hasta hay todo normal. Pero, Â¿que pasa si cambiamos ciertos campos en nuestro perfil? Vamos a [...]]]></description>
			<content:encoded><![CDATA[<p>Mirando el blog de un amigo, me ha dado por registrarme y toqueteando me he dado cuenta de una cosa muy curiosa.</p>
<p>1.- Creo mi perfil noukeys y, como vemos en estas imÃ¡genes y escribo un comentario.</p>
<p><a href="http://www.disidents.org/wp-content/uploads/2010/06/1.png"><img class="aligncenter size-medium wp-image-488" title="1" src="http://www.disidents.org/wp-content/uploads/2010/06/1-300x104.png" alt="" width="300" height="104" /></a><a href="http://www.disidents.org/wp-content/uploads/2010/06/2.png"><img class="aligncenter size-medium wp-image-489" title="2" src="http://www.disidents.org/wp-content/uploads/2010/06/2-300x120.png" alt="" width="300" height="120" /></a></p>
<p>2.- Bueno hasta hay todo normal. Pero, Â¿que pasa si cambiamos ciertos campos en nuestro perfil? Vamos a ver . . .</p>
<p><a href="http://www.disidents.org/wp-content/uploads/2010/06/3.png"><img class="aligncenter size-medium wp-image-490" title="3" src="http://www.disidents.org/wp-content/uploads/2010/06/3-300x93.png" alt="" width="300" height="93" /></a><a href="http://www.disidents.org/wp-content/uploads/2010/06/4.png"><img class="aligncenter size-medium wp-image-491" title="4" src="http://www.disidents.org/wp-content/uploads/2010/06/4-300x192.png" alt="" width="300" height="192" /></a></p>
<p>Pues el efecto Ã³ptico es muy bonito, parece que el admin nos esta dando la bienvenida!.</p>
<p>Â¿SuplantaciÃ³n de identidad?</p>
<p>Â¿DeberÃ­a WP limitar ciertos nombres en ciertos campos?</p>
<p>Â¿Podemos considerarlo un fallo de seguridad?</p>
<p>Prefiero no pronunciarme, pero el efecto es cuanto menos curioso &#8230;</p>
<p style="text-align: right;">Un saludo y hasta el prÃ³ximo _POST</p>
 <span class="post2pdf_span" style="border: 1px solid gray; width: 160px; text-align: left; "><a href="http://www.disidents.org/wp-content/plugins/post2pdf/generate.php?post=ç" rel="nofollow"><img src="http://www.disidents.org/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convert this post to pdf.</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.disidents.org/2010/06/24/suplantacion-de-identidad-en-comentarios-de-wp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hacking a university web at the university</title>
		<link>http://www.disidents.org/2010/05/29/hacking-a-university-web-at-the-university/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=hacking-a-university-web-at-the-university</link>
		<comments>http://www.disidents.org/2010/05/29/hacking-a-university-web-at-the-university/#comments</comments>
		<pubDate>Sat, 29 May 2010 16:04:38 +0000</pubDate>
		<dc:creator>noukeys</dc:creator>
				<category><![CDATA[ArtÃ­culos]]></category>
		<category><![CDATA[charla]]></category>
		<category><![CDATA[conferencia]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[noukeys]]></category>
		<category><![CDATA[seguridad informÃ¡tica]]></category>
		<category><![CDATA[universidad]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.disidents.org/?p=479</guid>
		<description><![CDATA[Un chico de espaÃ±a mostrando en una charla en la universidad los fallos en la web de la misma. Audio un poco malo, sorry En breve actualizare el post con los videos que se muestran en la conferencia convert this post to pdf.]]></description>
			<content:encoded><![CDATA[<p>Un chico de espaÃ±a mostrando en una charla en la universidad los fallos en la web de la misma.</p>
<p><object id="utv362773" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="utv_n_549813" /><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=7096232&amp;locale=en_US" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/7096232" /><embed id="utv362773" type="application/x-shockwave-flash" width="480" height="386" src="http://www.ustream.tv/flash/video/7096232" allowscriptaccess="always" allowfullscreen="true" flashvars="loc=%2F&amp;autoplay=false&amp;vid=7096232&amp;locale=en_US" name="utv_n_549813"></embed></object></p>
<p><object id="utv837238" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="utv_n_782675" /><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=7097006&amp;locale=en_US" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/7097006" /><embed id="utv837238" type="application/x-shockwave-flash" width="480" height="386" src="http://www.ustream.tv/flash/video/7097006" allowscriptaccess="always" allowfullscreen="true" flashvars="loc=%2F&amp;autoplay=false&amp;vid=7097006&amp;locale=en_US" name="utv_n_782675"></embed></object></p>
<p><object id="utv985913" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="utv_n_554443" /><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=7097178&amp;locale=en_US" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/7097178" /><embed id="utv985913" type="application/x-shockwave-flash" width="480" height="386" src="http://www.ustream.tv/flash/video/7097178" allowscriptaccess="always" allowfullscreen="true" flashvars="loc=%2F&amp;autoplay=false&amp;vid=7097178&amp;locale=en_US" name="utv_n_554443"></embed></object></p>
<p>Audio un poco malo, sorry <img src='http://www.disidents.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>En breve actualizare el post con los videos que se muestran en la conferencia <img src='http://www.disidents.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
 <span class="post2pdf_span" style="border: 1px solid gray; width: 160px; text-align: left; "><a href="http://www.disidents.org/wp-content/plugins/post2pdf/generate.php?post=ß" rel="nofollow"><img src="http://www.disidents.org/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convert this post to pdf.</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.disidents.org/2010/05/29/hacking-a-university-web-at-the-university/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>md5 search function</title>
		<link>http://www.disidents.org/2010/03/28/md5-search-function/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=md5-search-function</link>
		<comments>http://www.disidents.org/2010/03/28/md5-search-function/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 11:25:49 +0000</pubDate>
		<dc:creator>noukeys</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Cracking]]></category>
		<category><![CDATA[DisidentS]]></category>
		<category><![CDATA[IngenierÃ­a Inversa]]></category>
		<category><![CDATA[md5 cracker]]></category>
		<category><![CDATA[noukeys]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">http://www.disidents.org/?p=421</guid>
		<description><![CDATA[Muchas veces programamos chorraditas rÃ¡pidas, que pueden llegar a ser muy Ãºtiles. Pues creo que la que aquÃ­ presento puede ser una de estas, es una funciÃ³n en python que bÃºsca su f, dada su imagen f&#8217;. La he utilizado para hacer una auditorÃ­a a un fichero con mÃ¡s de 30.000 imÃ¡genes y la verdad, [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces programamos chorraditas rÃ¡pidas, que pueden llegar a ser muy Ãºtiles. Pues creo que la que aquÃ­ presento puede ser una de estas, es una funciÃ³n en python que bÃºsca su f, dada su imagen f&#8217;.</p>
<p>La he utilizado para hacer una auditorÃ­a a un fichero con mÃ¡s de 30.000 imÃ¡genes y la verdad, los resultados han sido positivos.</p>
<p>He renombrado el ficherito a .txt para poder subirlo.</p>
<p><a href="http://www.disidents.org/wp-content/uploads/2010/03/md5_cracker.txt">md5_cracker</a></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">import urllib</p>
<p>__id__ = &#8220;$Id: md5_cracker.py 2010-03-28 13:13$&#8221;<br />
__version__ = &#8220;$Revision: 0 $&#8221;<br />
__date__ = &#8220;$Date: 2010-03-28 13:13:51 +0100 (San, 28 Mar 2010) $&#8221;<br />
__author__ = &#8220;noukeys reverser (noukeys@gmail.com)&#8221;<br />
__copyright__ = &#8220;Copyright 2010+ noukeys&#8221;<br />
__license__ = &#8220;GPL&#8221;<br />
__URL__ = &#8220;http://www.reversing.es&#8221;</p>
<p>#Busca un hash en diversas webs conocidas.<br />
def md5search(hash):</p>
<p>find = &#8221;;</p>
<p>#busqueda:<br />
try:<br />
if find == &#8221;:<br />
f = urllib.urlopen(&#8220;http://gdataonline.com/qkhash.php?mode=txt&amp;hash=&#8221; + hash.strip(&#8216;\t\n&#8217;))<br />
for line in f.readlines():<br />
if (line.find(&#8216;&lt;tr&gt;&lt;td width=&#8221;65%&#8221;&gt;&#8217;) != -1) and (line.find(&#8216;????&#8217;) == -1):<br />
line = line.partition(&#8217;35%&#8221;&gt;&lt;b&gt;&#8217;)<br />
line = line[2].partition(&#8216;&lt;/b&gt;&#8217;)<br />
find = line[0]<br />
except:<br />
pass</p>
<p>#busqueda<br />
try:<br />
if find == &#8221;:<br />
params = urllib.urlencode({&#8216;pass&#8217;: hash.strip(&#8216;\t\n&#8217;), &#8216;option&#8217;: &#8216;hash2text&#8217;, &#8216;send&#8217;: &#8216;Submit&#8217;})<br />
f = urllib.urlopen(&#8220;http://md5online.net/&#8221;, params)<br />
for line in f.readlines():<br />
if line.find(&#8216;pass :&#8217;) != -1:<br />
line = line.partition(&#8216;s : &lt;b&gt;&#8217;)<br />
line = line[2].partition(&#8216;&lt;/b&gt;&#8217;)<br />
find = line[0]<br />
except:<br />
pass</p>
<p>#busqueda<br />
try:<br />
if find == &#8221;:<br />
params = urllib.urlencode({&#8216;term&#8217;: hash.strip(&#8216;\t\n&#8217;), &#8216;crackbtn&#8217;: &#8216;Crack+that+hash+baby%21&#8242;})<br />
f = urllib.urlopen(&#8220;http://md5crack.com/crackmd5.php&#8221;, params)<br />
for line in f.readlines():<br />
if line.find(&#8216;Found&#8217;) != -1:<br />
line = line.partition(&#8216;(&#8220;&#8216;)<br />
line = line[2].partition(&#8216;&#8221;)&#8217;)<br />
find = line[0]<br />
except:<br />
pass</p>
<p>#Resultados<br />
return find.strip(&#8216;\t\n&#8217;)</p>
<p>#P.O.C.<br />
print md5search(&#8217;084e0343a0486ff05530df6c705c8bb4&#8242;)</p>
</div>
 <span class="post2pdf_span" style="border: 1px solid gray; width: 160px; text-align: left; "><a href="http://www.disidents.org/wp-content/plugins/post2pdf/generate.php?post=¥" rel="nofollow"><img src="http://www.disidents.org/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convert this post to pdf.</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.disidents.org/2010/03/28/md5-search-function/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>&#8230;desempacar, desempacar &#8230; Â¿Whyyyyyy!!!!?</title>
		<link>http://www.disidents.org/2009/02/23/desempacar-desempacar-%c2%bfwhyyyyyy/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=desempacar-desempacar-%25c2%25bfwhyyyyyy</link>
		<comments>http://www.disidents.org/2009/02/23/desempacar-desempacar-%c2%bfwhyyyyyy/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 23:55:49 +0000</pubDate>
		<dc:creator>noukeys</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.disidents.org/?p=121</guid>
		<description><![CDATA[Donde quedan los tiempos de antaÃ±o en los que la gente se hacÃ­a sus loaderÂ  &#8220;de p**a ma*re&#8221;, o como dirian los argentinos&#8230; &#8220;de la concha de tu madre la pelotuda&#8221;. El caso es que por casualidad un amigo me comentÃ³ que le echara un vistazo a un programa. 1) Ouff Aspack! 2) Problema No [...]]]></description>
			<content:encoded><![CDATA[<p>Donde quedan los tiempos de antaÃ±o en los que la gente se hacÃ­a sus loaderÂ  &#8220;de p**a ma*re&#8221;, o como dirian los argentinos&#8230; &#8220;de la concha de tu madre la pelotuda&#8221;. El caso es que por casualidad un amigo me comentÃ³ que le echara un vistazo a un programa.</p>
<p>1) Ouff Aspack!</p>
<p><img class="alignnone size-medium wp-image-114" title="rdg" src="http://www.disidents.org/wp-content/uploads/2009/02/rdg-300x173.jpg" alt="rdg" width="300" height="173" /></p>
<p>2) Problema</p>
<p>No tenemos tiempo de estudiar packers, o no sabemos, o no queremos. Pues utilizamos alguna tool de internet.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-111" title="stripper" src="http://www.disidents.org/wp-content/uploads/2009/02/stripper.jpg" alt="stripper" width="558" height="341" /></p>
<p>crash!, el programa no funciona y todo el mundo desesperado en los foros. Â¿Abandonamos? &#8211; No !</p>
<p>3) Solucionando el problema.</p>
<p>En ollydbg tenemos una opciÃ³n magnÃ­fica llamada Atach! AsÃ­ que, ejecutamos el programa y paramos aquÃ­.</p>
<p><img class="aligncenter size-full wp-image-112" title="license" src="http://www.disidents.org/wp-content/uploads/2009/02/license.jpg" alt="license" width="508" height="254" /></p>
<p>Atacheamos y buscamos la funciÃ³n,</p>
<p><img class="aligncenter size-medium wp-image-113" title="olly" src="http://www.disidents.org/wp-content/uploads/2009/02/olly-300x187.jpg" alt="olly" width="300" height="187" /></p>
<p>Mediante los RET llegamos a este punto.</p>
<p>005A2430Â  |.Â  E8 6FFBFFFFÂ Â  |CALL gdbnt.005A1FA4<br />
005A2435Â  |.Â  84C0Â Â Â Â Â Â Â Â Â  |TEST AL,AL<br />
005A2437Â  |.Â  74 5EÂ Â Â Â Â Â Â Â  |JE SHORT gdbnt.005A2497<br />
005A2439Â  |.Â  A1 9CBF6700Â Â  |MOV EAX,DWORD PTR DS:[67BF9C]<br />
005A243EÂ  |.Â  C640 10 01Â Â Â  |MOV BYTE PTR DS:[EAX+10],1<br />
005A2442Â  |.Â  A1 9CBF6700Â Â  |MOV EAX,DWORD PTR DS:[67BF9C]<br />
005A2447Â  |.Â  E8 5CF9FFFFÂ Â  |CALL gdbnt.005A1DA8<br />
005A244CÂ  |.Â  84C0Â Â Â Â Â Â Â Â Â  |TEST AL,AL<br />
005A244EÂ  |.Â  74 25Â Â Â Â Â Â Â Â  |JE SHORT gdbnt.005A2475<br />
005A2450Â  |.Â  6A 00Â Â Â Â Â Â Â Â  |PUSH 0<br />
005A2452Â  |.Â  8D55 D4Â Â Â Â Â Â  |LEA EDX,DWORD PTR SS:[EBP-2C]<br />
005A2455Â  |.Â  A1 C4716700Â Â  |MOV EAX,DWORD PTR DS:[6771C4]<br />
005A245AÂ  |.Â  E8 F949E6FFÂ Â  |CALL gdbnt.00406E58<br />
005A245FÂ  |.Â  8B45 D4Â Â Â Â Â Â  |MOV EAX,DWORD PTR SS:[EBP-2C]Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A2462Â  |.Â  66:8B0D 64255&gt;|MOV CX,WORD PTR DS:[5A2564]Â Â Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A2469Â  |.Â  B2 02Â Â Â Â Â Â Â Â  |MOV DL,2Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A246BÂ  |.Â  E8 3800EEFFÂ Â  |CALL gdbnt.004824A8Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ; \gdbnt.004824A8<br />
005A2470Â  |.Â  E9 91000000Â Â  |JMP gdbnt.005A2506<br />
005A2475Â  |&gt;Â  6A 00Â Â Â Â Â Â Â Â  |PUSH 0<br />
005A2477Â  |.Â  8D55 D0Â Â Â Â Â Â  |LEA EDX,DWORD PTR SS:[EBP-30]<br />
005A247AÂ  |.Â  B8 341A5A00Â Â  |MOV EAX,gdbnt.005A1A34<br />
005A247FÂ  |.Â  E8 D449E6FFÂ Â  |CALL gdbnt.00406E58<br />
005A2484Â  |.Â  8B45 D0Â Â Â Â Â Â  |MOV EAX,DWORD PTR SS:[EBP-30]Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A2487Â  |.Â  66:8B0D 68255&gt;|MOV CX,WORD PTR DS:[5A2568]Â Â Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A248EÂ  |.Â  B2 01Â Â Â Â Â Â Â Â  |MOV DL,1Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A2490Â  |.Â  E8 1300EEFFÂ Â  |CALL gdbnt.004824A8Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ; \gdbnt.004824A8<br />
005A2495Â  |.Â  EB 6FÂ Â Â Â Â Â Â Â  |JMP SHORT gdbnt.005A2506<br />
005A2497Â  |&gt;Â  6A 67Â Â Â Â Â Â Â Â  |PUSH 67<br />
005A2499Â  |.Â  8D55 C8Â Â Â Â Â Â  |LEA EDX,DWORD PTR SS:[EBP-38]<br />
005A249CÂ  |.Â  A1 9CBF6700Â Â  |MOV EAX,DWORD PTR DS:[67BF9C]<br />
005A24A1Â  |.Â  E8 12F7FFFFÂ Â  |CALL gdbnt.005A1BB8<br />
005A24A6Â  |.Â  8B45 C8Â Â Â Â Â Â  |MOV EAX,DWORD PTR SS:[EBP-38]<br />
005A24A9Â  |.Â  50Â Â Â Â Â Â Â Â Â Â Â  |PUSH EAX<br />
005A24AAÂ  |.Â  8D55 C4Â Â Â Â Â Â  |LEA EDX,DWORD PTR SS:[EBP-3C]<br />
005A24ADÂ  |.Â  B8 3C1A5A00Â Â  |MOV EAX,gdbnt.005A1A3C<br />
005A24B2Â  |.Â  E8 A149E6FFÂ Â  |CALL gdbnt.00406E58<br />
005A24B7Â  |.Â  8B45 C4Â Â Â Â Â Â  |MOV EAX,DWORD PTR SS:[EBP-3C]<br />
005A24BAÂ  |.Â  8D4D CCÂ Â Â Â Â Â  |LEA ECX,DWORD PTR SS:[EBP-34]<br />
005A24BDÂ  |.Â  5AÂ Â Â Â Â Â Â Â Â Â Â  |POP EDX<br />
005A24BEÂ  |.Â  E8 8DA3F0FFÂ Â  |CALL gdbnt.004AC850<br />
005A24C3Â  |.Â  8B45 CCÂ Â Â Â Â Â  |MOV EAX,DWORD PTR SS:[EBP-34]Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A24C6Â  |.Â  66:8B0D 6C255&gt;|MOV CX,WORD PTR DS:[5A256C]Â Â Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A24CDÂ  |.Â  B2 01Â Â Â Â Â Â Â Â  |MOV DL,1Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ; |<br />
005A24CFÂ  |.Â  E8 D4FFEDFFÂ Â  |CALL gdbnt.004824A8Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ; \gdbnt.004824A8</p>
<p>Esto es la llamada, &#8220;zona caliente&#8221;. Bueno, a estas alturas el programa esta como una mujer desnuda, esperando que la desvirgemos; llegados a este punto poco hay que decir.</p>
<p>005A2430Â  |.Â  E8 6FFBFFFFÂ Â  |CALL gdbnt.005A1FA4</p>
<p>005A2447Â  |.Â  E8 5CF9FFFFÂ Â  |CALL gdbnt.005A1DA8</p>
<p>Estas son las llamadas a las dos funciones principales de chequeo. Con hacer un MOV EAX,01 en la entrada de la funciÃ³n, lo tenemos listo.</p>
<p><img class="aligncenter size-full wp-image-123" title="licensed" src="http://www.disidents.org/wp-content/uploads/2009/02/licensed.jpg" alt="licensed" width="297" height="273" /></p>
<p>Bueno, ahora solo queda que algÃºn valiente trace el cÃ³digo y escriba un keygen, o que alguien cree un loader para el programa.</p>
<p>4) Despedida</p>
<p>Este escrito pretende demostrar que no hay que ofuscarse al encontrar un problema, hay que buscar soluciones alternativas por nosotros mismos. Un abrazo a todos y no olvideis buscar el ZEN CRACKING!</p>
 <span class="post2pdf_span" style="border: 1px solid gray; width: 160px; text-align: left; "><a href="http://www.disidents.org/wp-content/plugins/post2pdf/generate.php?post=y" rel="nofollow"><img src="http://www.disidents.org/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convert this post to pdf.</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.disidents.org/2009/02/23/desempacar-desempacar-%c2%bfwhyyyyyy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solucionando un CrackME de Hispasec!</title>
		<link>http://www.disidents.org/2009/01/20/solucioncrackinghispasec/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=solucioncrackinghispasec</link>
		<comments>http://www.disidents.org/2009/01/20/solucioncrackinghispasec/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 10:35:10 +0000</pubDate>
		<dc:creator>noukeys</dc:creator>
				<category><![CDATA[ArtÃ­culos]]></category>
		<category><![CDATA[Cracking]]></category>
		<category><![CDATA[DesafÃ­o]]></category>
		<category><![CDATA[Hispasec]]></category>
		<category><![CDATA[IngenierÃ­a Inversa]]></category>
		<category><![CDATA[noukeys]]></category>
		<category><![CDATA[Reto Hispasec]]></category>

		<guid isPermaLink="false">http://www.disidents.org/?p=38</guid>
		<description><![CDATA[Â  En el presente escrito se abordarÃ¡ la resoluciÃ³n del CrackME de hispasec, llamado a partir de ahora crackme o reto, detallando las siguientes partes. Â Â¿QuÃ© se pretende? Â Encontrando la zona de interÃ©s. Â AnÃ¡lisis del algoritmo. Â GeneraciÃ³n de un fichero vÃ¡lido. Â Fallos de diseÃ±o. Â Despedida y cierre. Â  El crackme y el fichero de licencia [...]]]></description>
			<content:encoded><![CDATA[<p>Â  En el presente escrito se abordarÃ¡ la resoluciÃ³n del CrackME de hispasec, llamado a partir de ahora crackme o reto, detallando las siguientes partes.</p>
<ul type="disc">
<li class="MsoNormal">Â Â¿QuÃ© se pretende?</li>
<li class="MsoNormal">Â Encontrando la zona de interÃ©s.</li>
<li class="MsoNormal">Â AnÃ¡lisis del algoritmo.</li>
<li class="MsoNormal">Â GeneraciÃ³n de un fichero vÃ¡lido.</li>
<li class="MsoNormal">Â Fallos de diseÃ±o.</li>
<li class="MsoNormal">Â Despedida y cierre.</li>
</ul>
<p>Â   El crackme y el fichero de licencia lo podeis encontrar en el siguiente enlace.</p>
<ul>
<li><a title="This external link will open in a new window" href="http://rapidshare.com/files/183931546/Ficheros.rar.html" target="_blank">CrackME!</a></li>
</ul>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">1.- Â¿QuÃ© se pretende?</td>
</tr>
</tbody>
</table>
<p>Â   El objetivo de este reto, es generar un fichero de licencia vÃ¡lido y explicar los fallos de diseÃ±o encontrados en los hilos. Quiero comentar que en este documento encontraremos lo que a mi juicio son fallos de diseÃ±o, no tienen porque coincidir con los criterios de los autores del reto.  Para la resoluciÃ³n de este reto se ha utilizado un depurador y un editor hexadecimal, en mi caso he optado por Ollydbg y por Hex Workshop.  Â   Â </p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">2.- Encontrando la zona de interÃ©s.</td>
</tr>
</tbody>
</table>
<p>Â   Para llegar a la zona que nos interesa analizar, y sabiendo de antemano que necesitamos un fichero de licencia, tenemos varia maneras de abordar nuestro cometido; explicarÃ© un par de ellas.</p>
<ul type="disc">
<li class="MsoNormal">Â Localizando la funciÃ³n de chequeo mediante referencias a cadenas.</li>
</ul>
<p>Nada mÃ¡s cargar nuestro reto en el depurador, parados en el oep, buscamos referencias a cadenas con search for &gt; All referenced text strings. Obtenemos esto.</p>
<p style="text-align: center; " align="center"><img class="aligncenter size-full wp-image-56" title="img1nk" src="http://www.disidents.org/wp-content/uploads/2009/01/img1nk.jpg" alt="img1nk" width="498" height="74" /></p>
<p>Podemos ver las cadenas &#8220;crackem.lic&#8221;, &#8220;Good job!&#8221; y &#8220;Keep trying&#8221;, es evidente que nuestro objetivo es &#8220;Good job&#8221;. Seguimos la cadena y caemos en este punto.  <img class="aligncenter size-full wp-image-57" title="img2nk" src="http://www.disidents.org/wp-content/uploads/2009/01/img2nk.jpg" alt="img2nk" width="545" height="76" /> Â </p>
<p class="MsoNormal"><span lang="ES">En funciÃ³n de un par de comparaciones carga una de las cadenas. Seguimos el cÃ³digo hacia arriba, para ver donde se inicia esta funciÃ³n.</span></p>
<p class="MsoNormal"><span lang="ES"><img class="aligncenter size-full wp-image-58" title="img3nk" src="http://www.disidents.org/wp-content/uploads/2009/01/img3nk.jpg" alt="img3nk" width="578" height="130" /></span></p>
<p class="MsoNormal"><span lang="ES">AquÃ­ encontramos el inicio de la funciÃ³n, en la direcciÃ³n 004010B0, vamos a fijarnos un momento que llama a la API CreateFileA, pero el atributo Mode es OPEN_EXISTING. </span><span>Esto es importante para el siguiente punto.</span></p>
<ul type="disc">
<li class="MsoNormal"><span lang="ES">Â Localizando      la funciÃ³n de chequeo utilizando la API de Windows.</span></li>
</ul>
<p>Â </p>
<p class="MsoNormal"><span lang="ES">Ahora vamos a utilizar la API de Windows para llegar al mismo punto. Nada mÃ¡s cargar nuestro reto en el depurador, parados en el oep, buscamos referencias a APIs cargadas con search for &gt; Name (label) in current module. </span><span>Obtenemos esto.</span></p>
<p class="MsoNormal"><span><img class="aligncenter size-full wp-image-59" title="img4nk" src="http://www.disidents.org/wp-content/uploads/2009/01/img4nk.jpg" alt="img4nk" width="418" height="232" /></span></p>
<p class="MsoNormal">Â </p>
<p class="MsoNormal"><span lang="ES">Vamos a poner un BP en cada API especÃ­fica de ficheros.</span></p>
<p class="MsoNormal">Â </p>
<p class="MsoNormal">Â </p>
<p class="MsoNormal">KERNEL32.CreateFileA</p>
<p class="MsoNormal">KERNEL32.GetFileSize</p>
<p class="MsoNormal">KERNEL32.GetFileType</p>
<p class="MsoNormal">KERNEL32.ReadFile</p>
<p class="MsoNormal">KERNEL32.WriteFile</p>
<p class="MsoNormal">Â </p>
<p class="MsoNormal"><span lang="ES">Ejecutamos varias veces y vemos unas cuantas paradas antes de llegar a este BP en la direcciÃ³n 004010CB, tal como vemos en esta imagen.</span></p>
<p class="MsoNormal"><span lang="ES"><img class="aligncenter size-full wp-image-60" title="img5nk" src="http://www.disidents.org/wp-content/uploads/2009/01/img5nk.jpg" alt="img5nk" width="480" height="72" /></span></p>
<p class="MsoNormal"><span lang="ES">Seguimos el cÃ³digo hacia arriba, para ver donde se inicia esta funciÃ³n. </span><span>Encontramos el inicio en la direcciÃ³n 004010B0.</span></p>
<p class="MsoNormal"><span>Â </span></p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<p class="MsoNormal"><strong><span>3.- AnÃ¡lisis del algoritmo.</span></strong></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span>Â </span></p>
<p class="MsoNormal"><span lang="ES">Como ya hemos localizado la funciÃ³n de chequeo, ahora vamos a centrarnos en analizarla.</span></p>
<p class="MsoNormal"><span lang="ES">La funciÃ³n comprueba que existe el fichero &#8220;<em>crackme.lic&#8221;Â </em>, mira el tamaÃ±o del fichero, crea un buffer para guardar los datos, vuelca el contenido del fichero en el buffer creado, lanza los hilos que comprueban si los datos que hemos volcado son vÃ¡lidos y analiza el resultado de los hilos para decidir que cadena muestra. </span><span>Esto corresponde al siguiente esquema.</span></p>
<p class="MsoNormal"><span><img class="aligncenter size-full wp-image-61" title="img6nk" src="http://www.disidents.org/wp-content/uploads/2009/01/img6nk.jpg" alt="img6nk" width="261" height="776" /></span></p>
<p class="MsoNormal"><span lang="ES">Bueno, lo realmente interesante esta en los hilos de ejecuciÃ³n, asÃ­ que vamos a ver que es lo que hacen los mismos. Vamos a fijarnos en el argumento Thread Function, vemos que tiene el parÃ¡metro 00401000, este es el inicio de la funciÃ³n que ejecuta el hilo.</span></p>
<p class="MsoNormal">Â </p>
<p class="MsoNormal" style="text-align: center;"><img class="aligncenter size-full wp-image-84" title="img7nk" src="http://www.disidents.org/wp-content/uploads/2009/01/img7nk.jpg" alt="img7nk" width="486" height="262" /></p>
<p class="MsoNormal"><span lang="ES">Los bytes del fichero llave deben ser menores de 0Ah, es decir menores de 10d, si el hilo encuentra un byte igual a FFh, termina el anÃ¡lisis. Si nos fijamos, la funciÃ³n tiene dos salidas, una en la que realiza un &#8220;XOR EAX,EAX&#8221; o lo que es lo mismo, poner EAX a 0; y otra que realiza un &#8220;MOV EAX,1&#8243; o lo que es lo mismo, poner EAX a 1.</span></p>
<p class="MsoNormal"><span lang="ES">Â¿CÃ³mo conseguimos poner EAX a 1?, si solucionamos esta pregunta, tenemos solucionado el problema; para conseguir la ejecuciÃ³n de ese salto, debemos lograr que el resultado de AL tras la ejecuciÃ³n del cÃ³digo sea igual a 09h. </span><span>Veamos mÃ¡s claramente la ejecuciÃ³n.</span></p>
<p class="MsoNormal"><span><img class="aligncenter size-full wp-image-63" title="img8nk" src="http://www.disidents.org/wp-content/uploads/2009/01/img8nk.jpg" alt="img8nk" width="253" height="498" /></span></p>
<p class="MsoNormal"><span lang="ES">El proceso le el primer byte del fichero, carga otro byte que utiliza para los cÃ¡lculos, vamos a llamarlo byte auxiliar o aux; este byte, al principio va a estar a 0. Tras esto realiza una operaciÃ³n con este byte, aux = aux + 4*aux, esto lo guarda en edx. Carga en bl el dato leÃ­do del fichero y este dato junto con aux, lo utiliza para acceder a una tabla de bytes; el calculo es el siguiente desplazamiento = dato + aux * 2.</span></p>
<p class="MsoNormal"><span lang="ES">En nuestro caso necesitamos un desplazamiento de 48h, si no conseguimos cargar el 09h, el byte apuntado se convierte en el nuevo aux. </span><span>Y esto se repite hasta encontrar FFh.</span></p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<p class="MsoNormal"><strong><span lang="ES">4.- GeneraciÃ³n de un fichero vÃ¡lido.</span></strong></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<p class="MsoNormal"><span lang="ES">Bueno, conociendo el algoritmo, es fÃ¡cil generar un fichero vÃ¡lido, solo necesitamos conocer la tabla de bytes que hemos comentado anteriormente. Es la siguiente (las cabeceras de la tabla estÃ¡n representadas en decimal.).</span></p>
<p class="MsoNormal"><span>1 .- Bytes hexadecimales.</span></p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" width="376">
<tbody>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><span>Â </span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>0</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>1</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>2</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>3</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>4</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>5</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>6</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>7</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>8</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>9</span></strong></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>0</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>01</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>03</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>02</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>01</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>02</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>03</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>10</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>02</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>20</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>02</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>03</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>03</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>01</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>01</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>30</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>02</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>03</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>03</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>01</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>06</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>40</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>01</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>02</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>03</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>50</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>04</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>05</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>00</span></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>60</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>06</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>06</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>06</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>06</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>06</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>06</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>06</span></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>70</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>09</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
</tr>
<tr>
<td width="32">
<p class="MsoNormal" align="center"><strong><span>80</span></strong></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>08</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal" align="center"><span>07</span></p>
</td>
<td width="32">
<p class="MsoNormal"><span>Â  07</span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span>Â </span></p>
<p class="MsoNormal"><span lang="ES">Necesitamos conseguir un desplazamiento de 72d bytes. Para ello vamos a realizar las siguientes operaciones.</span></p>
<p class="MsoNormal"><span lang="ES">Aux = 0 (la primera pasada del algoritmo).</span></p>
<p class="MsoNormal"><span lang="ES">Data = 06 (Primer byte del fichero).</span></p>
<p class="MsoNormal"><span lang="ES">0 + 0*4 = 0.</span></p>
<p class="MsoNormal"><span lang="ES">6 + 0*2 = 6.</span></p>
<p class="MsoNormal"><span lang="ES">Cargamos el byte que hay con desplazamiento 6; el 04.</span></p>
<p class="MsoNormal"><span lang="ES">No es 09, por tanto lo usamos como nuevo aux.</span></p>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<p class="MsoNormal"><span lang="ES">Aux = 04.</span></p>
<p class="MsoNormal"><span lang="ES">Data = 07 (Segundo byte del fichero).</span></p>
<p class="MsoNormal"><span lang="ES">4 + 4*4 = 20.</span></p>
<p class="MsoNormal"><span lang="ES">7 + 20*2 = 47.</span></p>
<p class="MsoNormal"><span lang="ES">Cargamos el byte que hay con desplazamiento 46; el 08.</span></p>
<p class="MsoNormal"><span lang="ES">No es 09, por lo tanto lo usamos como nuevo aux.</span></p>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<p class="MsoNormal"><span lang="ES">Aux = 08.</span></p>
<p class="MsoNormal"><span lang="ES">Data = 01 (Tercer byte del fichero).</span></p>
<p class="MsoNormal"><span lang="ES">8 + 8*4 = 40.</span></p>
<p class="MsoNormal"><span lang="ES">1 + 40*2 = 81</span></p>
<p class="MsoNormal"><span lang="ES">Cargamos el byte que hay con desplazamiento 81; el 07;</span></p>
<p class="MsoNormal"><span lang="ES">No es 09, por lo tanto lo usamos como nuevo aux.</span></p>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<p class="MsoNormal"><span lang="ES">Aux = 07.</span></p>
<p class="MsoNormal"><span lang="ES">Data = 02 (Cuarto byte del fichero).</span></p>
<p class="MsoNormal"><span lang="ES">7 + 7*4 = 35.</span></p>
<p class="MsoNormal"><span lang="ES">02 + 35*2 = 72.</span></p>
<p class="MsoNormal"><span lang="ES">Cargamos el byte que hay con desplazamiento 72; el 09.</span></p>
<p class="MsoNormal"><span lang="ES">Es 09, por lo tanto terminamos en el return que nos interesa.</span></p>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<p class="MsoNormal"><span lang="ES">Si nos fijamos, el segundo hilo, utiliza exactamente la segunda funciÃ³n, ademÃ¡s, la tabla de bytes no es modificada, por tanto, sÃ³lo tenemos que duplicar la cadena de bytes obtenida anteriormente y replicarla. Al final, aÃ±adimos el byte de fin que utiliza el programa, el FFh.</span></p>
<p class="MsoNormal"><span lang="ES">La cadena de bytes que necesitamos escribir para generar un fichero vÃ¡lido es la siguiente:Â <em>&#8220;0607010206070102FF&#8221;</em>. Esto lo podemos hacer con nuestro editor hexadecimal preferido. Una vez realizado esto, tenemos solucionado este reto.</span></p>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<p class="MsoNormal"><strong><span>5.- Fallos de diseÃ±o.</span></strong></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span>Â </span></p>
<p class="MsoNormal"><span lang="ES">A continuaciÃ³n, comento lo queÂ <span style="text-decoration: underline;">a mi juicio</span>Â son fallos de diseÃ±o en el algoritmo.</span></p>
<ul type="disc">
<li class="MsoNormal"><span lang="ES">Â Existe      un fragmento de cÃ³digo, que no es necesario para la resoluciÃ³n del reto,</span></li>
</ul>
<p class="MsoNormal"><span>00401070Â Â  .Â  68 CE070000Â Â  push 7CE</span></p>
<p class="MsoNormal"><span>00401075Â Â  .Â  FFD6Â Â Â Â Â Â Â Â Â  Â Â Â Â Â Â call esiÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ;Â  kernel32.Sleep</span></p>
<p class="MsoNormal"><span>00401077Â Â  .Â  EB 04Â Â Â Â Â Â Â Â Â Â Â Â Â Â  jmp short crackme.0040107D</span></p>
<p class="MsoNormal"><span>Â </span></p>
<p class="MsoNormal"><span>0040107DÂ Â  &gt; \E8 67010000Â  call crackme.004011E9</span></p>
<p class="MsoNormal"><span lang="EN-GB">00401082Â Â  .Â  99Â Â Â Â Â Â Â Â Â Â Â  Â Â Â Â Â Â Â Â Â cdq</span></p>
<p class="MsoNormal"><span lang="EN-GB">00401083Â Â  .Â  B9 32000000Â Â  mov ecx,32</span></p>
<p class="MsoNormal"><span lang="EN-GB">00401088Â Â  .Â  F7F9Â Â Â Â Â Â Â  Â Â Â Â Â Â Â Â idiv ecx</span></p>
<p class="MsoNormal"><span>0040108AÂ Â  .Â  52Â Â Â Â Â Â Â Â Â Â  Â Â Â Â Â Â Â Â Â push edx</span></p>
<p class="MsoNormal"><span lang="EN-GB">0040108BÂ Â  .Â  FFD6Â Â Â Â Â Â Â Â Â Â Â Â Â Â  call esiÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ;Â  kernel32.Sleep</span></p>
<p class="MsoNormal"><span lang="EN-GB">Â </span></p>
<p class="MsoNormal"><span lang="ES">Si se ha utilizado a modo de cÃ³digo basura, deberÃ­a de repartirse mÃ¡s por la funciÃ³n o diseÃ±arse de alguna otra manera ya que es muy obvio comprobar que no es necesario analizarlo para la resoluciÃ³n del reto.</span></p>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<ul type="disc">
<li class="MsoNormal"><span lang="ES">Â Los      dos hilos que se lanzan para comprobar el fichero llave, utilizan la misma      funciÃ³n y esta hace exactamente lo miso. PodrÃ­amos haber solucionado esto      utilizando por ejemplo dos puntos de entrada para la funciÃ³n o una      modificaciÃ³n de la misma. Otra opciÃ³n hubiese sido utilizar otra funciÃ³n      que comprobase otras propiedades del los bytes del fichero.</span></li>
</ul>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<ul type="disc">
<li class="MsoNormal"><span lang="ES">Â Al      utilizar el segundo hilo para chequear los bytes del fichero, si no hemos      modificado la funciÃ³n ni hemos utilizado otra funciÃ³n distinta, al menos      deberÃ­amos haber cambiado la tabla de bytes para forzar un nuevo cÃ¡lculo      de la segunda parte de los bytes del fichero.</span></li>
</ul>
<p class="MsoNormal"><span lang="ES">Â </span></p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<p class="MsoNormal"><strong><span>6.- Despedida y cierre.</span></strong></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span>Â </span></p>
<p class="MsoNormal"><span lang="ES">Un Saludo a los miembros de Disidents.org, al canal #crackers, a thEpOpE, a NoMuRyTo y a toda la gente que me dejo pero sabe que puede darse por saludada. Espero que no seais muy duros en las crÃ­ticas de mi primera publicaciÃ³n.</span></p>
 <span class="post2pdf_span" style="border: 1px solid gray; width: 160px; text-align: left; "><a href="http://www.disidents.org/wp-content/plugins/post2pdf/generate.php?post=&" rel="nofollow"><img src="http://www.disidents.org/wp-content/plugins/post2pdf/icon/pdf.png" width="16px" height="16px" />convert this post to pdf.</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.disidents.org/2009/01/20/solucioncrackinghispasec/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
