目录
一、简介:
1.1、概述:
1.2、crypt:
二、示例:
2.1、示例1:
2.2、示例2:
思路:
main()函数
testPass()函数
2.3、注:
split():
2.4、总结:
一、简介:
1.1、概述:
编写UNIX口令破解机时,需使用UNIX计算口令hash的crypt()算法
The crypt module is not supported on Windows(Windows不支持crypt模块)
1.2、crypt:
crypt.crypt(word, salt=None)
验证 Unix 口令的函数
启动Python 解释器,Python 标准库中已自带有crypt 库。要计算一个加密的UNIX 口令hash, 只需调用函数crypt.crypt(), 并将口令和salt作为参数传递给它。该函数会以字符串形式返回口令的hash
二、示例:
2.1、示例1:
明文是单词egg 和salt 就是开头的两个字节是HX
使用crypt()函数快速计算口令的hash。将库导入之后, 我们将口令“ egg" 与salt"HX"传递给函数。该函数返回口令的hash一一字符串为“ HX9LLTdc/jiDE" 。
>>> import crypt >>> crypt.crypt("egg","HX") 'HX9LLTdc/jiDE'
2.2、示例2:
思路:
可以编写一个程序来遍历整个字典, 将每一个单词加上指定的salt 的计算结果都与加密的口令hash 做比较
首先要创建两个函数: main 和testpass。根据各自特定的作用, 将程序分隔成相互独立的函数,便于重用代码,易于阅读。
main()函数
用main 函数打开加密口令文件” password.txt", 并逐行读取口令文件中的内容。每一行中的用户名和口令hash 都是分隔开的。对每个口令hash, main 函数都调用testPass()函数, 尝试用字典中的单词破解它。testPass()函数
testPass()函数会以参数形式获得加密的口令hash, 并在找到密码或搜遍字典无果后返回。要注意的是, 该函数首先将加密的口令hash 的前两个字符视为salt, 并提取出来。然后, 它打开字典并遍历字典中的每个单词, 用每个单词和salt 计算一个新的加密口令hash。
如果计算结果与我们加密口令hash 匹配, 函数会打印一条消息显示找到密码, 并返回。否
则, 它会在词库中继续对每个单词进行测试。
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")
print("Password Not Found.\n")
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()
2.3、注:
split():
简介:
通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
语法:
str.split(str="", num=string.count(str)).
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num -- 分割次数。默认为 -1, 即分隔所有。
返回分割后的字符串列表。
2.4、总结: