ayuda con el crackme 8 de enigmagroup

Iniciado por Flamer, 8 Mayo 2019, 04:40 AM

0 Miembros y 1 Visitante están viendo este tema.

Flamer

Bueno no quería recurrir a ustedes pero no me quedo de otra

El problema con que me tope es el siguiente....el crackme pide nombre y serial.....hasta donde yo veo el nombre no es de mucha importancia...el serial es el difícil ya que este pasa por 2 fases y las dos fases tienen  que ser validas o true (para que me entiendan) para que el crackme muestre el mensaje correcto....otra cosa el serial tiene que ser mayor de 8 dígitos

================================================================

La primera fase toma todos los dígitos del serial.... los convierte en su valor ascii y les resta 32 a cada uno y los ira sumando y el resultado de la primera fase tiene que ser 522 para que sea true o validad

===============================================================

La segunda fase (esta es la buena) toma todos los dígitos del serial y les resta 32 hasta qui todo bien

Ahora haremos una pausa y explicare un detalle para continuar....si tenemos un serial "flamer007"

llamaremos posiciones impares del serial a las siguientes:   "f a e 0 7"  a las pares  "l m r 0"   bueno espero hallan entendido ese detalle

ahora en la segunda fase como dije ira tomando cada dígito del serial después le resta 32 y pregunta si la posición del serial es par o impar....bueno el primer dígito de todo serial sera impar así que lo toma en este caso es la "f"....le resta 32 y luego lo divide entre 100......luego lo multiplica por el resultado del dígito anterior del serial pero como es el primer dígito lo multiplica por 1

luego toma la "l" del serial anterior....le resta 32 y como la posición es par lo multiplica por el resultado del dígito anterior que en este caso fue la "f"

luego toma el tercer dígito que es "a"....le resta 32 y como la posición es impar lo divide entre 100 y luego lo multiplica por el resultado del dígito anterior

=========================================

Bueno creo que ya entendieron que ira asiendo con cada dígito.....el resultado de la segunda fase tiene que ser igual a   

112000.0636339199991

con todo y la parte fraccionaria

así que yo me las ingenie para hacer un programa por fuerza bruta(le digo fuerza bruta por que no se como llamarle)..... pero no es el típico programa que intenta clave por clave es diferente.... ya que tu iras escribiendo la clave y te muestra si te vas a cercando o alejando
del serial correcto


Código (html4strict) [Seleccionar]

<html>
<head>
<title>BruteForce Crackme 8 De EnigmaGroup   ...:::By Flamer:::...</title>
</head>
<body>
<center>
<font color="WHITE"><marquee direction="left" style="background:black;font-size:15pt;">BruteForce Crackme 8 De EnigmaGroup   ...:::By Flamer:::...</marquee></font><br><br>
Serial:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp <input type="text" id="100" size='50' style="text-align:center;" onkeyup="generar()">
<br><br><br><br>
522<div id="101" style="color:red;font-size:15pt;"></div>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
112000.0636339199991<div id="102" style="color:red;font-size:15pt;"></div>
</center>
<script language="vbscript">
dim s,c,d,x,caden
   
function generar
  s = document.getElementById("100").value
  c = 0
  for x = 1 to len(s)
    d = asc(mid(s,x,1)) - 32
    c = c + d
  next
   
  document.getElementById("101").innerHTML =  c
       
  c = 1
  for x = 1 to len(s)
     d = asc(mid(s,x,1)) - 32
     if (x mod 2) = 1 then
        d = d / 100
    c = c * d
  else
        c = c * d
     end if
  next
 
  document.getElementById("102").innerHTML = c
     
end function
</script>
</body>
</html>





pueden probarlo para que lo intenten solo copean y pegan en bloc de notas y lo aguardan con la extensión hta

otra solución que se me ocurrió para este crackme es lograr imprimir todos los números que sumen 522 del 1 al 90....si se preguntan por que del 1 al 90.... es simple 1 + 32 = 33......90 + 32 = 122 

el 122 es la z en ascii  y el 33 !

es el rango que elegí



bueno a ver quien me hecha la mano saludos Flamer y si se pregunta si are vídeo de esto si lo are



tincopasan

hola Flamer:
                    3 cosas:
1)¿pódes poner un link al crackme? no me pongo a buscarlo ni loco y prefiero ver que hace
2)tengo la curiosidad ¿los valores son en hexa o decimales? porque supongo que si los pusiste tal cual el debugger que uses están en hexa, pero por las dudas pregunto.
3)¿el serial tiene límite de largo?

en fin por si acaso quiero saber más, es que te pido poder verlo.
la primer parte es fácil conseguir un serial valido en hexa, pero quiero estar seguro para seguir con la segunda.

Saludos 

apuromafo CLS

Cita de: tincopasan en  8 Mayo 2019, 07:56 AM
hola Flamer:
                    3 cosas:
1)¿pódes poner un link al crackme? no me pongo a buscarlo ni loco y prefiero ver que hace
2)tengo la curiosidad ¿los valores son en hexa o decimales? porque supongo que si los pusiste tal cual el debugger que uses están en hexa, pero por las dudas pregunto.
3)¿el serial tiene límite de largo?

en fin por si acaso quiero saber más, es que te pido poder verlo.
la primer parte es fácil conseguir un serial valido en hexa, pero quiero estar seguro para seguir con la segunda.

Saludos 
el link
Citarhttp://challenges.enigmagroup.org/cracking/App8.exe

Flamer

#3
Cita de: tincopasan en  8 Mayo 2019, 07:56 AM
hola Flamer:
                   3 cosas:
1)¿pódes poner un link al crackme? no me pongo a buscarlo ni loco y prefiero ver que hace
2)tengo la curiosidad ¿los valores son en hexa o decimales? porque supongo que si los pusiste tal cual el debugger que uses están en hexa, pero por las dudas pregunto.
3)¿el serial tiene límite de largo?

en fin por si acaso quiero saber más, es que te pido poder verlo.
la primer parte es fácil conseguir un serial valido en hexa, pero quiero estar seguro para seguir con la segunda.

Saludos  

todos los valores que puse son en decimal

el serial debe de ser de 8 dígitos en adelante....al parecer no tiene limite

el crackme al descargarlo viene empacado con upx pero con la opción de -d se puede desempacar


esta es la parte de la fase 1

Código (asm) [Seleccionar]

00401E44 | 55                       | push ebp                                     |
00401E45 | 89E5                     | mov ebp,esp                                  |
00401E47 | 83EC 18                  | sub esp,18                                   |
00401E4A | 66:C745 FE 0000          | mov word ptr ss:[ebp-2],0                    |
00401E50 | C645 FD 00               | mov byte ptr ss:[ebp-3],0                    |
00401E54 | 0FBE45 FD                | movsx eax,byte ptr ss:[ebp-3]                |
00401E58 | 894424 04                | mov dword ptr ss:[esp+4],eax                 |
00401E5C | 8B45 08                  | mov eax,dword ptr ss:[ebp+8]                 |
00401E5F | 83C0 08                  | add eax,8                                    |
00401E62 | 890424                   | mov dword ptr ss:[esp],eax                   |
00401E65 | E8 7AE10200              | call app8.42FFE4                             |
00401E6A | 8038 00                  | cmp byte ptr ds:[eax],0                      |
00401E6D | 74 2F                    | je app8.401E9E                               |
00401E6F | 0FBE45 FD                | movsx eax,byte ptr ss:[ebp-3]                |
00401E73 | 894424 04                | mov dword ptr ss:[esp+4],eax                 |
00401E77 | 8B45 08                  | mov eax,dword ptr ss:[ebp+8]                 |
00401E7A | 83C0 08                  | add eax,8                                    |
00401E7D | 890424                   | mov dword ptr ss:[esp],eax                   |
00401E80 | E8 5FE10200              | call app8.42FFE4                             |
00401E85 | 66:0FBE10                | movsx dx,byte ptr ds:[eax]                   |
00401E89 | 0FB745 FE                | movzx eax,word ptr ss:[ebp-2]                |
00401E8D | 8D0402                   | lea eax,dword ptr ds:[edx+eax]               |
00401E90 | 83E8 20                  | sub eax,20                                   |
00401E93 | 66:8945 FE               | mov word ptr ss:[ebp-2],ax                   |
00401E97 | 8D45 FD                  | lea eax,dword ptr ss:[ebp-3]                 |
00401E9A | FE00                     | inc byte ptr ds:[eax]                        |
00401E9C | EB B6                    | jmp app8.401E54                              |
00401E9E | 66:817D FE 0A02          | cmp word ptr ss:[ebp-2],20A                  |
00401EA4 | 0F94C0                   | sete al                                      |
00401EA7 | 0FB6C0                   | movzx eax,al                                 |
00401EAA | C9                       | leave                                        |
00401EAB | C3                       | ret                                          |





y haca la segunda fase

Código (asm) [Seleccionar]

00401EAC | 55                       | push ebp                                     |
00401EAD | 89E5                     | mov ebp,esp                                  |
00401EAF | 83EC 18                  | sub esp,18                                   |
00401EB2 | D9E8                     | fld1                                         |
00401EB4 | DD5D F8                  | fstp qword ptr ss:[ebp-8],st(0)              |
00401EB7 | C645 F7 00               | mov byte ptr ss:[ebp-9],0                    |
00401EBB | 0FBE45 F7                | movsx eax,byte ptr ss:[ebp-9]                |
00401EBF | 894424 04                | mov dword ptr ss:[esp+4],eax                 |
00401EC3 | 8B45 08                  | mov eax,dword ptr ss:[ebp+8]                 |
00401EC6 | 83C0 08                  | add eax,8                                    |
00401EC9 | 890424                   | mov dword ptr ss:[esp],eax                   |
00401ECC | E8 13E10200              | call app8.42FFE4                             |
00401ED1 | 8038 00                  | cmp byte ptr ds:[eax],0                      |
00401ED4 | 74 76                    | je app8.401F4C                               |
00401ED6 | 0FB645 F7                | movzx eax,byte ptr ss:[ebp-9]                |
00401EDA | 24 01                    | and al,1                                     |
00401EDC | 84C0                     | test al,al                                   |
00401EDE | 75 36                    | jne app8.401F16                              |
00401EE0 | 0FBE45 F7                | movsx eax,byte ptr ss:[ebp-9]                |
00401EE4 | 894424 04                | mov dword ptr ss:[esp+4],eax                 |
00401EE8 | 8B45 08                  | mov eax,dword ptr ss:[ebp+8]                 |
00401EEB | 83C0 08                  | add eax,8                                    |
00401EEE | 890424                   | mov dword ptr ss:[esp],eax                   |
00401EF1 | E8 EEE00200              | call app8.42FFE4                             |
00401EF6 | 0FBE00                   | movsx eax,byte ptr ds:[eax]                  |
00401EF9 | 83E8 20                  | sub eax,20                                   |
00401EFC | 50                       | push eax                                     |
00401EFD | DB0424                   | fild st(0),dword ptr ss:[esp]                |
00401F00 | 8D6424 04                | lea esp,dword ptr ss:[esp+4]                 |
00401F04 | DD05 40104400            | fld st(0),qword ptr ds:[441040]              |
00401F0A | DEF9                     | fdivp st(1),st(0)                            |
00401F0C | DD45 F8                  | fld st(0),qword ptr ss:[ebp-8]               |
00401F0F | DEC9                     | fmulp st(1),st(0)                            |
00401F11 | DD5D F8                  | fstp qword ptr ss:[ebp-8],st(0)              |
00401F14 | EB 2C                    | jmp app8.401F42                              |
00401F16 | 0FBE45 F7                | movsx eax,byte ptr ss:[ebp-9]                |
00401F1A | 894424 04                | mov dword ptr ss:[esp+4],eax                 |
00401F1E | 8B45 08                  | mov eax,dword ptr ss:[ebp+8]                 |
00401F21 | 83C0 08                  | add eax,8                                    |
00401F24 | 890424                   | mov dword ptr ss:[esp],eax                   |
00401F27 | E8 B8E00200              | call app8.42FFE4                             |
00401F2C | 0FBE00                   | movsx eax,byte ptr ds:[eax]                  |
00401F2F | 83E8 20                  | sub eax,20                                   |
00401F32 | 50                       | push eax                                     |
00401F33 | DB0424                   | fild st(0),dword ptr ss:[esp]                |
00401F36 | 8D6424 04                | lea esp,dword ptr ss:[esp+4]                 |
00401F3A | DD45 F8                  | fld st(0),qword ptr ss:[ebp-8]               |
00401F3D | DEC9                     | fmulp st(1),st(0)                            |
00401F3F | DD5D F8                  | fstp qword ptr ss:[ebp-8],st(0)              |
00401F42 | 8D45 F7                  | lea eax,dword ptr ss:[ebp-9]                 |
00401F45 | FE00                     | inc byte ptr ds:[eax]                        |
00401F47 | E9 6FFFFFFF              | jmp app8.401EBB                              |
00401F4C | DD45 F8                  | fld st(0),qword ptr ss:[ebp-8]               |
00401F4F | DD05 48104400            | fld st(0),qword ptr ds:[441048]              |
00401F55 | DAE9                     | fucompp                                      |
00401F57 | DFE0                     | fnstsw ax                                    |
00401F59 | 9E                       | sahf                                         |
00401F5A | 0F94C0                   | sete al                                      |
00401F5D | 0F9BC2                   | setnp dl                                     |
00401F60 | 20D0                     | and al,dl                                    |
00401F62 | 0FB6C0                   | movzx eax,al                                 |
00401F65 | C9                       | leave                                        |
00401F66 | C3                       | ret                                          |





no me queda otra opción creo que tengo que hacer un algoritmo para imprimir todos los números que sumen 522 desde el 1 al 90.....revertir el salto es fácil pero creo que ese no es el chiste

Saludos Flamer

Geovane

#4
Atualizei adiante.
Para servicios, envíe un mensaje privado, sólo para servicios en curso hasta fecha de 10/06/2019

Flamer

#5
Cita de: Geovane en  8 Mayo 2019, 22:26 PM
Ola, encontré, aquí es el punto de oro.

Una sugerencia
Saludos.



https://screenshot.net/pt/9x161uz

si ingreso eso de serial en la primera fase me da 680 y tiene que ser 522 no cumple la condicion

y en la segunda fase me da lo siguiente



no cumple tampoco....a lo cual no es el serial tampoco

saludos y gracias por intentarlo

MOD: Imagen adaptada a lo permitido.

MCKSys Argentina

Con 9 "Z" (ZZZZZZZZZ) cumples la 1era condicion. Lo encontre haciendo (522 / 9) + 32 = 90 (Z).
Si lo haces por 8, te da con decimal.

La segunda condicion no la cumple, pero ves que ese valor es mucho mas grande que el que quieres comparar.

Para un bruteforcer, deberias evaluar que la proporcion de los caracteres que vas probando, sea la correcta. Por ejemplo, si pruebas con 9 chars, por cada char menos a 90, vas a tener que compensar lo que le falte para llegar. Sinó, no pasarás la sumatoria.

Sacando conclusiones rapidamente, el serial valido tiene 8 o 9 chars.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Flamer

#7
Cita de: MCKSys Argentina en  9 Mayo 2019, 01:22 AM
Con 9 "Z" (ZZZZZZZZZ) cumples la 1era condicion. Lo encontre haciendo (522 / 9) + 32 = 90 (Z).
Si lo haces por 8, te da con decimal.

La segunda condicion no la cumple, pero ves que ese valor es mucho mas grande que el que quieres comparar.

Para un bruteforcer, deberias evaluar que la proporcion de los caracteres que vas probando, sea la correcta. Por ejemplo, si pruebas con 9 chars, por cada char menos a 90, vas a tener que compensar lo que le falte para llegar. Sinó, no pasarás la sumatoria.

Sacando conclusiones rapidamente, el serial valido tiene 8 o 9 chars.

Saludos!

Ni loco me pongo a crear un brute force de 8 a 9 dígitos tardaría mucho intentar clave por clave.......el programa que quiero hacer que estoy haciendo mejor dicho... me imprimiría si acaso menos de 3000 contraseñas según yo si mis cálculos no están mal..... es el siguiente pero lo haremos con cifras menores para que me entiendan

para obtener todos los números que sumen 8 usando los digitos del 1 al 5 serian estos

11111111
2111111
311111
41111
5111

221111
23111
2411
251
22211
2231
224
2222
2321
233
242

32111
3311
341
35
3221
323
332

4211
431
44
422

521
53


ese es un ejemplo pero lo quiero hacer con 522 usando los números del 1 al 90 y ya después verificamos cual serial es el que cumple las 2 condiciones

Geovane

#8
Solución parcial 2 de 3

La contraseña pasa por 3 comprobaciones
https://1drv.ms/u/s!Atrdu75vJCB1iCBeRgvNqBTNTA1M

prueba 1, igual o mayor que 8 Bytes

prueba 2, suma.    Nuevo valor = N  X= resultado   >   X=X+(N+10)
suma valor del nuevo byte + 10, ejemplo:
55000000000000000000000000000000

Byte  Value
01    15
02    2A
...........
..........   Finalmente en el último byte, última suma, necesita 0x20A, entonces será True
https://1drv.ms/u/s!Atrdu75vJCB1iCE1_jFEtAJIGntE

Falta prueba 3, trabaja con datos del coprocesador.
https://1drv.ms/u/s!Atrdu75vJCB1iB-WmvQcjnQ08QZ_

Si nadie resuelve, edito el resultado aquí.
Saludos
Para servicios, envíe un mensaje privado, sólo para servicios en curso hasta fecha de 10/06/2019