Problema con hash256 + salt.

Iniciado por AngelFire, 9 Noviembre 2019, 20:05 PM

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

AngelFire

Intro
Si se tiene una contraseña --> pepe123
y se aplica la funcion --> sha256(md5(pepe123))

Quedaria:
MD5(pepe123) --> 7edede46f596b580cd10469463987280
SHA256(7edede46f596b580cd10469463987280) -->
5e023ea5ef7edf956f28ddbca1be64b1f92c03f4ec157c6ee54bd021454c3bf8

Por lo que si se le desea hacer ataque mediante diccionario o fuerza bruta, solo habria que seguir la funcion sha256(md5($password)) buscando que el hash generado coincida con el que se este probando en cuestion  ;D.

Problema:
Tengo la contraseña. ClrHwOntoLT!5
Tengo el hash256  Password="66b4d8b1cd542de72cf847b20d869b2a882a46751b71bffb8aa2eda10c1e0483" (varia con cada reinicio del router)
Tengo la salt Salt="4be3f31fa33ff3236dacfa61"(varia con cada reinicio del router)
Pero no tengo la funcion aplicada.

Ya probe las siguiente sin obtener resultado satisfactorio  :-\.
10  md5($pass.$salt)  luego sha256
20  md5($salt.$pass) luego sha256
1410  sha256($pass.$salt)
1420  sha256($salt.$pass)
3610  md5(md5($salt).$pass) luego sha256
3710  md5($salt.md5($pass)) luego sha256
3800  md5($salt.$pass.$salt) luego sha256
3910  md5(md5($pass).md5($salt)) luego sha256
4010  md5($salt.md5($salt.$pass)) luego sha256
4110  md5($salt.md5($pass.$salt)) luego sha256
20710   sha256(sha256($pass).$salt)

Existe alguna herramienta o script que ayude con este tema de identificar que funcion se puede haber usado teniendo como partida el HASH la  SALT y la contraseña?

O una lista de las mezclas mas comunes.

Saludos y gracias por leer.


engel lex

Citarsha256(md5(pepe123))

XD sacado de: "curso basico de como bajarle la seguridad a un algoritmo fuerte"


no no hay forma de identificar el algoritmo de hash mas allá de su ultima iteracion, ya que el hash destruye la infomacion previa...

un metodo aplicado son multiples iteraciones del mismo algoritmo algo como

$x = $password
for ($i=0; $i<128;$i++){
  $x = sha($x.$salt);
}


donde $x es el hash resultante
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AngelFire

#2
Basado en el seguimiento de la evolucion de proteccion de las password del Router contenido en el fichero hw_ctree.xml, no me quedo mas que buscar versiones anteriores con el mismo usuario pero diferente algoritmo de proteccion.
No llegue a uno tan viejo como md5($pass) o la pass en texto plano.
Pero si al sha256(md5($pass)) aun sin la presencia de salt.

Por lo que agradeceria cualquier sugerencia para mejorar este codigo en python3.

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
import hashlib

if len(sys.argv) < 3:
   print('-' * 60)
   print('Example:\n'
     'python3 crack_sha256_md5.py <hash> <wordlists>\n'
         'python3 crack_sha256_md5.py b39038cda84f07c98941510f939de32b0d4e3431d762b01ec166192be3b8735d /usr/share/wordlists/rockyou.txt\n'
     'Algoritm:\n'
     'sha256(md5($pass))\n'
     'compare sha256(md5($pass))=hash \n')      
   print('-' * 60)
else:
count = 0
wordlists = sys.argv[2]
hash = sys.argv[1]
data = open(wordlists, 'r')
datal = data.readlines()
for linea in datal:
print (linea[:-1])
linea = linea[:-1] #Quitar el salto de linea para que no altere el hash a generar.
try:
hash_md5 = hashlib.md5(linea.encode())
print (hash_md5.hexdigest())
hash_sha256 = hashlib.sha256(hash_md5.hexdigest().encode())
print (hash_sha256.hexdigest())
if hash_sha256.hexdigest() == hash:
print('-' * 60)
print ('Password: ',linea)
print('-' * 60)
break
else:
count +=1
pass
except:
pass

print ('Total Password Failed: ',str(count))


Si ya se que fue un poco vago lo del try: y except: para saltarme las utf-8 donde la ñ de contraseña entre otros caracteres pueden tirar el programa, quizas algo de threading lo mejoraria pero no se si es demasiado para el CPU. Y despues de haber roto varios HDD manipulando los ficheros de 1.4billion password leak  haciendo uso no adecuado de constantes salvas en ciclos for (error de ultra novato), me preocupo un tilin mas por el hardware cuando hago codigo como amateur porque no soy programador  ;D.

Saludos