Python编程--UNIX口令破解机

简介: Python编程--UNIX口令破解机

Python编程–UNIX口令破解机
Python语言的真正优势在于其拥有大量的标准库和第三方库。编写UNIX口令破解机时,需要使用UNIX计算口令hash的crypt()算法。启动Python解释器,看到Python标准库中自己带有crypt库,要计算一个加密的UNIX口令hash,只需要调用函数crypt.crypt(),并将口令喝salt作为参数传递给它。该函数会以字符串形式返回口令的hash。

image.png

让我们尝试使用crypt()函数快速计算口令的hash。将库导入之后,将口令“egg”与salt“HX”传递给函数。该函数返回口令的hash–字符串为“HX9LLTdc/jiDE”。成功!

import crypt
crypt.crypt('egg', 'HX')

'HX9LLTdc/jiDE'

现在编写一个程序遍历整个字典,将每一个单词加上指定的salt的计算结果都与加密的口令hash做比较。编写程序的时候,首先创建两个函数:main和testpass。根据各自特定的作用,将程序分隔成相互独立的函数。main函数打开加密口令文件“password.txt”,并逐行读取口令文件中的内容。每一行中的用户和口令hash都是分隔开的。对每个口令hash,main函数都调用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")
            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()

运行这个程序之后,可以看到成功破解了用户victim的口令,如下图所示:

image.png

相关文章
|
23天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
191 102
|
23天前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
196 104
|
23天前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
185 103
|
23天前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
132 82
|
23天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
32 0
|
1月前
|
存储 人工智能 算法
Python实现简易成语接龙小游戏:从零开始的趣味编程实践
本项目将中国传统文化与编程思维相结合,通过Python实现成语接龙游戏,涵盖数据结构、算法设计与简单AI逻辑,帮助学习者在趣味实践中掌握编程技能。
112 0
|
2月前
|
安全 测试技术 数据处理
Python列表推导式进阶:从简洁代码到高效编程的10个核心技巧
列表推导式是Python中高效的数据处理工具,能将多行循环代码压缩为一行,提升代码可读性与执行效率。本文详解其基础语法、嵌套循环、条件表达式、函数融合、性能优化等进阶技巧,并结合实战案例与边界条件处理,帮助开发者写出更优雅、高效的Python代码。
125 0
|
2月前
|
机器学习/深度学习 人工智能 运维
Python:简洁高效的万能编程胶水
Python:简洁高效的万能编程胶水
|
4月前
|
Python
Python编程基石:整型、浮点、字符串与布尔值完全解读
本文介绍了Python中的四种基本数据类型:整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。整型表示无大小限制的整数,支持各类运算;浮点型遵循IEEE 754标准,需注意精度问题;字符串是不可变序列,支持多种操作与方法;布尔型仅有True和False两个值,可与其他类型转换。掌握这些类型及其转换规则是Python编程的基础。
236 33
|
3月前
|
数据采集 分布式计算 大数据
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
102 1

推荐镜像

更多