问题标签 [rainbowtable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hash - RAR3 散列算法
我遇到了一个如下开头的哈希,我试图将其反转:$rar3$*1*
但是,我似乎找不到 rar3 散列算法的彩虹表。
谁能指出我正确的方向。
java - Java Rainbow Tables - 计算方法
我正在尝试使用 Rainbow Tables 编写一个程序来散列和破解长度为 4 的密码。哈希值的算法是:ℎℎ = (163 ∗ ℎ 0) + (162 ∗ ℎ 1 + (161 ∗ ℎ 2) + (160 ∗ ℎ 3)。
我需要帮助弄清楚我在计算方法上做错了什么。代码前有注释说明如果这有助于解决问题需要做什么。
如果需要更多信息,请告诉我。
编辑:这是整个代码,因此可以看到所有其他方法(尚未全部完成)
}
python - python智能十六进制数生成器
我希望能够生成 12 个字符的长链,十六进制,但链中重复的相同数字不超过 2 个:00 而不是 000 因为,我知道如何生成所有可能性,包括 00000000000 到 FFFFFFFFFFF,但我知道我不会使用所有这些值,并且由于所有可能性生成的文件的大小是很多 GB,我想通过避免生成的无用链来减小大小。
所以我的目标是得到像 00A300BF8911 而不是像 000300BF8911 这样的结果
你能帮我这样做吗?提前谢谢了!
python - 将 MATLAB 代码转换为 Python:Python 类型和操作顺序
这是 RainbowCrack 作者的一个 MATLAB 函数:
N
它计算在给定带有密钥空间、大无符号整数、长度链t
和链数的彩虹表的情况下找到明文密码的成功概率m
。
示例运行:
返回 0.6055。
我很难将其转换为 Python。在 Python 3 中,不再有最大整数,所以N
这不是问题。我认为在计算中我必须将所有内容强制为一个大的浮点数,但我不确定。
我也不知道 MATLAB 中的操作顺序。我认为代码是这样说的:
创建大小为 [1 .. 10] 的数组,因此十个元素将该数组的每个元素初始化为零
在从零开始的索引中,我认为这将是array[0 .. t-1]
,看起来 MATLAB 使用 1 作为第一个(第 0 个)索引。
然后数组的第二个元素(基于 0 的索引)初始化为m
.
对于数组中的每个元素,pos=1
(基于 0 的索引)到t-1
:
**
电力运营商在哪里。我认为权力^
在 MATLAB 中,所以N * (1 - (1-1/N)
权力array[pos-1]
就像上面那样。
然后设置一个指数。对于数组 0 到 中的每个元素t-1
:指数为指数 + 1
返回概率 = 1 - (1 - 1/N)
exp 的幂;
我的 Python 代码看起来像这样,并且不起作用。我不知道为什么,但可能是我对 MATLAB 或 Python 的了解不够,或者我在某种程度上读错了数学,而 MATLAB 中发生的事情不是我所期望的,即我的操作顺序和/或类型错误以使其正常工作,而我在这些方面遗漏了一些东西......
c++ - 字符串的彩虹表整数表示
我一直在阅读 RainbowCrack 和旧源代码的文档,但我无法找到开发人员哈希减少到 64 位整数的位置,它可以保存 UINT64_MAX 纯文本。
文档:https ://project-rainbowcrack.com/file_format.htm
摘抄:
起点和终点都是小端序的 64 位无符号整数,表示明文。
在这个例子中,字符集是“abcdefghijklmnopqrstuvwxyz0123456789”,明文长度范围是1到7。所以0代表明文“a”,1代表明文“b”,35代表明文“9”,36代表明文“ aa”,80603140211 代表明文“9999999”。
某处必须描述如何生成所有可能的明文(上例中大小为 80,603,140,211,36 个可能的字符,长度为 1 到 7)或更可能,归约函数的子集。给定一个散列,可能是具有 160 位输出的 SHA1,它会缩减为某个整数,占用 64 位,然后在长度为 1 到 7 的字符集 [a-z0-9] 中生成明文。
我想我要问的是,鉴于该过程是确定性的,并且必须从起点产生相同的哈希减少,如何在不引入随机性的情况下从 0 到明文长度 N 的良好分布发生?尝试从减少中稍微调整数字,这样可以索引到字符集,选择字符 c(重复 N 次),明文长度为 N?
注释:我查看了以 N 为基数到 N 基数的转换,我检查了整数模 N(字符集大小),编写了带有查找表的小程序,逐步完成了数十个玩具彩虹表程序的代码,并检查了减少是如何的完成了,但这些都没有帮助解决这个特定的问题,或者下一个试图在每个明文中产生合理的差异。
因此,无论谁因为很少或没有研究努力而投票否决,你就去吧。您可能只是认为我很无聊,而不是在提出问题之前实际上并没有尝试进行任何研究或取得进展的人。
python - 如何在 Python 中搜索文本文件表?
我正在创建一个彩虹表,其中字符串和散列由表中的空格分隔。彩虹表如下所示:
我想知道如何制作一个 python 程序来搜索字符串并找到哈希,反之亦然。
我已经让它搜索整个文档,但我希望它只搜索特定的列。
我使用了熊猫,现在可以在特定列中进行搜索,但我希望它只找到完全匹配的内容:
现在的代码输出如下:
除了第 0 行中的匹配项之外,我不需要所有其他行
理想情况下,我只需要哈希作为输出。
encryption - 彩虹表如何破解不同长度的密码?
我正在为家庭作业进行彩虹攻击,并且在破解不同长度的密码时遇到了一些麻烦。这意味着我可以在 +- 2分钟内破解每个固定长度8的密码。但是,我不知道如何在不浪费太多时间的情况下处理长度为5到8的密码。
假设仅仅通过哈希是不可能知道密码的长度的,我已经尝试通过一个一个地尝试每个长度来破解哈希。这意味着我只花了2 x 4分钟来破解 1 个密码。
我应该使用最大密码长度减少每个可能的密码,然后只检查第一个字符还是一个坏主意?
我使用的是小写字母数字彩虹表、sha256算法和50 000个不同的 R 函数。我想找到一种方法来加速这个操作。感谢任何能提供帮助的人。
hash - bcrypt 哈希究竟如何防止彩虹表查找?
我非常接近了解 bcrypt 的比较功能是如何工作的,但是在我的知识中存在一些缺失的漏洞。
到目前为止我的理解:
brcypt 使用纯文本密码和随机生成的盐生成散列密码。散列密码是 bcrypt 版本、散列盐和串联散列纯文本密码的组合。当用户登录时,他们的纯文本密码通过比较功能运行。此时,bcrypt 知道散列中有多少个字符,以及从哪个偏移量开始将散列盐从完整散列中分割出来。然后它将盐与传入的纯文本密码连接起来,通过散列算法运行它以得到最终的散列字符串。将散列字符串与数据库中的散列字符串进行比较,如果字符完全匹配,则密码正确。
2个问题..
散列不应该是不可能逆转的吗?如果是这样,那么 bcrypt 如何知道如何解密散列盐,然后使用它来散列传入的纯文本密码。这对我来说没有任何逻辑意义。
如果 brcypts 算法被编写成它总是可以创建一个它总是知道如何解密的散列盐,那么黑客不能使用该算法从数据库中获取每个散列密码并将盐切掉吗?然后它可以为每种盐创建一个彩虹表并破解每个单独的密码?这在我看来是合乎逻辑的。
如果我的问题没有任何意义,请原谅。很高兴编辑。
阅读文章,阅读堆栈溢出问题,观看视频并询问高级工程师。
python - 如何在python中实现一个减少的彩虹表
我试图了解彩虹表是如何工作的,并试图在 python 中实现一个,但没有多大成功。
我有一些代码基本上在文本文件中创建一个字典,其中明文字符串映射到它们的哈希值,但无法弄清楚如何调整它以生成减少的彩虹表。
我遇到了归约函数并有点理解它们,因此将其定义为:
但我不知道从这里做什么:(
如何调整此代码以生成减少的彩虹表?
java - 有没有办法优化这段代码以更快地运行?
我正在编写一个程序来获取 MD5 哈希并针对 dictionary.txt 文件运行它。如果我只是运行文件中的一个单词,它会快速破解它,但如果我添加一个特殊字符,它大约需要 10 分钟才能破解。有没有办法让它跑得更快?如果我运行 $hello (932d24e18f06b12e7a867425d51c909a) 的 MD5 哈希,大约需要 10 分钟才能破解。