【信息安全概论 实验报告3】哈希算法及破解实验

张开发
2026/4/14 18:24:52 15 分钟阅读

分享文章

【信息安全概论 实验报告3】哈希算法及破解实验
上一篇【信息安全概论 实验报告2】PGP软件的使用目录实验目的二、实验环境三、实验内容四、实验步骤1.获得MD5密文2.破解已知的简单MD5值回答问题实验目的使用彩虹表破解散列值b0baee9d279d34fa1dfd71aadb908c3f掌握MD5破解的方法、过程和原理增强对MD5算法安全性的认识二、实验环境工具目录C:\实验工具集\05_日常应用安全三、实验内容1、学习RainbowCrack、MD5Crack工具的使用方法。参考资料http://project-rainbowcrack.com/http://md5crack.adintr.com/https://cloud.tencent.com/developer/article/16818632、使用彩虹表破解散列值b0baee9d279d34fa1dfd71aadb908c3f。3、利用MD5Crack记录破解不同密码的时间并对比分析影响破解时间的主要因素有哪些。4、学习Serv-U 软件密码的加密和破解方法。四、实验步骤1.获得MD5密文1.1打开C:\实验工具集\05_日常应用安全\第4节暴力破解-MD5crack\目录下的MD5Maker.exe在软件界面中输入“123456”生成MD5散列值。如图1所示2.破解已知的简单MD5值2.1打开C:\实验工具集\05_日常应用安全\第4节 暴力破解-MD5crack\目录下的MD5Crack.exe将上文生成的32位MD5散列值复制到输入框中。如图2所示时间为14秒3.1用MD5生成器生成较为复杂的明文MD5值例如aaaaaa复制密文到破解软件中并配置破解参数。如图5所示时间为4秒3.3再次选取长度更长或者密码与数字混合的明文的MD5值进行破解。不难看出当对明文未知的情况下明文长度字符集的选择都影响MD5值的暴力破解。时间为34秒在终端输入命令rcrack命令显示命令格式信息。如图2所示在终端中输入rtgen显示参数格式。如图3所示1.4利用rtgen命令创建一个的彩虹表在终端中输入cd /usr/share/rainbowcrack切换目录输入rtgen md5 numeric 5 5 0 100 2000 0生成彩虹表。如图4所示1.5利用rtsort命令排序生成的字典加快彩虹表的查找速度。在终端中输入rtsort .。如图5所示1.6在终端输入echo -n 11111 | openssl md5生成hash最后使用rcrack命令破解散列值在终端中输入rcrack . -h b0baee9d279d34fa1dfd71aadb908c3f可以看到破解成功。如图6所示回答问题尝试用MD5Crack破解A029D0DF84EB5549C641E04A9EF389E5给出破解过程和结果。尝试用彩虹表破解A029D0DF84EB5549C641E04A9EF389E5给出破解过程和结果。确定散列类型首先需要确认A029D0DF84EB5549C641E04A9EF389E5的散列类型。假设它是MD5散列。获取彩虹表接下来需要获取或生成一个针对MD5散列的彩虹表。彩虹表可以在网上找到也可以使用特定的工具生成但生成可能会非常耗时。搜索彩虹表使用彩虹表来查找与A029D0DF84EB5549C641E04A9EF389E5对应的原始密码。这个过程通常涉及到搜索彩虹表中的链找到与散列值相匹配的链的末端然后通过还原这个链来找到原始的密码。可能找到多个匹配项可能会找到多个可能匹配的结果因为彩虹表并不保证100%的准确率可能会遇到所谓的“碰撞”即不同的密码产生相同的散列值。验证结果一旦得到一个或多个可能的密码需要对每一个进行验证将其通过相同的散列函数进行散列并与原始的散列值进行比较以验证是否正确。Serv-U 密码记录在哪个文件里Serv-U 的密码通常存储在其配置文件中这些配置文件的位置可能因安装路径和操作系统的不同而有所不同。在Windows系统上这些文件通常位于Serv-U\Users目录下具体文件名依赖于具体的用户或域名设置。4、彩虹表破解HASH值的基本思想是预计算阶段首先选择一系列可能的密码称为“plaintexts”并将这些密码通过特定的哈希函数转换为哈希值。这个过程不是简单的一对一映射而是构建成一个长链式的数据结构。在彩虹表中每个链的起始点是一个明文通过多次应用哈希函数和简化函数的组合简化函数将哈希值转换回可能的密码空间形成一个由“明文 - 哈希值 - 新明文 - 新哈希值……”组成的链。链的终止与存储每个链经过多次转换后最终会停止在一个终点通常只存储每个链的开始点初始密码和结束点最终哈希值以节省存储空间。查找阶段当你拥有一个需要破解的哈希值时你会尝试将这个哈希值与彩虹表中存储的链的终点进行比较。如果没有找到匹配你会使用简化函数逆向重建这个哈希值的前一个可能的明文并再次尝试匹配。这个过程可能需要重复多次每次都相当于沿着预计算的链反向走一步。成功与冲突如果找到一个匹配的终点哈希值你则可以从对应的链的起点开始通过正向再次执行预计算过程直到达到原始的哈希值从而获得对应的明文密码。需要注意的是由于哈希函数的性质可能存在冲突即不同的密码可能会产生相同的哈希值这可能导致破解得到错误的密码。

更多文章