Muy buenas a todos, hoy me puse a codear un "password recovery" ya que una amiga perdio su contraseña de 13 caracteres de un documento de word.
Ella dice recordar que era algo como "carlacarlaXXX" donde las X pueden ser un numero del 0-9, una letra de la A-Z o a-z.
Por lo tanto cada X puede ser 62 valores diferentes:
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
a lo que iba que me salen 62^3 combinaciones (hay que descubrir 3 caracteres) que son 238328 combinaciones.
Entonces, a fuerza bruta solo llevaría unas horas sacarla.
He hecho el diccionario y un script en vbs que va comprobando todas las passwords de la lista y funciona correctamente.
Lo he calculado y para comprobar las 238328 combinaciones en mi pc tardaría unas 8 horas (ya que con 1000 tarda 2 minutos ==> Regla de 3 ).
Mi pregunta es, hay alguna forma de hacer el script mas efectivo?
Lo he codeado tan bien como he podido y hace unas 8,33 comprobaciones/segundo.
No es urgente y de hecho el problema con mi amiga ya estara resuelto pero ya que he codeado todo esto me gustaría saber como acelerarlo ya que me descargue otros software de fuerza bruta y son capaces de comprobar hasta unas 104-114 passwords por segundo.
Les dejo el code del script vbs:
[code2=vbnet]On Error Resume Next 'Para que cada vez que de error por una password incorrecta no termine la ejecucion del programa
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\Users\*****\Desktop\Diccionari.txt") 'cambien la ruta del diccionario!
Set oWord = CreateObject("Word.Application")
Do until f.AtEndOfStream 'Repite el bucle hasta que terminen todos los 238328 passwords de la lista del archivo Diccionari.txt
strf=f.readline 'lee la siguiente password del archivo Diccionari.txt
set oDoc = oWord.Documents.Open("C:\Users\*****\Desktop\Prova2.docx",,,,strf) 'Abre el documento de word con la password strf (que es una linea de texto de Diccionari.txt) ¡Cambien la ruta del documento word!
if Not Err.Number <> 0 then 'Si probamos una password incorrecta el script devuelve error. Entonces cuando no devuelva error sera cuando haya probado la password correcta.
oWord.Visible = True 'Entonces hacemos la ventana de word visible con el documento ya abierto
wscript.echo "La contrasenya era: " + strf 'Avisamos de cual era el password.
wscript.Quit 'Cerramos el script
end if
Err.Clear 'limpiamos el ultimo error
Loop
f.Close
'Password de Prova2.docx = carlacarla0G7
'carlacarla0G7 es la password numero 1000 de Diccionari.txt[/code2]
Les dejo el diccionario, script y documento de word protegido para descargar:
[Enlace externo eliminado para invitados]
Muchas Gracias!
Ella dice recordar que era algo como "carlacarlaXXX" donde las X pueden ser un numero del 0-9, una letra de la A-Z o a-z.
Por lo tanto cada X puede ser 62 valores diferentes:
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
a lo que iba que me salen 62^3 combinaciones (hay que descubrir 3 caracteres) que son 238328 combinaciones.
Entonces, a fuerza bruta solo llevaría unas horas sacarla.
He hecho el diccionario y un script en vbs que va comprobando todas las passwords de la lista y funciona correctamente.
Lo he calculado y para comprobar las 238328 combinaciones en mi pc tardaría unas 8 horas (ya que con 1000 tarda 2 minutos ==> Regla de 3 ).
Mi pregunta es, hay alguna forma de hacer el script mas efectivo?
Lo he codeado tan bien como he podido y hace unas 8,33 comprobaciones/segundo.
No es urgente y de hecho el problema con mi amiga ya estara resuelto pero ya que he codeado todo esto me gustaría saber como acelerarlo ya que me descargue otros software de fuerza bruta y son capaces de comprobar hasta unas 104-114 passwords por segundo.
Les dejo el code del script vbs:
[code2=vbnet]On Error Resume Next 'Para que cada vez que de error por una password incorrecta no termine la ejecucion del programa
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\Users\*****\Desktop\Diccionari.txt") 'cambien la ruta del diccionario!
Set oWord = CreateObject("Word.Application")
Do until f.AtEndOfStream 'Repite el bucle hasta que terminen todos los 238328 passwords de la lista del archivo Diccionari.txt
strf=f.readline 'lee la siguiente password del archivo Diccionari.txt
set oDoc = oWord.Documents.Open("C:\Users\*****\Desktop\Prova2.docx",,,,strf) 'Abre el documento de word con la password strf (que es una linea de texto de Diccionari.txt) ¡Cambien la ruta del documento word!
if Not Err.Number <> 0 then 'Si probamos una password incorrecta el script devuelve error. Entonces cuando no devuelva error sera cuando haya probado la password correcta.
oWord.Visible = True 'Entonces hacemos la ventana de word visible con el documento ya abierto
wscript.echo "La contrasenya era: " + strf 'Avisamos de cual era el password.
wscript.Quit 'Cerramos el script
end if
Err.Clear 'limpiamos el ultimo error
Loop
f.Close
'Password de Prova2.docx = carlacarla0G7
'carlacarla0G7 es la password numero 1000 de Diccionari.txt[/code2]
Les dejo el diccionario, script y documento de word protegido para descargar:
[Enlace externo eliminado para invitados]
Muchas Gracias!