Encryption 使用已知salt和字典进行密码解密

Encryption 使用已知salt和字典进行密码解密,encryption,Encryption,我们正在迁移一家公司,我们从该公司收购了大量的kiosk硬件资产,这些资产都在该领域。由于公司遭受了损失,我们在迁移位置指纹、用户名和密码时遇到了一些问题,而没有任何实施文档。幸运的是,大多数使用的密码都是数字4-6 PIN或常用字。我一直在努力找出密码是以什么格式散列的,希望能用字典对大部分密码进行破译。我有以下格式: "password": "ce62f0002776890507c4050a3b76c064d3d24328aea52a08633b726d352532dc", "salt":

我们正在迁移一家公司,我们从该公司收购了大量的kiosk硬件资产,这些资产都在该领域。由于公司遭受了损失,我们在迁移位置指纹、用户名和密码时遇到了一些问题,而没有任何实施文档。幸运的是,大多数使用的密码都是数字4-6 PIN或常用字。我一直在努力找出密码是以什么格式散列的,希望能用字典对大部分密码进行破译。我有以下格式:

"password": "ce62f0002776890507c4050a3b76c064d3d24328aea52a08633b726d352532dc",
"salt": "JUQLSPOYGFURMGSDRYWIWBIWP",

上面的密码是“password”。希望这有助于找到格式。

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

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

你可以列一个清单来检查,但是已经有好的清单了,见下文

有关更多信息,请参阅:
密码列表位于。
信息安全

阿尔斯特尼卡

您可以在新代码中实现旧的哈希方法。当密码匹配(即合作伙伴发送的密码)时,您可以将其存储为新格式(基本上接受这两种格式)。这样就不需要破解现有密码

要实现这一点,您确实需要知道密码是如何散列的以及使用了什么格式,很明显,这似乎相当简单(Java示例):

生成(即连接密码字节和salt字节,以非迭代方式计算SHA256并转换为十六进制)预期哈希:

hex = ce62f0002776890507c4050a3b76c064d3d24328aea52a08633b726d352532dc

你到底想知道或做什么?哈希方法最好从源代码中检索。密码和salt的编码也需要猜测。这是最大的问题,因为我们无法访问源代码。我们有他们的数据库信息,我们正在迁移到我们的软件。幸运的是,就支付设备和指纹而言,硬件是一样的,但我们仍在考虑如何输入密码。我对解密知之甚少,但我希望至少能弄清楚密码加密的格式。我不认为它们是加密的,它们是散列的。意味着您在解密方面运气不佳。在进行反向工程后,您可能可以重置密码。因为大多数密码都是4-6个数字密码。如果我能弄清楚它们是如何散列的,我能创建一个包含所有这些可能性的字典并用这种方式检查它们吗?不,盐是用来防止这种情况发生的。清楚你想要什么,你可以在数据库中做什么,我很感激!我想这正是我想要的,并且使过程变得简单得多。我将尝试实现这一点。这正好说明了为什么这种密码存储方法是不安全的,不应该使用。使用随机salt在HMAC上迭代大约100ms(salt需要与散列一起保存)。使用诸如password_hash、PBKDF2、Bcrypt等函数和类似函数。重点是让攻击者花费大量时间通过暴力手段查找密码。顺便说一句:从单一的“密码”示例来看,不可能看到密码文本如何转换为字节,还不如使用拉丁语1或UTF-8来保留umlauts。但是,我们使用这种手工散列方法的软件无论如何都不必费心正确处理unicode。
hex = ce62f0002776890507c4050a3b76c064d3d24328aea52a08633b726d352532dc