密码解密与已知的盐和字典

时间:2016-07-02 20:49:01

标签: encryption

我们正在迁移一家公司,我们从该领域获得了许多自助服务终端硬件资产。由于该公司正在遭受痛苦,我们在迁移位置指纹,用户名和密码时遇到了一些问题,而没有任何实施文档。幸运的是,大多数使用的密码是数字4-6 PIN或常用词。我一直试图弄清楚密码的格式是什么,并希望能够使用大多数密码的字典从那里解密它。我有以下格式:

main view controller -> main view
    child 1: table view controller -> table view 1, subview of main view
    child 2: table view controller -> table view 2, subview of main view

以上密码为" 密码"。希望这有助于找到格式。

2 个答案:

答案 0 :(得分:1)

如果它是一个哈希,看起来像一个哈希,可能是HMAC-SHA256的长度,你需要运行一个密码破解程序。你应该能够恢复90%以上,但很可能不是全部。

在我的笔记本电脑上,我可以通过SHA-512运行一个20字节的密码,并在1us以下比较,所以只需一个SHA-512哈希,我就可以每秒尝试1,000,000个密码。

您可以列出要检查的列表,但已有好的列表,请参阅下文。

有关详细信息,请参阅:
密码列表SecLists
信息安全password-cracking-tools
Arstechnica How I became a password cracker

答案 1 :(得分:1)

您可以在新代码中实现旧的哈希方法。当密码匹配时(即伙伴发送的密码),您可以将其存储为新格式(同时接受两者)。这样可以节省破解现有密码的需要。

为了实现这一点,你需要知道如何对密码进行哈希处理以及使用何种格式,这似乎相当容易(Java样本):

ByteArrayOutputStream bos = new ByteArrayOutputStream();
bos.write("password".getBytes(StandardCharsets.US_ASCII));
bos.write("JUQLSPOYGFURMGSDRYWIWBIWP".getBytes(StandardCharsets.US_ASCII));

MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] out = md.digest(bos.toByteArray());

System.out.println("hex = " + new HexBinaryAdapter().marshal(out).toLowerCase());

生成(即连接密码字节和salt字节,非迭代计算SHA256并转换为十六进制)预期的散列:

hex = ce62f0002776890507c4050a3b76c064d3d24328aea52a08633b726d352532dc
相关问题