| 查看: 224 | 回复: 1 | |||
| 当前主题已经存档。 | |||
miRNA至尊木虫 (职业作家)
水王之王(愚愚学园管理员)
|
[交流]
简单语言打造不简单的工具
|
||
|
学计算机程序的朋友最大的愿望就是能编出一款功能强大的程序,但实现起来却不容易,需要花很多时间来学习计算机语言,今天我就给大家介绍一个好用编程语言Practical Extraction and Report Language(perl),严格的说它只是个脚本语言,Perl象C一样强大,象awk、sed等脚本描述语言一样方便。如果你用的是unix环境那你一定对perl很熟悉了,今天我要谈的是在windows下用perl来打造一个自己满意的程序,如果你学过c语言的话,那你上手一定很快,因为他很c语言很相似,如果你没学过程序也没关系,因为perl的随意,会让你感觉写程序是那样的简单,是不是动心了?Let's go. 程序实现目的: 1.MD5密码破解 2.用BASE64编码解码功能实现文本加密 编程使用语言:perl 编程环境:Windows 2000 + ActivePerl 5.8.0 Build 806 首先,我们要安装ActivePerl 5.8.0 下载地址:http://downloads.activestate.com ... 806-MSWin32-x86.msi 下载好了以后根据提示安装,我在这里就不详细介绍了。 第一个功能的实现: MD5密码破解,有人就疑问了,用这个加密的密码是不可以破解的啊,怎么破解呢?呵呵,既然不可逆那我们就顺着来啊,思路:将明文密码用MD5算法加密,然后和需要破解的MD5密码对比。正好perl中也提供了MD5的加密功能,仔细查看帮助文档我们会发现有MD2、MD4、MD5,我们今天要实现的是MD5的破解,其他的我们不管了,MD5加密也是现在最流行的,很多BBS的数据库密码都使用它来加密。 #MD5 password crack #write by fengze #usr/bin/perl! -w use Digest::MD5 qw(md5_hex); #载入MD5模块 print "Please input MD5 password:"; #输出提示到屏幕,提示用户输入一个MD5加密的密码 $MD5= chop($MD5); #把最后一个字符删除,也就是删除输入时的回车 $pwd=lc($MD5); #将密码转换成小写(perl中生成的MD5密码都是小写 的) print "Please input password dictionary:"; #输出提示到屏幕,提示输入密码字典的名字 $file= chop($file); #把最后一个字符删除 open(FILE,"$file" ||die "Can't open password dictionary"; #打开字典文件 while(@pass= chop($passwd); #把最后一个字符删除(这个很重要) $md5pass=md5_hex($passwd); #把从密码字典读取的明文密码加密成MD5密码 if($md5pass eq $pwd){ #将生成的MD5密码和输入的MD5密码比较如果完全匹print "MD5: $md5passwd Password: $passwd\n"; 配则输出MD5密码和明文密码 } } } 程序结束,是不是很简单啊,别不相信,可以自己试一下啊。这个程序只能猜解一个密码,如何猜解多个密码呢?相信聪明的你已经想到了吧,我就不多说了。 第二个功能的实现: 用BASE64编码解码功能实现文本加密,这个功能也是直接调用perl提供给我们的模块实现的。 #BASE64 encode and decode TXT files. #write by fengze #!usr/bin/perl use MIME::Base64; #载入MIME::Base64模块 new:print "1.encode\n"; #new是配合goto语句使用的 print "2.decode\n"; #输出提示 print "Please choose: "; #选择加密(encode)或解密(decode) $a= chop($a); if($a<1 || $a>3){goto new;} #如果值不在范围内则返回new if($a==1){ #加密代码区域 print "Please Input Encode Filename:"; #提示输入要加密的文件名 $file= print "Please Input Great Filename:"; #提示加密后生成的文件名 $file1= open(H,$file) || die "Can't open $file file"; #打开文件为了读取 open(HI,">>$file1" || die "Can't great file1 file";#打开文件为了写入 binmode(H); binmode(HI); #将文件用二进制函数处理 while (@str= foreach $string(@str){ #将文件中的字符放到$string中 print HI encode_base64($string); #将$string中的字符加密并输出到文件 }} close H; close HI; #关闭文件 } if($a==2){ print "Please Input Decode Filename:"; #这里我就不做解释了,根据上面的解释相信你 $file= print "Please Input Great Filename:"; $file1= open (H,$file) || die "Can't open $file"; open (HI,">>$file1" || die "Can't great $file1"; binmode(H); binmode(HI); while(@str= foreach $string(@str){ print HI decode_base64($string); #这里将字符解密并输出到文件 }} close H; close HI; } 好了,自己的工具的2个功能已经实现了,将他们写入一个文件,然后编译后就可以在windows中运行了,编译后的程序有点大,但不需要系统安装perl环境。 perl能实现的东西很多,我以前写的一篇perl网络编程的学习日记放在了自己的小站上了,有兴趣的朋友可以到http://www.safetyie.com/fengze/来查看。由于本人的水平有限,如上程序有不妥之处还望各位斧正。 转 [ Last edited by 幻影无痕 on 2006-10-7 at 09:48 ] |
» 猜你喜欢
拟解决的关键科学问题还要不要写
已经有7人回复
存款400万可以在学校里躺平吗
已经有19人回复
国自然申请面上模板最新2026版出了吗?
已经有19人回复
请教限项目规定
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
推荐一本书
已经有13人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复

yuefour
金虫 (正式写手)
- 应助: 0 (幼儿园)
- 贵宾: 9.5
- 金币: 1310.7
- 帖子: 838
- 在线: 17小时
- 虫号: 64621
- 注册: 2005-04-16
- 性别: GG
- 专业: 中医内科
2楼2005-06-14 19:15:52













||die "Can't open password dictionary"; #打开字典文件
回复此楼