| 关键词: nbsp 编译器 代码 结果 编译 printf 参数 dword Release ebp |
最近些天看了Schwartz写的Perl语言入门。在这本书的前言部分,大概了解了Perl差不多是融合了各种语言的优势,比如PHP/Python的正则表达式,C的基本语法等,正如书上说的那样,他把几个有不同魔力的水晶球熔掉,再加入一些小的有着特殊魔力的水晶球,然后把它们熔在一块,成了一个拥有各种魔力的大水晶球。而这个大水晶球已经是极具魔力了!Perl就是那个最后的大水晶球,而C,PHP,Python,则是被熔掉的小水晶球。废话没有说服力,以代码为证。我以一个简单的文本查找来举例:有一个pass.txt,里面存了很多用户名和密码的32位MD5值等信息,我现在要把里面的MD5值全找出并在屏幕上输出,pass.txt内容如下: raymond:ec27bae8a6a68e7540e981c0f888dc92 ,jake:0d4cbaad3bbd67c1bcd603b2a01468e8 ,This world never dies:e8a7e2db3141e0c9baf819a8e495f651 ,damesdale:b2ee7d25dc385b3cb5d596d5cb2d647b ,shekinah:5da4266d3de6dbaf425a2d4fc16225d0 ,jhin:3360d0103043bca029a5a9b3561c9fc5 ,ajmp_4444:f6e28e2a2d1b1b14adbc47534da454b5 ,ichoi:1b4d3c02d20d2f306acdeff8469715fc ,kathrinasayan:8320c41f1ddc956da42d7ff46ad46203 ,buenferdinand:b9a1ee8824e58db7c1c5f4014691bdca ,jinieuge_22:f8ba79b96fb634fc450052686efe46d8 ,gilmore122002:17c79b29567c1f39a4391cfce06da5e0 ,mistymwah:64d6bbb2a411ef0561afc6300f1e57d1 ,serjs88:898dd88cca7b2f65461bc491dacb9b25 ,serjs88:898dd88cca7b2f65461bc491dacb9b25 ,sheryldaquioag:4d54f483e2eaf8ce640100d88f8a29eb ,jayson:9eef6a1f927654f24801f58fe67bb1d4 ,Geraldine:8002d34dc747d707ccbfb93fdaab9bce 可以看到,内容很乱,不但有用户名的干扰,还有逗号,冒号,换行等符号的干扰。如果想用C等语言把里面的MD5整理出来是件很麻烦的事,在Perl下则不同了。下面是我写的代码(find.pl): # F:\Perl -wwhile (<>) #打开参数文件并读入一行{ chomp($a.=$_); #去掉行尾换行符,并接到上一行剩余字符串后面 while($a=~/([\w]{32})/) #匹配32位MD5字符串(正则表达式处理文本,效率真是一流) { print $1."\n"; #输出匹配的MD5字符串 $a=~s/.*$1//; #删除匹配过的MD5字符串,以便下一次匹配 }} 然后在命令行下输入:Perl find.pl pass.txt 就会把pass.txt里面的所有MD5值全输出的屏幕上。 这段代码除去注释和大括号,只有短短5句代码,Perl的精辟可见一斑!注:代码中判断32位MD5我用的是/([\w]{32})/,如果怕其它字符干扰还可以改为/([0-9a-fA-F]{32})/。我开始写的代码在处理有换行符的时候,是先把读入的文件保存到一个变量里,使它变成一行,但觉得那样效率/内存占用率等方面会不太好,所以改成了现在这个样子,读一行判断一次,有匹配的就输出,没有则把读入的内容加到下一行。 国外很多黑客网站公布的脚本漏洞的exp都是用Perl写的,我想这也是Perl使用方便的原因吧。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|