Skip to content

Commit de500d7

Browse files
Merge pull request #10 from Morgan-Phoenix/passlib_addition
2 parents 42cc05f + f054472 commit de500d7

File tree

4 files changed

+171
-17
lines changed

4 files changed

+171
-17
lines changed

enrocrypt/core.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from typing import Any
21
from enrocrypt.hashing import Hashing
32
from enrocrypt.encryption import Encryption
43
from enrocrypt.basic import Basic
@@ -13,9 +12,9 @@ class Core(Hashing,Encryption,Basic):
1312
}'''
1413
def __init__(self) -> None:
1514
self.salt = ''
16-
def set_config(self,*args: Any):
17-
'''Sets The Configuration For This Class And All Other Classes'''
18-
configs = (args[0]['configs']['salt_file'])
15+
self.byt = 512
16+
def set_config(self,con:dict):
17+
configs = (con['salt_file'])
1918
value = self.__Set_Salt(configs)
2019
return value
2120
def __str__(self) -> str:
@@ -27,11 +26,13 @@ def __Set_Salt(self,salt:list):
2726
self.salt = bytes(salts.encode())
2827
return True
2928
except FileNotFoundError:
30-
return Warning("No Salt File Found At The Given Location Using Random Salt")
29+
return print(Warning("No Salt File Found At The Given Location Using Random Salt"))
3130
else:
3231
return False
3332
def get_hash_object(self):
3433
'''Returns A Hashing Class Object That Is Pre-Configured To Use Custom Salt If Any'''
3534
hashing = Hashing()
36-
hashing(bytes(self.salt.encode()))
37-
return hashing
35+
if self.salt == "":
36+
print(print(Warning("No Personalized Salt Loaded In The Memory, Using Random Salt")))
37+
hashing(bytes(self.salt.encode()),self.byt)
38+
return hashing

enrocrypt/hashing.py

+16-10
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
from cryptography.hazmat.primitives import hashes
33
from typing import Any
44
class Hashing():
5-
def __init__(self) -> None:
5+
def __init__(self):
66
self.salt = None
7+
self.byt = 512
78
def __call__(self, *args:Any):
89
self.salt = args[0]
9-
def __str__(self) -> str:
10+
def __str__(self):
1011
return "Hashing Funcitions In Here"
1112

1213
def __Salt(self,data,salt:bytes = None):
@@ -19,7 +20,10 @@ def __Salt(self,data,salt:bytes = None):
1920
salts.append(str(data).split("'")[1])
2021
salts.append(str(data).split("'")[1])
2122
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
22-
return base64.standard_b64encode(bytes((str(base64.urlsafe_b64encode(bytes(''.join(salts).encode()))).split("'")[1]+str(base64.urlsafe_b64encode(base64.standard_b64encode((bytes(''.join(salts).encode()))))).split("'")[1]).encode()))
23+
salting = base64.standard_b64encode(bytes((str(base64.urlsafe_b64encode(bytes(''.join(salts).encode()))).split("'")[1]+str(base64.urlsafe_b64encode(base64.standard_b64encode((bytes(''.join(salts).encode()))))).split("'")[1]).encode()))
24+
if len(salting) > self.byt:
25+
salting = salting.decode()[0:self.byt]
26+
return salting
2327
if salt:
2428
salts = []
2529
salts.append(str(hashlib.sha256(salt).digest()).split("'")[1])
@@ -29,8 +33,11 @@ def __Salt(self,data,salt:bytes = None):
2933
salts.append(str(data).split("'")[1])
3034
salts.append(str(data).split("'")[1])
3135
salts.append(str(hashlib.sha256(salt).digest()).split("'")[1])
32-
return base64.standard_b64encode(bytes((str(base64.urlsafe_b64encode(bytes(''.join(salts).encode()))).split("'")[1]+str(base64.urlsafe_b64encode(base64.standard_b64encode((bytes(''.join(salts).encode()))))).split("'")[1]).encode()))
33-
36+
salting2 = base64.standard_b64encode(bytes((str(base64.urlsafe_b64encode(bytes(''.join(salts).encode()))).split("'")[1]+str(base64.urlsafe_b64encode(base64.standard_b64encode((bytes(''.join(salts).encode()))))).split("'")[1]).encode()))
37+
if salting2 > self.byt:
38+
salting2 = salting2.decode()[0:self.byt]
39+
return salting2
40+
3441
def Standard_Multi_Hash(self,Data:str):
3542
'''Inreversable Salted Hash Function Don't Use If U Want To Get The Content Back'''
3643
a = hashlib.sha256(); a.update(bytes(Data.encode())); b = []
@@ -46,7 +53,7 @@ def Standard_Multi_Hash(self,Data:str):
4653
d[0] = self.__Salt(c,salt=self.salt)
4754
final = self.BLAKE2(bytes(str(d[0]).encode()))
4855
return(final)
49-
56+
5057
def SHA256(self,data:str):
5158
sha = hashlib.sha256(bytes(data.encode()))
5259
Hash = sha.digest()
@@ -59,9 +66,9 @@ def SHA512(self,data:str):
5966

6067
def SHA244(self,data:str):
6168
sha = hashlib.sha224(bytes(data.encode()))
62-
Hash = str(sha.digest())
63-
return self.__Salt(Hash,salt=self.salt)
64-
69+
hash = str(sha.digest())
70+
return self.__Salt(hash,salt=self.salt)
71+
6572
def SHA384(self,data:str):
6673
sha = hashlib.sha384(bytes(data.encode()))
6774
Hash = str(sha.digest())
@@ -71,4 +78,3 @@ def BLAKE2(self,data:bytes):
7178
a = hashes.Hash(hashes.BLAKE2s(32))
7279
a.update(data)
7380
return self.__Salt(a.finalize(),salt=self.salt)
74-

map/disection.txt

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
BREAKING
2+
3+
pbkdf2-sha256$29000$C8F4r/U.5/yfM2ZszVnr3Q$7obwOw/4aZ.hYnhme9Zxqr4KgPIZ4EhRBnLKR6K9WeY (happiness)
4+
5+
Step -> 1
6+
7+
pbkdf2-sha256$29000$C8F4r
8+
/
9+
U.5
10+
/
11+
yfM2ZszVnr3Q$7obwOw
12+
/
13+
4aZ.hYnhme9Zxqr4KgPIZ4EhRBnLKR6K9WeY
14+
15+
Step -> 2
16+
17+
pbkdf2-sha256 NO
18+
$ NO
19+
29000 NO
20+
$ NO
21+
C8F4r YES
22+
/ NO
23+
U.5 YES
24+
/ NO
25+
yfM2ZszVnr3Q YES
26+
$ NO
27+
7obwOw YES
28+
/ NO
29+
4aZ.hYnhme9Zxqr4KgPIZ4EhRBnLKR6K9WeY YES
30+
31+
32+
33+
TILL NOW RESULT
34+
35+
C8F4rU.5yfM2ZszVnr3Q4aZ.hYnhme9Zxqr4KgPIZ4EhRBnLKR6K9WeY
36+
37+
38+
SALTING
39+
40+
will use basic SHA256 to hash some random text and then add it randomly (i.e. in any order)
41+
to the original text. As everything is hashed it will be very hard to find out the original
42+
text and the Salt
43+
44+
BASIC SALT MODLE
45+
46+
salts = []
47+
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
48+
salts.append(str(data).split("'")[1])
49+
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
50+
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
51+
salts.append(str(data).split("'")[1])
52+
salts.append(str(data).split("'")[1])
53+
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
54+
return base64.standard_b64encode(bytes((str(base64.urlsafe_b64encode(bytes(''.join(salts).encode()))).split("'")[1]+str(base64.urlsafe_b64encode(base64.standard_b64encode((bytes(''.join(salts).encode()))))).split("'")[1]).encode()))
55+
56+
EDITED SALT MODLE (random mode)
57+
58+
salts = []
59+
dataset = [] # len([]) == 7 TRUE
60+
count = 0
61+
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
62+
data = str(data).split("/") #len([]) == 4 TRUE
63+
for i in data:
64+
dataset.append(str(i).split("$"))
65+
count+=1
66+
dataset.pop(0)
67+
dataset.pop(1)
68+
for i in range(count):
69+
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
70+
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
71+
salts.append(str(dataset[i]))
72+
salts.append(str(hashlib.sha256(uuid.uuid4().bytes).digest()).split("'")[1])
73+
return base64.standard_b64encode(bytes((str(base64.urlsafe_b64encode(bytes(''.join(salts).encode()))).split("'")[1]+str(base64.urlsafe_b64encode(base64.standard_b64encode((bytes(''.join(salts).encode()))))).split("'")[1]).encode()))

map/passlib_functions.json

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
"passlib":{
3+
"pbkdf2":{
4+
"1":"pbkdf2_sha1",
5+
"2":"pbkdf2_sha256",
6+
"3":"pbkdf2_sha512",
7+
"4": "cta_pbkdf2_sha1",
8+
"5":"dlitz_pbkdf2_sha1",
9+
"6":"grub_pbkdf2_sha512"
10+
},
11+
"argon2":{
12+
"1":"argon2"
13+
},
14+
"bcrypt":{
15+
"1":"bcrypt"
16+
},
17+
"cisco":{
18+
"1":"cisco_pix",
19+
"2":"cisco_asa",
20+
"3":"cisco_type7"
21+
},
22+
"des_crypt":{
23+
"1":"des_crypt",
24+
"2":"bsdi_crypt",
25+
"3":"bigcrypt",
26+
"4":"crypt16"
27+
},
28+
"digests":{
29+
"1":"create_hex_hash",
30+
"2":"hex_md4",
31+
"3":"hex_md5",
32+
"4":"hex_sha1",
33+
"5":"hex_sha256",
34+
"6":"hex_sha512"
35+
},
36+
"django":{
37+
"1":"django_salted_sha1",
38+
"2":"django_salted_md5",
39+
"3":"django_bcrypt",
40+
"4":"django_pbkdf2_sha1",
41+
"5":"django_pbkdf2_sha256",
42+
"6":"django_argon2",
43+
"7":"django_des_crypt",
44+
"8":"django_disabled"
45+
},
46+
"fshp":{
47+
"1":"fshp"
48+
},
49+
"ldap_digest":{
50+
"1":"ldap_plaintext",
51+
"2":"ldap_md5",
52+
"3":"ldap_sha1",
53+
"4":"ldap_salted_md5",
54+
"5": "ldap_salted_sha1",
55+
"6":"ldap_salted_sha256",
56+
"7":"ldap_salted_sha512"
57+
},
58+
"mysql":{
59+
"1":"mysql323",
60+
"2":"mysq41"
61+
},
62+
"oracle":{
63+
"1":"oracle10g",
64+
"2":"oracle11g"
65+
},
66+
"windows":{
67+
"1":"lmhash",
68+
"2": "nthash",
69+
"3":"bsd_nthash",
70+
"4":"msdcc",
71+
"5":"msdcc2"
72+
}
73+
}
74+
}

0 commit comments

Comments
 (0)