首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在unix密码文件中强行破解SHA-512密码

在unix密码文件中强行破解SHA-512密码
EN

Stack Overflow用户
提问于 2018-09-20 19:08:25
回答 3查看 1.6K关注 0票数 0

我有一个学校作业,其中包括我必须破解一个unix密码文件,密码是用SHA-512创建的,

我使用python3编写密码破解脚本,该脚本通过密码文件添加salt并比较每个密码,直到找到哈希为止。

这是我的代码:

代码语言:javascript
复制
#!/usr/bin/env python3
import crypt
passFile = open('passwords.txt', 'r')

salt_MD5 = []
hash_MD5 = []
salt_SHA512 = []
hash_SHA512 = []
for line in passFile:
    if "$6$" in line:
        temp1 = line.split(":")
        temp1 = temp1[1]
        salt_SHA512.append(temp1[:11])
        hash_SHA512.append(temp1)
    if "$1$" in line:
        temp1 = line.split(":")
        temp1 = temp1[1]
        salt_MD5.append(temp1[:11])
        hash_MD5.append(temp1)

print(salt_MD5, hash_MD5)
print(salt_SHA512, hash_SHA512)


crackStation = open('1000000passwords.txt', 'r')

print("Searching for the password...")
counter = 0
for index in crackStation:
    counter += 1
    hashed_value_1 = crypt.crypt(index, salt_MD5[0])
    hashed_value_2 = crypt.crypt(index, salt_MD5[1])
    hashed_value512_1 = crypt.crypt(index, salt_SHA512[0])
    hashed_value512_2 = crypt.crypt(index, salt_SHA512[1])
    if counter % 50000 == 0:
        print("Counter is at: " + str(counter) + " Left to iterate = " + str(1000000-counter))
    # if hashed_value_1 == hash_MD5[0]:
    #   password_1 = index
    #   print("User one has been cracked password is: " + password_1)
    # if hashed_value_2 == hash_MD5[1]:
    #   password_2 = index
    #   print("User two has been cracked password is: " + password_2)
    if hashed_value512_1 == hash_SHA512[0]:
        password_3 = index
        print("User one has been cracked using password: " + password_3)
    if hashed_value512_2 == hash_SHA512[1]:
        password_4 = index
        print("User one has been cracked using password: " + password_4)

print("Search Complete.")

try:
    print(password_1, password_2, password_3, password_4)
except Exception as e:
    print("Oh shit something went wrong :s" + e)

请不要理会MD5、salt和hash,因为我以后会处理(教授声称文件中的一些密码是可以破解的,一位同学确认他能够破解SHA-512密码,因此为了速度起见,我把MD5注释掉了)。

我很想知道我应该使用什么类型的编码从密码文件中读取,到目前为止,我已经尝试了'mac_roman',迭代字典文件,现在我只是没有设置一个编码,我假设默认值应该是UTF-8,但我真的不知道如何检查以确认。

如果有人对我能做些什么有什么建议,我会很感激的!

(我现在正在尝试默认编码,方法是不初始化一个

代码语言:javascript
复制
crackStation = open('1000000passwords.txt', 'r')

)

如果在这种情况下,那实际上是可行的,我会告诉你的!

附加问题:

有人能告诉我这个密码文件的编码是什么吗,

代码语言:javascript
复制
adamkaplan:$6$S4Y0gQuy$QRkLo5t/6KONMAiQY9DIAPojv0Q8CBvDtNqe02sfR7rnEdw.QgSm0LU/JRcIc/Arn/PpK3lxroc19bVQDwUGQ/:17786:0:99999:7:::
cardib:$6$t84.Fvbo$8lKHpxBDnjoHhnFS3.A4ezNZmKfy5MLbe7UGZoOnWgz55j0g5TBx5LOQAujDiqkUuE50EACOZsydlBZgy5jkw/:17786:0:99999:7:::

密码哈希不是BASE64,我问的原因是当我在字典文件中使用不同的编码时,每个编码都会给出不同的哈希,所以这就是让我失望的原因,如果我使用UTF-8,我将收到不同的散列节拉丁文-1。

那么,默认情况下,linux密码文件将使用什么编码。

如果我通过终端创建了一个新的linux帐户并设置了一个密码,然后返回到我的密码文件中,我将得到一个新用户名密码的新哈希,而在该哈希算法中使用的编码是我所需要的,或者至少这是我图像破解密码所需要的。

希望这不是太令人困惑:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-26 17:25:31

为我想出的解决方案,我无法破解密码的原因是因为我没能从字典中删除新的行,

简单地做一个

代码语言:javascript
复制
line = line.rstrip()

解决了我的问题,我不需要做任何类型的编码或任何东西的文件工作。

票数 0
EN

Stack Overflow用户

发布于 2018-09-20 19:17:35

我很想知道我应该使用哪种类型的编码从密码文件中读取

您应该使用文件所编码的编码。

不幸的是,通常不可能从文件中区分文件的编码,您需要一些额外的带外信息,例如文件中的标题告诉您编码,传输格式告诉您编码…。或者只是问文件的作者。

但是,由于加密数据库中的密码很可能被视为八进制流,所以将密码字典处理为同样的方式可能是有意义的。

票数 0
EN

Stack Overflow用户

发布于 2018-09-20 20:25:10

我真的不知道怎么确认。

使用iconv。当试图转换包含格式错误字符的文件时,它将失败。

下面是一些测试文件:

代码语言:javascript
复制
printf 'ascii only\n' > ascii_only.txt
printf 'utf-8 \342\230\272\n' > utf8.txt
printf 'latin1. pi\361ata.\n' > latin1.txt

下面是一些示例:

代码语言:javascript
复制
$ iconv -f utf-8 -t utf-8 < utf8.txt > /dev/null && echo "ok"
ok

$ iconv -f ascii -t utf-8 < utf8.txt > /dev/null && echo "ok"
iconv: illegal input sequence at position 6

$ iconv -f utf-8 -t utf-8 < latin1.txt > /dev/null && echo "ok"
iconv: illegal input sequence at position 10

您可以尝试ASCII、UTF-8和Latin1 (按此顺序),并首先使用iconv接受的任何编码。

即使这不是一个学校作业,你可以现实地期望大多数密码是ASCII。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52431734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档