Why Perl, not Python
此post并不是想引起语言之争,只是自己的一个针对特定情况的小发现而已。
在信息安全领域,Perl和Python一直是安全工作人员的好帮手,开发快速,简单,无须编译直接运行……这些优点,使它们成为写injector/sender的不二选择。
一般来说,做exploit的初期,通常会需要发送大量的数据,一般来说比较常见的是这样的Perl语句:
$ perl -e 'print "A" x 10240'
我原来也一直在用这样的语句,但是今天想想,为什么一定要用Perl啊,Python其实也有一样的功能嘛:
$ python -c 'print "A" * 10240'
小测试了一下,原来用Perl还是有原因的——速度。Perl的速度还真不是盖的。当然,Perl出现得比较早,hacker们形成了传统也说不定。
$ time perl -e 'print "a" x 10240' > /dev/null real 0m0.008s user 0m0.000s sys 0m0.008s
$ time python -c 'print "a" * 10240' > /dev/null real 0m0.024s user 0m0.001s sys 0m0.023s
再写一个C程序,做同样的事情。
char buf[10240];
int i;
int main()
{
for (i = 0; i < 10240; i++)
buf[i] = 'a';
write(1, buf, 10240);
return 0;
}
C程序测试结果如下:
$ time ./test > /dev/null real 0m0.005s user 0m0.000s sys 0m0.003s
果然还是C语言的最快,不过,Perl和Python在开发上的便捷性弥补了它们在速度上的小劣势。
再回到Perl和Python的比较上来,在做这一件事上,Perl比Python要快,这是没得说的了,数据说话。因此,在快速测试时,估计我以后也是用Perl来直接输出字符串了。不过在写正式的exploit时,Python比Perl更整洁点,我还是会选择Python的。
© 2009, liuw. All rights reserved.
我这才发现。。php真慢阿。。。
felix021(Quote)
felix021
29 Jul 09 at 13:31