Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: AngelFire en 1 Junio 2023, 17:50 pm



Título: Crack winrar password conociendo parte de la contraseña
Publicado por: AngelFire en 1 Junio 2023, 17:50 pm
Buenas. Lo que sucede es lo siguiente, tengo un winrar el cual le puse contraseña y solo recuerdo como termina. Como los caracteres olvidados son inferiores a 6, quisera saber como puedo hacer fuerza bruta manteniendo el final de la contraseña.
Ejemplo
Contraseña: xxxxxx08574

O sea los numeros finales se mantienen, exites ya algun software que permita eso o hay que irse a python.

Gracias por la lectura asi como por cualquier comentario de antemano.

Como se puede mejorar esta variante?

Código:
import os
Alphabets = "0123456789"
B = '050678844'
for a in range(0,10):
 for b in range(0,10):
  for c in range(0,10):
    for d in range(0,10):
        Brute = Alphabets[a] + Alphabets[b] + Alphabets[c] + Alphabets[d] + B
        os.popen("Rar.exe x -p" + Brute + " CI_XXXXXXXX78844.rar")
        print (str(Brute))
#   raw_input()
raw_input("Done !")


Título: Re: Crack winrar password conociendo parte de la contraseña
Publicado por: MCKSys Argentina en 1 Junio 2023, 23:19 pm
Hola!

Como se puede mejorar esta variante?

Una variante sin tener que usar range:

Código:
import os
Alphabets = "0123456789"
B = '050678844'
for a in Alphabets:
 for b in Alphabets:
  for c in Alphabets:
    for d in Alphabets:
        Brute = a + b + c + d + B
        os.popen("Rar.exe x -p" + Brute + " CI_XXXXXXXX78844.rar")
        print (str(Brute))
#   raw_input()
raw_input("Done !")

Saludos!


Título: Re: Crack winrar password conociendo parte de la contraseña
Publicado por: AngelFire en 3 Junio 2023, 00:16 am
En el siguiente codigo si se extiende algo como:

Código:
for a in Alphabets:
    for b in Alphabets:
        for c in Alphabets:
            for d in Alphabets:
                for e in Alphabets:
                    for f in Alphabets:
                        for g in Alphabets:
                            for h in Alphabets:
Terminan abriendose suficientes procesos como para colgar el ordenador. No veo como solucionarlo con os.close, alguna recomendación, para correr todo el proceso sin colgar el ordenador.

Gracias y saludos.


Título: Re: Crack winrar password conociendo parte de la contraseña
Publicado por: Danielㅤ en 3 Junio 2023, 01:35 am
Hola, en el código por lo que veo las variables a, b, c y d tienen todas el mismo valor ya que en cada for vuelve cada variable a empezar de cero el bucle por lo que todas terminan teniendo el mismo valor, de todas maneras hay mejores formas para lograr eso, siempre se recomienda aprovechar un bucle para usarlo con otras iteraciones.

Por otro lado se debería trabajar con threads (multi hilos) usando el método  join() para que el programa pueda trabajar por separado y no saturarse.


Saludos


Título: Re: Crack winrar password conociendo parte de la contraseña
Publicado por: AngelFire en 3 Junio 2023, 01:53 am
Chatgpt:
Para garantizar que el proceso unrar se complete correctamente antes de continuar con la siguiente iteración del bucle, puedes utilizar subprocess en lugar de os.popen(). La función subprocess.run() espera a que el proceso se complete antes de continuar con el código

Asi va ok, puden probar con un winrar que llamen test.rar y una contraseña de 3 digitos que terminen en 3 por ejemplo:

Código:
003
013
023
033
043
053
063
073
083
093
103
113
123
203
213
223
233
243
253
263
273
283
293
303
313
323
333
343
353
363
373
383
393
403
413
423
433
443
453
463
473
483
493
503
513
523
533
543
553
563
573
583
593
603
613
623
633
643
653
663
673
683
693
703
713
723
733
743
753
763
773
783
793
803
813
823
833
843
853
863
873
883
893
903
913
923
933
943
953
963
973
983
993

Código:
import subprocess
Alphabets = "0123456789"
B = '3'
for a in Alphabets:
 for b in Alphabets:
    Brute = a + b + B
    process = subprocess.run(["unrar.exe", "x", "-p" + Brute, "test.rar"])
    print (str(Brute))
    if process.returncode == 0:
        break

El tema es como seria para evitar todas las salidas fallidas de errores tipo:
Código:
UNRAR 6.21 x64 freeware      Copyright (c) 1993-2023 Alexander Roshal


Extracting from test.rar

Total errors: 1


Título: Re: Crack winrar password conociendo parte de la contraseña
Publicado por: AngelFire en 3 Junio 2023, 02:09 am
Respuesta final ya manejando las salidas de unrar. Aporte Chatgpt

Código:
import subprocess
Alphabets = "0123456789"
B = '3'
for a in Alphabets:
    for b in Alphabets:
        Brute = a + b + B
        print (str(Brute))
        process = subprocess.run(["unrar.exe", "x", "-p" + Brute, "test.rar"],
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        stdout = process.stdout.decode()  # Salida estándar del proceso
        stderr = process.stderr.decode()  # Salida de error del proceso

        if "Total errors" not in stdout:
            print("Contraseña encontrada:", Brute)
            break


Título: Re: Crack winrar password conociendo parte de la contraseña
Publicado por: D3s0rd3n en 12 Noviembre 2023, 19:08 pm
Se me hace Bien que quieres hacer las cosas por tu cuenta y que bueno que tengas la iniciativa de hacer las cosas.

Habiendo dicho eso tu Codigo es muy ineficiente, Al igual que algunos que eh visto en Las respiestas de chatgpt. Quisiera ser mejor programador para explicarte la mejor manera de hacerlo. Pero a veces, y mas en Este tipp de casos es mejor no reinventar la rueda y tomar lo que ya existe. Dicho esto tu mejor opcion hasta donde yo se es  usar una combinacion de crunch con John the ripper.

Crunch es muy rapido para generar diccionarios. En tu Caso especifico seria Algo como :

Código:
crunch 11 11 -t @@@@@@08574 -o crackrar.txt

Esto genera una lista de minimi 11 caracteres y maximo 11 caracteres terminando en 08754.

John the ripper es mejor por que no tienes que empezar un proceso Nuevo para cada intento. Esto es muy intensivo para los recursos y aumenta El tiempo exponencialmente con la mayor cantidad de claves a intentar. Con John puedes obtener un hash del archivo y crackear el  hash sin tener que montar El programa de rar para cada intento. Para esto necesitas rar2john lo que se veria Algo como:

Código:
rar2john archivoencryptado.rar > hash

Esto genera El hash de tu archivo y lo Guarda en un archivo nombrado "hash" (o lo que tu quieres). Despues usa jtr para crackearlo:

Código:
john hash -w crackrar.txt

Y pues si es cierto tu formato deberias tener tu clave.

Si tienes mas informacion sobre tu clave seria mejor. Como por ejemplo.si sabes que no hay caracteres que se repiten 3 veces como "aaa" o "333" o sis sabes que clave no tiene caracteres especiales o mayusculas etc. Esto reduce Bastante El tamaño de tu diccionario y por ende El tiempo que tardas en crackear.

A mi me gusta jtr pero tambien puedes usar hascat (especialmente si tienes gpu). Me parece que Seria usar -m 12500 pero no se. Seria buscarlo en la documentacion. Espero que te ayude esto.