link= "kali:$y$j9T$lR7REZ4XgU56yXNl9PFiN/$oI3B/OeQGXOoTb7opQ.azBMOgG2IM\
0neRj4MN3HCqQ.:19331:0:99999:7:::"
#shadow
print("[+]shadow :"+link)
# 用户名
username= link.split(":")[0]
print("[+]用户名 :"+username)
# 密码
password_hash= link.split(":")[1]
print("[+]密 码 :"+password_hash)
# 盐值
solt= password_hash[:password_hash.rfind("$")+1]
#rfind("$")为从右向左查抄第一个$的位置
print("[+]盐 值 :"+solt)
# 爆破
import crypt
password= ""
def crack_linux_shadown_line(password):
# 将password经过crypt模块加密后,跟password_hash进行对比
if crypt.crypt(password,solt) == password_hash:
return "密码正确:"+password
else:
return "密码错误"
print(crack_linux_shadown_line(password= password))
# 密码字典路径
pass_file_path="/usr/share/wordlists/test_password.txt"
with open(pass_file_path) as f:
# 密码遍历
for password in f:
password= password.strip()
# print(password)
print(crack_linux_shadown_line(password=password))
