Liuw's Thinkpad

想要赢就先学会输,想要成功就先学会失败

Why Perl, not Python

with one comment

此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.

Written by liuw

July 28th, 2009 at 4:13 pm

One Response to 'Why Perl, not Python'

Subscribe to comments with RSS or TrackBack to 'Why Perl, not Python'.

  1. 我这才发现。。php真慢阿。。。

      (Quote)

    felix021

    29 Jul 09 at 13:31

Leave a Reply

*