美文网首页
python实现linux用户密码加解密

python实现linux用户密码加解密

作者: 明明就_c565 | 来源:发表于2023-11-08 16:52 被阅读0次

shadow介绍

/etc/shadow,是 Linux系统中的重要系统文件,用于存储加密的用户密码,并且只有系统管理员 root 用户可以访问,防止未经授权的用户查看或者修改该文件。每一行对应每个用户(包括系统用户)的用户密码信息。

举例

test2:$6$uHoHfJtT$5JXvEfD9356G9XXUQOvzEpEzxfvghbS6qofcu9fQ8h6u.1tJW2L95jW5OaYWsyhUHMcjUkAqWCn8sg3suYuvV1:19656:6:90:30:::

冒号是分割符,格式为0:1:2:3:4:5:6:7:8,每个字段分别代表着:

0:用户名

1:密码hash值

2:密码修改距离1970年1月1日的时间

3:密码将被允许修改之前的天数(0 表示“可在任何时间修改”)

4:系统将强制用户修改为新密码之前的天数(1 表示“永远都不能修改”)

5:密码过期之前,用户将被警告过期的天数(-1 表示“没有警告”)

6:密码过期之后,系统自动禁用帐户的天数(-1 表示“永远不会禁用”)

7:该帐户被禁用的天数(-1 表示“该帐户被启用”)

8:保留供将来使用

hash值一览格式如:$id$salt$密文

id代表的是使用不同的加密算法,不同的系统使用的算法也不尽相同。salt是加密的时候需要用到盐。最后就是密文。

数字和所使用的加密算法对应关系:

python实现

import hashlib

import crypt

def shadow_decrypt():

    shadow_line = "test2:$6$uHoHfJtT$5JXvEfD9356G9XXUQOvzEpEzxfvghbS6qofcu9fQ8h6u.1tJW2L95jW5OaYWsyhUHMcjUkAqWCn8sg3suYuvV1:19656:6:90:30:::"

    print(f"[+] The shadow line is:{shadow_line}")

    # 从shadow文件中,提前密码密文

    crypt_text = shadow_line.split(":")[1]

    print(f"[+] The crypt text is:{crypt_text}")

    # 从密码密文中,提取盐值

    salt = crypt_text[0:crypt_text.rindex("$")]

    print(f"[+] The salt is:{salt}")

    # 把读取到的密码与盐值进行加密运算,得到猜测的密码密文

    password = 'Admin@1234'

    new_crypt_text = crypt.crypt(password, salt)

    # 如果猜测的密码密文与shadow文件中的密码密文一致,说明密码猜对了

    if new_crypt_text == crypt_text:

        print(f"\n[+] PASSWORD FOUND:{password}")

    else:

        print("[-] Password Not Found ")

if __name__ == '__main__':

    shadow_decrypt()

    pwd = crypt.crypt("Admin@1234", "$6$uHoHfJtT")

    print(pwd, type(pwd))

运行

参考

https://www.cnblogs.com/jason-huawen/p/16300671.html

https://www.cnblogs.com/Cl0ud/p/14382258.html

https://blog.csdn.net/weixin_71090536/article/details/133207058

相关文章

网友评论

      本文标题:python实现linux用户密码加解密

      本文链接:https://www.haomeiwen.com/subject/ebptidtx.html