атака по словарю хэши sha512 с использованием hashlib с известной солью для паролей unix - PullRequest
0 голосов
/ 20 мая 2018

Вопрос здесь в том, могу ли я использовать модуль hashlib (sha512) для хеширования открытого текста из файла, используя известную соль пользователя из / etc / shadow для воссоздания хэша пароля пользователя?Сравнение хеша из моего dictionary.txt с хешем пароля пользователя из / etc / shadow (passwords.txt - root:$6$1ZZlpDpQ$V1fZ.M2Y91Qzg7FCbj5rie/jHK6kOZB3rZVDXd1GldvyjFAYOl4Z2FZjc6uK9Q0lfvEjSiqRslGaddLVP2X3w0:17159:0:99999:7:::) покажет мне, действительно ли пароль в списке правильный.Который, похоже, не работает.Чего мне не хватаетвся помощь приветствуется

import hashlib
import sys

def checkpass(passwd):
try:
    semi_c = ':'
    d_sign = '$'
    pwdlist = passwd.split("$")
    salt = pwdlist[2]
    print 'Salt is : ' + salt
    cryptPas = passwd.split(d_sign, 3)[3]
    cryptPass = cryptPas.split(semi_c)[0]
    print cryptPass 
    dictFile = open('dictionary.txt', 'r')

    for word in dictFile.readlines():

            word = word.strip('\n')
            print 'Comparing to pass in list : ' + word + ' to ' + passwd + ' ---- '
            cryptWord = hashlib.sha512(salt + word).hexdigest()
            print 'Reproduced Hash : ' + cryptWord
            if (cryptWord == cryptPass):
                print '[+] Found Password : ' + word + '\n'
                return cryptWord
            else:
                print '[-] Password not found.\n'
                return cryptWord

except Exception, e:
    print e
return  

def main():

try:
    passfile = open('password.txt')
    passwd = passfile.readline()
    semi_c = ':'
    #print passwd
    if semi_c in passwd:
        user = passwd.split(semi_c)[0]
        print '[*] Cracking Password for : ' + user
        checkpass(passwd)
except Exception, e:
    print e
return    

if __name__ == '__main__':
    main() 
...