Атака по словарю на пароли unix /etc/shadow с использованием python и hashlib?

Можно ли это сделать таким образом? Мои тесты не работают. Мой открытый текстовый проход находится в словаре.txt, а в password.txt — проход в формате из файла /etc/shadow. Я получаю пароль и хеширую его, используя hash.sha512 (соль + открытый текстовый пароль). Затем я сравниваю этот хеш с паролем в 'cat /etc/shadow | пользователь grep'

import hashlib
import sys

def checkpass(passwd):
    try:
        semi_c = ':'
        d_sign = '$'
        pwdlist = passwd.split("$")
        salt = '$'+pwdlist[1]+'$'+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() 

person dexray    schedule 19.05.2018    source источник


Ответы (1)


Я не знаю хеш-библиотеку Python, но имейте в виду, что crypt() - это не только DES, MD5 или SHA, но и основано только на них. Например, он использует несколько раундов. Должен быть модуль шифрования Python.

person lathspell    schedule 20.05.2018