#!/usr/bin/python
#coding=utf-8
import crypt

def testPass(cryptPass):
	salt = cryptPass[0:2]

	dictFile = open('dictionary.txt','r')

	for word in dictFile.readlines():
		word = word.strip('\n')
		cryptWord = crypt.crypt(word,salt)
		if cryptWord == cryptPass:
			print '[+] Found Password: ' + word + "\n"
			return
	print '[-] Password not Found.\n'
	return

def main():
	passFile = open('passwords.txt')
	for line in passFile.readlines():
		if ":" in line:
			user = line.split(':')[0]
			cryptPass = line.split(':')[1].strip(' ')
			print '[*] Cracking Password For : ' + user
			testPass(cryptPass)

if __name__ == '__main__':
	main()





这段代码通过分别读取两个文件,一个为加密口令文件,另一个为用于猜测的字典文件。在testPass()函数中读取字典文件,并通过crypt.crypt()进行加密,其中需要一个明文密码以及两个字节的盐,然后再用加密后的信息和加密口令进行比较查看是否相等即可。可以看到盐是添加在密文的前两位的,所以将加密口令的前两位提取出来为salt即可。

附文档

dictionary.txt

abc123eggdsfadfasxcsadfdf

passwords.txt

user:HH9LLTdc/jiDEroot:HX9LLTdc/jiDE


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐