1743天 博客通用头像 Edwiin

本人熟练掌握linux,windows的开关机,擅长nfs,samba,ftp,dhcp,bind,apache,mail等各项服务的安装与卸载,精通shell,mysql,iptables,selinux等单词的拼写,了解虚拟化,存储,集群等相关汉字的书写。

【Linux学习】Python脚本安全之Linux口令破解:学会写出一个简单的Linux口令破解脚本

发布于 11个月前 / 233 次围观 / 2 条评论 / Linux / Edwiin
本文最后更新于2020-1-7,已超过 1 个月没有更新,如果文章内容或图片资源失效,请【留言反馈】,我会及时处理,谢谢!

【实验目的】

1) 学会写出一个简单的Linux口令破解脚本

【实验原理

1) 在现阶段的Linux系统中,用户密码加密方式一般为SHA-512,本章通过对字典中的密码逐条进行SHA-512加密之后与用户密码进行对比从而得出其正确的口令

2) 在进行密码加密时,使用Linux计算口令hash的crpty()算法,这个算法Python标准库中已经含有(crypt库)

3)在同一个目录下有3个文件,分别是:Python文件、mima.txt(存放从shadow里提取的用户信息)、dictionary.txt(密码字典)

【实验环境】

Kali Linux

【实验步骤】

1.在进行程序编写之前,我们需要了解一下Linux密码加密方式。在Linux系统中,密码hash值存储在/etc/shadow文件中,我们选取其中的root密码进行分析。如下图所示:

2. 在上图的字段中,每个含义的字段由“:”隔开,第一个字段用户名,第二个字段加密之后的密码hash值,其他字段请自行分析。其中密码密文格式为$id$salt$encrypted,id是指其使用的哈希算法,id为1是MD5,id为5是SHA-256,id为6是SHA-512,$salt即为盐值,encrypted则为hash值,这里的hash值并不是直接的SHA-512加密密码之后的结果,而是密码与盐值一起加密之后得到的。

3. 在了解过shadow文件的构造以及密码加密方式之后,可以开始进行脚本的编写,在编写时,我们可以创建两个函数:main和testPass,main函数打开mima.txt文件的内容,testPass函数读取字典并进行加密对比工作。testPass以参数的方式获得加密的口令hash,利用正则表达式获取其中的盐值,读取字典中的密码并将其与得到的盐值一起加密得到hash,将得到的hash与加密口令进行对比匹配,从而得到正确的密码。具体代码如下图所示:

# -*- coding: utf-8
#引用Linux口令加密库
import crypt
#创建密码匹配函数,输出正确的密码
def testPass(cryptPass):
	salt = cryptPass [cryptPass. find("$"):cryptPass.rfind("$")]	#盐值,取两个$之间的字符串
	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('mima.txt')	#读取密码文件得到Linux令
	for line in passFile.readlines():	#对每一条Linux令进行破解
		if ":" in line:	#以口令中的:为分隔符
			user = line.split(':')[0]	#第一个分隔符之前的为用户名
			cryptPass = line.split(':')[1].strip(' ')	#第一个分隔符与第二个之间的为加密口令
			print "[*] Cracking Password For: " +user
			testPass(cryptPass)	#口令破解
if __name__  == "__main__":
	main()

4. 运行脚本得到正确的用户密码。如下图所示:

[root@localhost pass]# python 1.py 
[*] Cracking Password For: root
[+] Found Password: 159357

  • 支付宝赞助图片
  • 微信赞助图片
  • QQ赞助图片
头像
描述: 还好有你,再见如初。
未显示?请点击刷新
  1. 11个月前 (01-07)
    图片标签呀 @
    广州中专学校

    网站内容还是挺不错的,谢谢博主。还有博客应该是WORDPRESS做的吧,感觉美观度还可以提高,谢谢。我自已是搞前端设计的,你的代码可以做精简一点。

    • 11个月前 (01-08)
      图片标签哦 @ NO

      @广州中专学校:博客是emlog最新系统,美观个人已经认为不错了,主要是个人博客嘛,个人满意就好了,代码的话,也自认为比较全面和简洁了~欢迎随时来交流~

Press Space to start