Cracker初级教程之blowfish算法破解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Cracker初级教程之blowfish算法破解

一、Blowfish算法简介 Blowfish 加密算法是最早是由Bruce Schneier 于1993年11月发表的,目标是让人们可以用它来逐渐取代当时已经用了十几年并且已经被证明为“不太安全”的DES算法。Blowfish采用了 Feistel迭代结构(16圈), 64比特的输入分组,可变长度的密钥(最长为448bits),最吸引人的是它有非常快的加解密速度以及完全免费的使用许可。 Blowfish的快速是因为它在做加密和解密时主要利用了处理器的XOR和ADD,在实际测试中它比DES,IDEA,RC5等都要快很多。这样,它虽 然不是某些政府所标榜的加密标准,但却获得了自由软件业人士的喜爱,比如Linux下的SSH应用里面就包含了Blowfish算法(包括最新的2.6内 核)。 Blowfish的具体算法可参见/ 上的说明和各种语言实现的源代码(C,JAVA,VB…),这里比较推荐Paul Kocher于1997年用C实现的代码,虽然不是完整实现,但是非常简洁和流畅,适合分析和理解。 二、 blowfish加密算法基本知识 blowfish也是一个分组对称加密算法,Blowfish加密可以分为两部分: 1.密钥预处理: BlowFish算法的源密钥pbox和sbox是固定的。我们要加密一个信息,需要自己选择一个key, 用这个key对pbox和sbox进行变换,得到下一步信息加密所要用的key_pbox和key_sbox ,由于是在内存中产生大量的子密钥,在加密时直接引用即可,所以在加密时速度非常快。 2.信息加密: 对于64位的明文,分为两部分,进行16轮的的置换等操作,然后输入64位的密文。另外解密过程和加密过程类似。 三、如何识别blowfish加密算法 由于blowfish有内置的初始化固定密钥,所以可以找它内置的字符串如:pbox的串:886A3F24D308A385等。或者用peid的插件查看。据此可以判断有可能是用到blowfish密码算法,更精确的判断还得必须懂得一点blowfish的加解密过程。 Blowfish的算法的P盒和S盒非常有特点,它们是π的16进制小数位,比如P盒是: 0x243f6a88L, 0x85a308d3L, 0x13198a2eL, 0, 0xa4093822L, 0x299f31d0L, 0x082efa98L, 0xec4e6c89L, 0x452821e6L, 0x38d01377L, 0xbe5466cfL, 0x34e90c6cL, 0xc0ac29b7L, 0xc97c50ddL, 0x3f84d5b5L, 0xb5470917L, 0x9216d5d9L, 0x8979fb1bL S盒共有4个256字(32bit)长的数组,可参考源代码。 四、Crackme实例分析 本实例是lordor[Nuke Group]编写的Blowfish算法的Crackme程序(已收录到光盘,文件是crackme3.rar)。这个Crackme另外使用了DES和 MD5,不是主要的,只是为了让大家熟悉这两种算法。这次我们重点来看一下其中注册流程及blowfish相关的应用。 由于程序没有加壳,可以用ollyDbg调试器载入程序分析。第一关,由于程序的check按键是灰色的,看来程序对输入的注册码进行实时的运算并激活,那么就用EnableWindow函数名下断,可以定位下面的代码: 004027B2 PUSH crackme.0040A60C ; /String2 = 4002 004027B7 LEA EAX,DWORD PTR SS:[ESP+F4] ; | 004027BE PUSH EAX ; |String1 004027BF MOV BYTE PTR SS:[ESP+FC],BL ; | 004027C6 CALL DWORD PTR DS:[KERNEL32.lstrcmpA] ; \lstrcmpA 004027CC TEST EAX,EAX 004027CE PUSH 3EB ; /ControlID = 3EB (1003.) 004027D3 PUSH EBP ; |hWnd 004027D4 JNZ SHORT crackme.004027FD ; | 004027D6 MOV ECX,DWORD PTR SS:[ESP+F8] ; | 004027DD MOV DWORD PTR DS:[40CDA8],ECX ; | 004027E3 MOV DWORD PTR DS:[40CDAC],EBX ; | 004027E9 CALL DWORD PTR DS:[USER32.GetDlgItem] ; \GetDlgItem 004027EF PU

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档