x-LOCKS Crackme | C++ | Facil

En esta ocasion resolvere un crackme que tenia en el disco duro desde hace unos meses, es especial ya que no debemos parchear un serial o combinacion de nombre + contraseña, si no que debemos hacer que cambie la informacion del textbox que nos dice unregistered a registered, qui estan las instrucciones que nos enseña el crackme.

1

Eso lo muestra en el boton “about/rules”, si pulsamos OK simplemente se cierra, asique de entrada no tenemos referencias sobre la zona que buscamos.

Vamos a abrirlo en el ollydbg y nos fijamos que esta comentado el codigo, esto nos facilita mucho las cosas

Esta zona nos interesa

0040109D . 68 33344000 PUSH X-LOCK~1.00403433 ; ASCII “Here starts the test for the registration”
004010A2 . 8D05 10304000 LEA EAX,DWORD PTR DS:[403010]
004010A8 . 3D 12304000 CMP EAX,X-LOCK~1.00403012
004010AD . 74 0A JE SHORT X-LOCK~1.004010B9
004010AF . C705 0C304000 >MOV DWORD PTR DS:[40300C],0
004010B9 > 68 5D344000 PUSH X-LOCK~1.0040345D ; ASCII “Here ends the test for the registration”

Nos dice que ahi esta el test de registro y vemos que en 004010AD tenemos un salto condicional de si es equivalente… Vamos a cambiarlo por un JNE.

Otra zona que nos interesa es esta ya que vemos en la zona ASCII que si pasamos por 004010F6 nos deberia cambiar el texto a “fullversion”. Como tiene un salto condicional tipo JNE (JNZ) que hace que nos lo pasemos le cambiaremos la direccion del salto a 004010F6

004010EE . 75 15 JNZ SHORT X-LOCK~1.00401105
004010F0 . 8D05 35304000 LEA EAX,DWORD PTR DS:[403035]
004010F6 . 50 PUSH EAX ; /Text => “Fullversion”
004010F7 . FF35 4C304000 PUSH DWORD PTR DS:[40304C] ; |hWnd = NULL
004010FD . 8D05 C8114000 LEA EAX,DWORD PTR DS:[4011C8] ; |
00401103 . FFD0 CALL EAX ; \SetWindowTextA
00401105 > A1 0C304000 MOV EAX,DWORD PTR DS:[40300C]

Asi deberia quedar:

004010EE 75 06 JNZ SHORT X-LOCK~1.004010F6

Sigue el codigo y nos encontramos con otro salto JNE

0040110D . 75 15 JNZ SHORT X-LOCK~1.00401124
0040110F . 8D05 41304000 LEA EAX,DWORD PTR DS:[403041]
00401115 . 50 PUSH EAX ; /Text => “Registered”
00401116 . FF35 50304000 PUSH DWORD PTR DS:[403050] ; |hWnd = NULL
0040111C . 8D05 C8114000 LEA EAX,DWORD PTR DS:[4011C8] ; |
00401122 . FFD0 CALL EAX ; \SetWindowTextA

0040110D . 75 15 JNZ SHORT X-LOCK~1.00401124 Esta linea nos dice que si no es equivalente se salte a 00401124 y no cambie el valor de la caja de texto de Unregistered A registered, y nosotros queremos que precisamente  haga eso, asi que redireccionamos el salto a 00401115

Seguimos bajando y nos encontramos las siguientes lineas

00401124 > EB 78 JMP SHORT X-LOCK~1.0040119E
00401126 > 837D 0C 10 CMP DWORD PTR SS:[EBP+C],10
0040112A . 75 07 JNZ SHORT X-LOCK~1.00401133
0040112C . E8 2A000000 CALL X-LOCK~1.0040115B
00401131 . EB 6B JMP SHORT X-LOCK~1.0040119E
00401133 > 837D 10 65 CMP DWORD PTR SS:[EBP+10],65
00401137 . 75 1C JNZ SHORT X-LOCK~1.00401155
00401139 . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
0040113B . 8D05 19304000 LEA EAX,DWORD PTR DS:[403019] ; |
00401141 . 50 PUSH EAX ; |Title => “X-Locks crackme for newbies”
00401142 . 8D05 54304000 LEA EAX,DWORD PTR DS:[403054] ; |
00401148 . 50 PUSH EAX ; |Text => “Lockless presents:
X-Locks crackme for newbies

Welcome to my first crackme! 🙂
There are 3 ways to make this prog to fullversion,
and there are 3 ways to register this program!
If you’re a good cracker, try to crack the 2nd che”…
00401149 . 6A 00 PUSH 0 ; |hOwner = NULL
0040114B . 8D05 BC114000 LEA EAX,DWORD PTR DS:[4011BC] ; |
00401151 . FFD0 CALL EAX ; \MessageBoxA
00401153 . EB 49 JMP SHORT X-LOCK~1.0040119E

00401124 > EB 78 JMP SHORT X-LOCK~1.0040119E esta linea nos manda directos al final del codigo, necesitamos redireccionar ese salto, lo haremos a la direccion 0040117A que es la zona donde nos interesa ir

0040117A |. 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
0040117C |. 8D05 0B334000 LEA EAX,DWORD PTR DS:[40330B] ; |
00401182 |. 50 PUSH EAX ; |Title => “Congratulations!”
00401183 |. 8D05 1C334000 LEA EAX,DWORD PTR DS:[40331C] ; |
00401189 |. 50 PUSH EAX ; |Text => “You’ve cracked my 1st crackme!! 😉

Mail me your cracked .exe, a tut is welcome!
I think you’re able to crack my 2nd crackme
when I release it, and: It’ll be harder to crack!”
0040118A |. 6A 00 PUSH 0 ; |hOwner = NULL
0040118C |. 8D05 BC114000 LEA EAX,DWORD PTR DS:[4011BC] ; |
00401192 |. FFD0 CALL EAX ; \MessageBoxA

Debe quedarnos asi en el ollydbg

2

Guardamos el nuevo binario y comprobamos

3

Nos muestra este mensaje al abrirlo, pero porque no nos sale la ventana de antes poniendo Registered y Fullversion si lo hemos parcheado para que asi sea? Facil, el motivo es el ultimo salto que hemos hecho, si no hubieramos tocado esa linea nos mostrarioa la ventana pero el crackme estaria incompleto porque el autor nos pide las tres cosas.

4

Ahi esta

descarga

Eso es todo.

4N006135 Crackme | Ensamblador | 4 niveles |

En esta ocasion voy a resolver un pack de crackmes. Se dividen en

nivel 0 facil

nivel 1 facil

nivel 2 medio

nivel 3 dificil

En todos vamos a parchear, por tanto solo necesitamos el ollydbg y algo de logica.

Empezamos con el

NIVEL 0

Simplemente nos pide una contraseña, vamos a parchearlo de tal modo que acepte cualquier contraseña como valida

Para empezar lo abrimos en el ollydbg y boton derecho ->  search for -> all referenced text strings

Doble click sobre la linea que contiene el mensaje “nope, try”

Nos lleva a la direccion 0040142A, esa es la zona que nos da el mensaje erroneo, y vemos que llegamos ahi tras un salto condicional JNE (JNZ) que lo que hace es saltar a la parte de error si la contraseña no es equivalente, simplemente sustituimos por JE.

Copiamos todas las modificaciones al ejecutable y testeamos:

level0

NIVEL 1

En esta ocasion nos pide un nombre de usuario y de contraseña, de nuevo no generaremos un keygen sino que parchearemos para que acepte cualquier cosa como valida.

Para empezar lo abrimos en el ollydbg y boton derecho ->  search for -> all referenced text strings

Buscamos el mensaje de error “nope, try again”

Nos lleva a la direccion 00401454

lvl21

Esta es la seccion de codigo que nos interesa, vamos a ver que hace exactamente

Ponemos un breakpoint en la direccion 0040143C para quitarnos de en medio ese bucle.

Debajo nos encontramos con la instruccion JNZ que nos dice que si los datos no son equivalentes salte al mensaje de “nope, try again”. Vamos a ver otro metodo para parchear este procedimiento, para ello necesitamos la direccion del mensaje de good job = 00401446

Ahora lo que vamos a hacer es que cuando fallemos el serial y por tanto nos salte a la parte de nope, try again, poner ahi un jump a la parte de good job. LVL22

Nos quedaria asi, guardamos las modificaciones y verificamos.

level1

Listo

NIVEL 2

En este nivel nos pide un usuario y contraseña, el usuario ya viene rellenado, vamos a parchear para que valga cualquier contraseña.

Para empezar lo abrimos en el ollydbg y boton derecho ->  search for -> all referenced text strings

Buscamos el mensaje de error “nope, try again”

Nos manda a la direccion 004014AC 

lvl31

Vemos que hay un bucle en la direccion 00401464

Ponemos un breakpoint ahi para que se lo salte

Ahora analizamos la estructura del otro procedimiento

0040148F |> 803E 00 /CMP BYTE PTR DS:[ESI],0
00401492 |. 74 0A |JE SHORT level-2.0040149E
00401494 |. 8A06 |MOV AL,BYTE PTR DS:[ESI]
00401496 |. 3A07 |CMP AL,BYTE PTR DS:[EDI]
00401498 |. 75 12 |JNZ SHORT level-2.004014AC
0040149A |. 46 |INC ESI
0040149B |. 47 |INC EDI
0040149C |.^EB F1 \JMP SHORT level-2.0040148F salta siempre al principio

Como en este procedimiento lo que hace es slatar siempre a la primera linea podriamos hacer dos cosas, la primera cambiar la direccion del JMP a la direccion donde se encuentra el mensaje de buen trabajo, o cambiar la primera linea y sustituirla por un JMP que apunte hacia la direccion de buen trabajo, haremos la segunda.

La direccion de buen trabajo es 0040149E 

Asi que sustituyendo JMP SHORT level-2.0040148F por JMP SHORT level-2.0040149E    

O sustituyendo  CMP BYTE PTR DS:[ESI],0  por JMP SHORT level-2.0040149E    

Tendriamos resuleto este crackme, si usamos el segundo metodo quedaria asi

level2

Solucionado

**El keygen lo dejaremos para otra ocasion

NIVEL 3

En este nivel nos pide usuario.

Para empezar lo abrimos en el ollydbg y boton derecho ->  search for -> all referenced text strings

Buscamos la del mensaje de error como siempre y nos devuelve a la direccion 004014A9

Pero vemos que hay dos, vamos a examinar primero el que tenemos marcado.

Vemos que esa direccion es llamada desde los saltos  0040142C, 00401438, 00401445, 0040144F, 0040145C, 0040146E, 00401497

Vamos a buscar el primero, lo localizamos y vemos que un poco mas arriba en la direccion 0040141C hay un salto que apunta justamente al otro mensaje de error, la logica nos dice que si saltamos desde esta direccion a la direccion 00401499 que asu vez salta a la zona de good job habremos solucionado el crack me, lo hacemos y ya tendremos solucionado el reto 

LEVEL3

Reto superado, hasta la proxima!

A Crackme | C++ | Facil

En esta ocasion voy a enseñar como parchear un crackme desarrollado en c++, de una forma muy muy simple.

crackme aqui

Abrimos nuestro crackme

1

Lo que vamos a hacer es ir a Ollydbg, y abrir nuestro archivo.

En cualquier sitio pulsamos boton derecho y Search for -> All referenced text strings.

2

Doble click sobre la linea que nos muestra Wrong Password

3

Vemos que en ese corchete estan las instrucciones

La linea que nos interesa es la direccion 0040147E

Aqui hay un salto condicional, si el valor coincide con la contraseña valida salta a 0040A083  y nos muestra el mensaje password ok

Frente a esta situacion podemos plantear dos soluciones validas, la primera sustituir el salto JE (salta si es equivalente) por JNE (salta si no es equivalente), esta seria una solucion perfectamente valida pero no seria la solucion optima, ya que la probabilidad de que pongamos la contraseña valida siempre va a estar ahi, y entonces saltariamos directos a la zona de wrong password

La solucion optima es:

Sustituir el salto condicional JE por un salto directo JMP 

Aqui tenemos el resultado

4

Crackme | Nivel 2 | .NET

En esta ocasion voy a mostrar la resolucion de este crackme hecho en .net, no es demasiado dificil, consta principalmente de una nag al abrir, un formulario donde introducir usuario y contraseña y otra nag al salir.
Tiene proteccion anti olly.

1 2 3 4

Esa es toda la estructura que tiene el crackme, empezaremos intentando entender el algoritmo de generacion de seriales, para ello usaremos  ilspy e ildasm. En ilspy veremos el codigo desempacado, debemos buscar en el boton register que es el que verifica nuestras credenciales.

5

Este es el codigo que nos devuelve
private void Button1_Click(object sender, EventArgs e)
{
this.shadow = this.rand.Next(1, 99999999);
if (Operators.ConditionalCompareObjectEqual(this.TextBox2.Text, Operators.ConcatenateObject(this.TextBox1.Text + this.TextBox3.Text + this.TextBox4.Text + this.TextBox5.Text + this.TextBox6.Text + this.TextBox7.Text + this.TextBox8.Text + this.TextBox9.Text + this.TextBox1.Text, this.shadow), false))
{
this.Button2.Enabled = true;
this.Button1.Enabled = false;
this.Button1.Text = “Registered to Shadow”;
this.Text = “Registered to Shadow!”;
}
else
{
Interaction.MsgBox(“Incorrect serial, noob.”, MsgBoxStyle.OkOnly, null);
}
}

 

El codigo lo que hace es declarar una variable a la que le asigna un valor numerico generado de forma aleatoria y luego lo concatena con la informacion de una serie de textbox. Ahora tenemos que buscar que informacion contiene cada textbox, ya que en el formulario solo aparecen 2 y ahi vemos que hay hasta 9.

La informacion que buscamos la encontramos en

6

Echando un vistazo vemos que el textbox1 corresponde a nuestro nombre de usuario y el textbox2 es el correspondiente a la contraseña. El resto de textbox hacen una concatenacion de la siguiente manera

‘username’ur’a’stupid’dumb’idiotic’crazy’noob’username’numero aleatorio

*Sin comillas

Generar un algoritmo/keygen para generar seriales validos deberia ser muy facil de no ser por el numero aleatorio del final (hasta 99999999). Para resolver este problema intentaremos ver si se puede sustituir el numero random por un numero fijo, ya que de no ser asi cada vez que generasemos un serial tendriamos una posibilidad entre 99999999  de que fuese valido, algo totalmente ridiculo.

Para ello vamos a ildasm y buscamos el boton register

7

Pero que buscamos exactamente aqui? Buscamos el numero  99999999 en hexadecimal para saber donde esta y en que zona mas o menos tenemos que buscar

Podemos usar mismamente la calculadora de windows

8

Ya sabemos que el numero aleatorio estara identificado en el codigo con 5F5E0FF

 

9

Esta es la linea que buscamos

IL_0008:  /* 20   | FFE0F505         */ ldc.i4     0x5f5e0ff

Ahora tenemos que localizar la zona donde empieza este procedimiento, osea el offset.

Method begins at RVA 0x2f60

Esa linea es la que nos interesa, el

RVA = (VA – RA)

Ahora buscamos el VA y el RA  con el programa peID

RA = 00002000

VA = 00000400

Simplemente restamos (hexadecimalmente) y obtenemos

1C00

Ahora le restamos 1C00 a 2F60 = 1360

Ahora abrimos nuestro crackme con un editor hexadecimal y nos dirigimos al offset 0x1360

10

Ahi tenemos marcado en verde el offset buscado y recuadrado en azul el numero aleatorio, ahora simplemente vamos a ahcer que ese numero no sea aleatorio sino que sea siempre 1.

11

Tal que asi.

Ahora vamos a crear un keygen, ya que el algoritmo consiste en una concatenacion vamos a hacer algo rapido en lenguaje batch

@echo off
color a
:inicio
set/p nom=nombre de usuario?=
pause
cls
echo la contraseña es:
echo %nom%urastupiddumbidioticcrazynoob%nom%1
pause
cls
goto inicio

De este modo y usando como nombre de usuario reversecoder.tk 

obtenemos:

22

reversecoder.tkurastupiddumbidioticcrazynoobreversecoder.tk1

Verificamos

33

Ahora solo nos quedan las nags del principio y del final, para ello haremos un procedimiento parecido, localizaremos su posicion en memoria y quitaremos ese procedimiento.

Para la nag 1 que sale al abrir, buscamos en el ildasm

44

Vemos que su RVA es 3088, hacemos el mismo procedimiento que antes, es decir, le restamos 1C00 y obtenemos el offset donde se encuentra el procedimiento

0x1488

Nopeamos todas las instrucciones con ceros exxcepto el ret

55

Para la nag2 exactamente lo mismo, su posicion en memoria seria

3074 – 1C00 = 1474

offset nag 2 = 0x1474

Parcheamos

66

Ya tenemos resuelto el crackme con proteccion anti ollydbg y desarrollado en net.

 

Reto de esteganografia de HighSec

En esta ocasion voy a mostrar como resolver el reto que nos propone HighSec

Empezamos con la imagen y 0 pistas, vamos a empezar analizando la imagen visualmente

 Revisando las esquinas no vemos nada raro, ningun pixel movido ni nada. En el medio del cerebro parece como si tuviese letras o algo asi… vamos a ver analizando los colores si realmente hay algo ahi o es solo mi imaginación.

highsec 1

Efectivamente pone algo Highsec, pero es logico, no? es su logo.. sigamos con el analisis.

Vamos a abrir la imagen con un editor hexadecimal a ver si hay algo interesante en la cabecera o en el EOF.

highsec 2

Efectivamente, ahi esta la pista, entramos a esa url y se nos descarga un archivo .zip con una nueva imagen y 2 archivos de texto, uno que parece un diccionario y otro que nos da una pequeña aclaracion para el siguiente paso, vamos a ver la imagen.

Imagen2

Muestra una cadena codificada con base64, pero parece que hay algo mas… hay como letras en la parte blanca, vamos a ver si cambiando los colores vemos algo…

highsec 3

Parece que no es nada, vamos a ver si tiene algo en hexadecimal como la anterior…

Nada, todo esta totalmente normal, vamos a ver si al descifrar la cadena en base64 que nos da sacamos alguna pista…

HighSecCon

Llegados a este punto podemos pensar que o bien es la solucion al reto o es una contraseña, vamos a ponernos en el segundo caso, y vamos a ver si hay algun archivo oculto….

Usaremos el programa OpenStego usando la contraseña que tenemos.

highsec 4

Parece que ha sido buena idea seguir buscando, en ese link encontramos un script en python que sirve para crackear un hash mediante diccionario, aqui es donde le vemos la utilidad al archivo dic.txt que obtuvimos junto a la imagen, lo usamos y nos da el texto que corresponde al hash MD5 con el que hemos comparado.

z3cur3-3573g0 

Un texto con un cifrado muy clasico; la solucion al reto es

zecure-estego 

Reto resuelto. Fácil pero interesante. Hasta la proxima

This is legal | Realistic | Challenge 2 | Medio

El escenario que nos plantea este reto es el siguiente:

You have heard about people being targeted by a new religion called Egitology. Another hacker infiltrated the group and discovered that the list of people they target is stored on the site but he doesn’t know where.

 

Hay una nueva religión en la que hay un hacker infiltrado que nos ha pasado la web de la organización y sabe que en el servidor almacenan datos sobre sus objetivos.

Ante este escenario podemos sacar dos conclusiones

La primera que vamos a tener que llevar a cabo un proceso para acceder, quizas sea crackeando una contraseña o vulnerando la seguridad de algun modo.

La segunda es que una vez dentro debemos buscar una base de datos, dumpearla, borrar los logs y salir.

Vamos a empezar…

Al darle a begin challengue de nuevo nos sale la estructura, parece un fallo del servidor, vamos a darle a login.php

Bien, nos sale el panel de inicio en la web de la religion, nos pide usuario y contraseña

Vamos a probar con las combinaciones mas usadas como por ejemplo root:toor
your not an egitologist, get out!

Vaya, parece que este no es el camino…

Dado que la estructura del login esta escrita en php podemos probar con inyeccion de parametros a ver si sacamos algo. Probare con una comilla simple ‘.

you have got the right idea, dont give up 🙂

Mmmm, nos dice que vamos por buen camino y que no nos rindamos.

Ahora estoy convencido de que el formulario es vulnerable a una inyeccion, como buscamos una base de datos tenemos que acceder con un usuario con permisos elevados, por ejemplo “admin” sera entonces en el label de la contraseña donde usaremos un codigo algo mas avanzado para la inyeccion como 1’or’1’=’1 

this is legal realistic 2-1

Una vez dentro podemos salirnos o bien ver que nos muestra al dar en “Back up Database”

— Table structure for table `users`

CREATE TABLE `users` (
`ID` int(2) NOT NULL auto_increment,
`Username` varchar(255) NOT NULL,
`Password` varchar(255) NOT NULL,
`Level_access` varchar(9) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Username` (`Username`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


— Dumping data for table `users`

INSERT INTO `users` (`ID`, `Username`, `Password`, `Level_Access`) VALUES #La estructura que nos muestra la tabla usuarios es la siguiente ID, nombre de usuario, contraseña, nivel de acceso
(1, ‘Admin’, ‘3819585098e8cfe6c4fe4fcfd3a0fd59’, ‘Limited’),
(2, ‘SuperAdmin’, ‘8cc4ba204dd44cc92d7646ad035b7647’, ‘Unlimited’)

Aqui vemos que la cuenta Admin, que es con la que hemos conseguido acceder tiene el nivel de acceso limitado, asi que vamos a loguearnos con la cuenta SuperAdmin que debe tener acceso a todo, supongo que lo tendra tambien a la base de datos objetivo.

Pero hay un problema, la contraseña esta cifrada, debemos descifrar el hash, para eso lo primero que debemos hacer es identificar el tipo. Usando el script hash identifier nos da estas posibles soluciones:

– MD5
– NTLM
– MD4
– LM
– RAdmin v2.x
– Haval-128
– MD2
– RipeMD-128
– Tiger-128
– Snefru-128
– MD5(HMAC)
– MD4(HMAC)
– Haval-128(HMAC)
– RipeMD-128(HMAC)
– Tiger-128(HMAC)
– Snefru-128(HMAC)
– MD2(HMAC)
– MD5(ZipMonster)
– MD5(HMAC(WordPress))
– Skein-256(128)
– Skein-512(128)
– md5($pass.$salt)
– md5($pass.$salt.$pass)
– md5($pass.md5($pass))
– md5($salt.$pass)
– md5($salt.$pass.$salt)
– md5($salt.$pass.$username)
– md5($salt.’-‘.md5($pass))
– md5($salt.md5($pass))
– md5($salt.md5($pass).$salt)
– md5($salt.MD5($pass).$username)
– md5($salt.md5($pass.$salt))
– md5($salt.md5($salt.$pass))
– md5($salt.md5(md5($pass).$salt))
– md5($username.0.$pass)
– md5($username.LF.$pass)
– md5($username.md5($pass).$salt)
– md5(1.$pass.$salt)
– md5(3 x strtoupper(md5($pass)))
– md5(md5($pass)), Double MD5
– md5(md5($pass).$pass)
– md5(md5($pass).$salt), vBulletin < v3.8.5
– md4($salt.$pass)
– md4($pass.$salt)md5(md5($pass).md5($pass))
– md5(md5($pass).md5($salt))
– md5(md5($salt).$pass)
– md5(md5($salt).md5($pass))
– md5(md5($username.$pass).$salt)
– md5(md5(base64_encode($pass)))
– md5(md5(md5($pass)))
– md5(md5(md5(md5($pass))))
– md5(md5(md5(md5(md5($pass)))))
– md5(sha1($pass))
– md5(sha1(base64_encode($pass)))
– md5(sha1(md5($pass)))
– md5(sha1(md5($pass)).sha1($pass))
– md5(sha1(md5(sha1($pass))))
– md5(strrev($pass))
– md5(strrev(md5($pass)))
– md5(strtoupper(md5($pass)))
– md5(strtoupper(md5(strtoupper(md5(strtoupper(md5($pass)))))))
– strrev(md5($pass))
– strrev(md5(strrev(md5($pass))))
– 6 x md5($pass)
– 7 x md5($pass)
– 8 x md5($pass)
– 9 x md5($pass)
– 10 x md5($pass)
– 11 x md5($pass)
– 12 x md5($pass)

Son muchas opciones como para probarlas todas, pero podemos sospechar que es un hash MD5, para este tipo de hash hay dos metodos de crackeo, por colision y por comparacion, usaremos un servicio online para compararlo en una base de datos.

Una vez tengamos la contraseña descifrada nos metemos con la cuenta de SuperAdmin

this is legal realistic 2-2

Con un poco de suerte en estas carpetas estará lo que buscamos.

En el directorio root/misc/ esta la carpeta targets, la borramos

Antes de salir borramos tambien la carpeta logs root/images/logs

this is legal realistic 2-3