大数跨境

干货|Linux用户密码文件详解及破解原理!

干货|Linux用户密码文件详解及破解原理! 河北镌远网络科技有限公司
2020-02-04
0
导读:干货|Linux用户密码文件详解及破解原理!


立春


乌云翻滚,2020年将是不平凡的一年。而此时,冠程(镌远)迎来农历鼠年的第一个节气——立春。
“立春一日,百草回芽”,东风解冻、蛰虫始振、鱼陟负冰,大自然万物复苏。

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

  【下面小编给大家讲一下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文用户与密码的函数:

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:

                print("用户名:%s  密码:%s" %(user,pw.rstrip()))


关于我们:

河北镌远网络科技有限公司(Hebei JYCYBER TechnologyCo.,Ltd.)是一家集人才、技术和经验于一体的,提供全面网络安全解决方案的专业服务商。镌远科技致力于为各行业的网络安全需求提供软件研发和通用解决方案,业务领域主要包括基础服务、咨询业务、产品研发和安全培训四大版块,各版块相互独立又相辅相成,完美阐释了“专业服务、全程服务、延伸服务”的服务体系和“单一业务与长远目标相融合”的服务理念。

关注镌远科技,关注网络安全!

河北分公司:河北镌远网络科技有限公司

地址:河北省邯郸市丛台区中华北大街193号慧谷大厦14层

总公司:北京冠程科技有限公司

地址:北京市昌平区科技园区东区产业基地企业墅上区一号楼九单元四层

实训基地:河北省石家庄市电子信息学校冠程科技研究与实训中心


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

【声明】内容源于网络
0
0
河北镌远网络科技有限公司
河北镌远网络科技有限公司是一家集人才、经验、技术于一体的,提供全面系统集成解决方案的专业IT服务商。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。
内容 582
粉丝 0
河北镌远网络科技有限公司 河北镌远网络科技有限公司是一家集人才、经验、技术于一体的,提供全面系统集成解决方案的专业IT服务商。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。
总阅读554
粉丝0
内容582