windows 下直接提取单行 shadow 信息分析
pwd="test:$y$j9T$gqqjXxJvGekurE5n7AQ1e1$sb87YgJzXyyjyc6uG0RRWMHgD6HNRCXYMnUhOzFj8S.:19632:0:99999:7:::"
list=pwd.split(":")
print("用户名是:"+list[0])
# 盐值为第一个 $ 到最后一个 $
salt = list[1][list[1].find("$"):list[1].rfind("$")+1]
print("盐值是:"+salt)
print("密码哈希值是:"+list[1])
直接在 linux 下解析 shadow 文件
with open(f"/etc/shadow","r") as f:
pwd=f.readlines()
for i in range(0,len(pwd)):
per_pwd=pwd[i].split(":")
print(f"用户{i}是:" + per_pwd[0])
# # $id$盐值$哈hash
if per_pwd[1]=="*":
print("账户被锁定")
elif per_pwd[1]=="!":
print("账户被禁用")
else:
salt = per_pwd[1][per_pwd[1].find("$"):per_pwd[1].rfind("$")+1]
print(f"用户{i}的盐值是:" + salt)
print(f"用户{i}的密码哈希值是:" + per_pwd[1])
print()
或
with open(f"/etc/shadow","r") as f:
i=0
for password in f:
per_pwd=password.split(":")
print(f"用户名{i}是:" + per_pwd[0])
# # $id$盐值$hash
if per_pwd[1]=="*":
print("账户被锁定")
elif per_pwd[1]=="!":
print("账户被禁用")
else:
salt = per_pwd[1][per_pwd[1].find("$"):per_pwd[1].rfind("$")+1]
print(f"用户{i}的盐值是:" + salt)
print(f"用户{i}的密码哈希值是:" + per_pwd[1])
print()
i+=1