Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9e49d8c

Browse files
committed
Adding support for SHA2 hash functions
1 parent 2ada9e9 commit 9e49d8c

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

lib/core/enums.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ class HASH:
107107
ORACLE_OLD = r'(?i)\A[01-9a-f]{16}\Z'
108108
MD5_GENERIC = r'(?i)\A[0-9a-f]{32}\Z'
109109
SHA1_GENERIC = r'(?i)\A[0-9a-f]{40}\Z'
110+
SHA224_GENERIC = r'(?i)\A[0-9a-f]{28}\Z'
111+
SHA384_GENERIC = r'(?i)\A[0-9a-f]{48}\Z'
112+
SHA512_GENERIC = r'(?i)\A[0-9a-f]{64}\Z'
110113
CRYPT_GENERIC = r'(?i)\A(?!\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\Z)(?![0-9]+\Z)[./0-9A-Za-z]{13}\Z'
111114
WORDPRESS = r'(?i)\A\$P\$[./0-9A-Za-z]{31}\Z'
112115

lib/utils/hash.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828

2929
from hashlib import md5
3030
from hashlib import sha1
31+
from hashlib import sha224
32+
from hashlib import sha384
33+
from hashlib import sha512
3134
from Queue import Queue
3235

3336
from lib.core.common import Backend
@@ -216,6 +219,35 @@ def sha1_generic_passwd(password, uppercase=False):
216219

217220
return retVal.upper() if uppercase else retVal.lower()
218221

222+
def sha224_generic_passwd(password, uppercase=False):
223+
"""
224+
>>> sha224_generic_passwd(password='testpass', uppercase=False)
225+
'648db6019764b598f75ab6b7616d2e82563a00eb1531680e19ac4c6f'
226+
"""
227+
228+
retVal = sha224(password).hexdigest()
229+
230+
return retVal.upper() if uppercase else retVal.lower()
231+
232+
def sha384_generic_passwd(password, uppercase=False):
233+
"""
234+
>>> sha384_generic_passwd(password='testpass', uppercase=False)
235+
'6823546e56adf46849343be991d4b1be9b432e42ed1b4bb90635a0e4b930e49b9ca007bc3e04bf0a4e0df6f1f82769bf'
236+
"""
237+
238+
retVal = sha384(password).hexdigest()
239+
240+
return retVal.upper() if uppercase else retVal.lower()
241+
242+
def sha512_generic_passwd(password, uppercase=False):
243+
"""
244+
>>> sha512_generic_passwd(password='testpass', uppercase=False)
245+
'78ddc8555bb1677ff5af75ba5fc02cb30bb592b0610277ae15055e189b77fe3fda496e5027a3d99ec85d54941adee1cc174b50438fdc21d82d0a79f85b58cf44'
246+
"""
247+
248+
retVal = sha512(password).hexdigest()
249+
250+
return retVal.upper() if uppercase else retVal.lower()
219251

220252
def crypt_generic_passwd(password, salt, uppercase=False):
221253
"""
@@ -297,6 +329,9 @@ def _encode64(input_, count):
297329
HASH.ORACLE_OLD: oracle_old_passwd,
298330
HASH.MD5_GENERIC: md5_generic_passwd,
299331
HASH.SHA1_GENERIC: sha1_generic_passwd,
332+
HASH.SHA224_GENERIC: sha224_generic_passwd,
333+
HASH.SHA384_GENERIC: sha384_generic_passwd,
334+
HASH.SHA512_GENERIC: sha512_generic_passwd,
300335
HASH.CRYPT_GENERIC: crypt_generic_passwd,
301336
HASH.WORDPRESS: wordpress_passwd,
302337
}

0 commit comments

Comments
 (0)