立春
立春是中国民间重要的传统节日之一。“立”是“开始”的意思,自秦代以来,中国就一直以立春作为孟春时节的开始。所谓“一年之计在于春”,春是温暖,鸟语花香;春是生长,耕耘播种。

【下面小编给大家讲一下Linux用户密码文件详解及破解原理】

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文用户与密码的函数:
def get_userpw(shadow):
# 定义用户名和密码对应的字典
user_pw = {}
# 读取shadow文件
f = open(shadow,'r')
userline = f.readlines()
f.close()
for l in userline:
# 筛选存在密码的用户
if len(l.split(":")[1]) > 3:
# 将用户和密码加入字典user_pw
user_pw[l.split(":")[0]] = l.split(":")[1]
return user_pw
定义读取本地字典的函数:
def get_dic(dictions):
f = open(dictions,'r')
mw_dic = f.readlines()
f.close()
return mw_dic
通过主函数调用以上两个函数,提取密码中的盐值,结合算法将字典中的明文与盐值进行加密后匹配用户的密文,匹配成功即可得到用户密码
def main():
# 获取shadow中的用户和密码
userpasswd = get_userpw(user_shadow)
# 读取字典
dictions = get_dic(dicti)
# 循环出用户键名
for user in userpasswd:
# 获得用户密码
passwd = userpasswd[user]
# 获得用户盐值
salt = "$6$" + passwd.split("$")[2]
for pw in dictions:
#rstrip()去除空行(\n)
if crypt.crypt(pw.rstrip(),salt) == passwd:

关于我们:
河北镌远网络科技有限公司(Hebei JYCYBER TechnologyCo.,Ltd.)是一家集人才、技术和经验于一体的,提供全面网络安全解决方案的专业服务商。镌远科技致力于为各行业的网络安全需求提供软件研发和通用解决方案,业务领域主要包括基础服务、咨询业务、产品研发和安全培训四大版块,各版块相互独立又相辅相成,完美阐释了“专业服务、全程服务、延伸服务”的服务体系和“单一业务与长远目标相融合”的服务理念。
关注镌远科技,关注网络安全!
河北分公司:河北镌远网络科技有限公司
地址:河北省邯郸市丛台区中华北大街193号慧谷大厦14层
总公司:北京冠程科技有限公司
地址:北京市昌平区科技园区东区产业基地企业墅上区一号楼九单元四层
实训基地:河北省石家庄市电子信息学校冠程科技研究与实训中心


欢迎扫描关注我们,及时了解更多关于网络安全相关知识

