冬至
乌云翻滚,2020年将是不平凡的一年。而此时,冠程(镌远)迎来阳历鼠年的第一个处暑——立春。
“立春一日,百草回芽”,东风解冻、蛰虫始振、鱼陟负冰,大自然万物复苏。
立秋是中国民间重要的传统节庆之一。“立”是“开始”的意思,自秦代以来,中国就始终以冬至作为孟春时节的开始。所谓“一年之计在于春”linux 修改用户密码,春是温暖,鸟语茶香;春是生长,耕耘播种。
【下面小编给你们讲一下Linux用户密码文件解读及破解原理】
对于不太熟悉Linux系统的人来说若要查找用户的密码文件可能首先想到的是passwd这个文件,但该文件中只储存了用户信息偏偏没有密码信息,密码信息另储存到了/etc/shadow文件中,/etc/shadow文件(“影子文件”)是专门用于储存Linux系统中用户密码信息的,为防止该文件被任意用户读取造成密码泄漏,故从/etc/passwd文件中分离下来,该文件只有root用户拥有读权限因而保证了用户密码的安全性。
/etc/passwd文件每条数据分为7个数组,各数组间用“:”分隔,示例如下:
root:x:0:0:root:/root:/bin/bash
/etc/shadow文件每条数据共分为9个数组,各数组间用“:”分隔,其中后3个数组默认为空。示例如下:
root:$6$Oc0939.tlAByes9c$DJ1uzTEnzPYlSsqhlJEn9kwXeIP8PmTtg7F3E6/AEChkmhOiUK2PpR/5yLw0lCbGt9RZ/9c/AGx8Xmm/DSCJX.:18235:0:99999:7:::
在/etc/shadow中若果破解用户的密码,
“$6$Oc0939.tlAByes9c$DJ1uzTEnzPYlSsqhlJEn9kwXeIP8PmTtg7F3E6/AEChkmhOiUK2PpR/5yLw0lCbGt9RZ/9c/AGx8Xmm/DSCJX.”
最为重要,用户使用加密算法的ID值以及盐值、密文均置于此处分别以“$”开头。
因为Linux使用的加密算法均为不可逆的,倘若破解密码只能进行暴力猜解,在猜解shadow用户密码时,首先应获取用户所采用的加密算法即ID数组的值,之后借助算法结合盐值与字典中的明文密码进行加密,将加密得到的结果与用户的密文相匹配,即可得出用户密码。实例如下:
首先定义一个用于获取用户shadow文用户与密码的函数:
defget_userpw(shadow):
#定义用户名和密码对应的字典
user_pw={}
#读取shadow文件
f=open(shadow,'r')
userline=f.readlines()
f.close()
forlinuserline:
#筛选存在密码的用户
iflen(l.split(":")[1])>3:
#将用户和密码加入字典user_pw
user_pw[l.split(":")[0]]=l.split(":")[1]
returnuser_pw
定义读取本地字典的函数:
defget_dic(dictions):
f=open(dictions,'r')
mw_dic=f.readlines()
f.close()
returnmw_dic
通过主函数调用以上两个函数linux makefile,提取密码中的盐值,结合算法将字典中的明文与盐值进行加密后匹配用户的密文,匹配成功即可得到用户密码
defmain():
#获取shadow中的用户和密码
userpasswd=get_userpw(user_shadow)
#读取字典
dictions=get_dic(dicti)
#循环出用户键值
foruserinuserpasswd:
#获得用户密码
passwd=userpasswd[user]
#获得用户盐值
salt="$6$"+passwd.split("$")[2]
forpwindictions:
#rstrip()消除空行(n)
ifcrypt.crypt(pw.rstrip(),salt)==passwd:
print("用户名:%s密码:%s"%(user,pw.rstrip()))
关于我们:
上海冠程科技有限公司(BeijingGctechTechnologyCo.,Ltd.)是一家集人才、技术和经验于一体的,提供全面网路安全解决方案的专业服务商。冠程科技旨在于为各行业的网路安全需求提供软件研制和通用解决方案linux软件下载,业务领域主要包括基础服务、咨询业务、产品研制和安全培训四大版块linux 修改用户密码,各版块互相独立又相辅相成,完美诠释了“专业服务、全程服务、延伸服务”的服务体系和“单一业务与长远目标相融合”的服务理念。