Sziasztok,
bcyrpt_pass.txt file tartalma (részlet) soronként:
$2a$10$I6E3U7RkdGM.SANtLA0CN.0/vRXQXgQcmILujAsECIEWmIHg2E6OS:test
$2a$10$JWN47nR8hfeu2h7nYIy2SuJ3rHQnPfLBSXhaicHzrTBEeysvOFDTO:123456
$2a$10$KVmdzwJ93Ub8loWynNyMPOY5MW2u4eZvRDlWaZ8Ca.WW2FOilKkJy:marshall
$2a$10$LueHEZkzc7tkgGHFPfTUt.nM4VYEHZDX6UrRLZ9XleywY5c0.XpGC:123456
$2a$10$Lwfv6gQE7YGZ6kNKlv5hJeonkbNSYuBStFn/ZRUf2vCwNsNmjTvx6:bingo1
wordpress_pass.txt file tartalma (részlet):
$P$BOjK6nuYBraDNtWkbzaM0wz.EOs/xz.:qwerty123456
$P$Bz3HEGUq7g7ITnJa0oM9kBi8iF07Ps/:qwerty1
$P$BmaIITkV/.TzvGXaOqxMXGV9bS9pGc1:1234567890
$P$B/YvRXSgEcKTWPmfeDnj2bFP/F2xEC1:12341234
Hogy tudom ellenőrizni python3-ban, hogy a megadott bcrypt_hash:pass ill. wordpress_hash:pass pár egyezik-e?
Eddig egy lassú módszert használtam. Külön file-ba tettem a hash-t és a jelszavakat, majd hashcat-el ellenőriztem. Ez működik, viszont nagy számú hash-nél már nagyon lassú.
Köszönöm előre is.
- 1009 megtekintés
Hozzászólások
- A hozzászóláshoz be kell jelentkezni
Köszönöm.
- A hozzászóláshoz be kell jelentkezni
Futtatás során hibaüzenettel leáll:
raise TypeError("Unicode-objects must be encoded before hashing")
TypeError: Unicode-objects must be encoded before hashing
Mit rontottam el?
import re
import bcrypt
raw = '/root/python_gyakorlas/bcrypt_hashes.txt'
raw_list = list()
with open(raw, 'r') as ll:
for item in ll:
pattern = re.compile(r'([^:]+):([a-zA-Z0-9]+)')
matches = pattern.finditer(item)
for match in matches:
raw_list.append(match.group(1, 2))
for item in raw_list:
password = item[1]
stored_hash = item[0]
# print(stored_hash)
# print(password)
if bcrypt.hashpw(password.encode('utf8'), stored_hash) == stored_hash:
print('Match')
else:
print ('It does not match')
- A hozzászóláshoz be kell jelentkezni
stored_hash után is kell egy .encode("utf8")
amúgy [code ] [/code]
közé rakva megmarad a indent
- A hozzászóláshoz be kell jelentkezni
Köszönöm. Javítottam.
Legközelebb használom a [code ] [/code]-ot.
Lefut, de azt írja ki minden esetben, hogy 'It does not match.'
Pedig a hash:password páros jó.
$2y$13$AWPe/tK3sik0dzVQ6PHEB.YO.PTVWIRCGVOzPJiczMCScuk5ikexG
123
It does not match
hashcat-el mégegyszer ellenőriztem.
"hashcat -O -m 3200 -a 3 '$2y$13$AWPe/tK3sik0dzVQ6PHEB.YO.PTVWIRCGVOzPJiczMCScuk5ikexG' 123"
Found:
$2y$13$AWPe/tK3sik0dzVQ6PHEB.YO.PTVWIRCGVOzPJiczMCScuk5ikexG:123
- A hozzászóláshoz be kell jelentkezni
mert a checkpw kell neked:
import bcrypt
password = "123"
hash = "$2y$13$AWPe/tK3sik0dzVQ6PHEB.YO.PTVWIRCGVOzPJiczMCScuk5ikexG"
print(bcrypt.checkpw(password.encode('utf8'), hash.encode("utf8")))
> True
Amúgy nem biztos, hogy sokkal gyorsabb lesz így, mint hashcat-el, mivel a bcrypt szándékosan egy lassú eljárás, így a legtöbb idő a kriptográfiával megy el amiben valószínű a hashcat még jobb is.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a segítséget. Működik és nagyságrenddel gyorsabb, mintha hashcat-el ellenőrizném.
hashcat speed benchmark(CPU only test):
Input: 50 bcrypt hashes
"time hashcat --session=benchmark -p --potfile-disable -O -m 3200 -a 0 hashes.txt passwords.txt"
real 3m44.626s
user 5m24.062s
sys 0m1.909s
"python3 bcrypt_hash_validation.py"
real 0m7.013s
user 0m6.964s
sys 0m0.028s
- A hozzászóláshoz be kell jelentkezni
bcrypt rendben.
Még egy kérdésem lenne. bash scriptekben van arra lehetőség hogy "positional paramameter"-t használva olvassa be a file-t.
Szeretném, ha a script futtatható lenne a köv. formátumban: "python3 python_script.py test_hashes.txt"
python3-ban ez hogy oldható meg?
Elég lesz egy link is.
Köszönöm.
- A hozzászóláshoz be kell jelentkezni
Próbáld ki:
import sys
print(sys.argv)
A sys.argv[0]-ban magának a scriptnek a neve van, azután a sys.argv[1]-ben az első paraméter stb.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Köszömöm a segítséget. Működik.
- A hozzászóláshoz be kell jelentkezni
[Feliratkozás]
- A hozzászóláshoz be kell jelentkezni