首先,我想避免对语言的战争。可供选择的语言有Perl、Python和Ruby。我想说的是,我对他们都很满意,但问题是我不能只关注其中一个。
例如,如果我看到一个很酷的Perl模块,我必须尝试一下。如果我看到一个不错的Python应用程序,我必须知道它是如何制作的。如果我看到一个Ruby DSL或者一些Ruby巫术,我会对Ruby着迷一段时间。
现在我是一名Java开发人员,但计划在不久的将来使用CEH。我的问题是:对于工具编写和开发,您认为哪种语言最合适?
再说一遍,我不想引起战争或任何麻烦,我只想从编剧那里得到诚实的意见,知道他们在做什么。
还有一件事:也许你们有些人会问“为什么要选择一种语言?”。要回答这个问题:我只想选择一种语言,以便努力掌握它。
我可以为这三个理由辩护:-)
Perl拥有所有的CPAN—在快速组合功能方面给了您巨大的优势。它还有一个非常灵活的测试基础设施,这意味着您可以在同一个框架中插入许多不同的自动化测试样式(包括其他语言的测试)。
Ruby是一种很好的学习语言,它缺乏Perl5的一些基础知识。如果您正在进行基于web的测试,它还具有watir库-这对trez很有用(请参见http://wtr.rubyforge.org/)
Python——很好的语言,而且(虽然这不是我个人的喜好)一些人发现它的结构更容易掌握。
他们中的任何一个(和许多其他人)都是一门很好的语言。
而不是看语言-我会看你的工作环境。如果你身边有其他人在做类似的事情,学习东西总是比较容易。如果你现在的开发人员/测试人员已经专注于上面的某一项——我会这么做的。如果没有,请选择最适合您当前工作环境的。与你的团队其他成员聊天,看看他们的想法。
[免责声明:我主要是Perl程序员,这可能会影响我的判断。然而,我不是一个特别的部落成员,我认为在这个问题上,我的论点是相当客观的。]
Perl被设计成可以无缝地融入Unix环境,这就是为什么它对以OO为主要背景的人(特别是Java的OOP学派)感觉如此陌生的原因。但是,由于这个原因,它被广泛地安装在具有任何类型Unixoid操作系统的机器上,并且许多供应商的系统实用程序都是在其中编写的。同样出于同样的原因,那些既没有安装Python也没有安装Ruby的服务器上仍然可能有Perl,这也使得熟悉Perl变得很重要。因此,如果您的CEH活动包括在Unix上的大量活动,那么无论如何,您都必须对Perl有一定的了解,并且您最好将精力放在它上面。
也就是说,这在很大程度上是一个偏好问题。语言之间没有太多的区别,它们的表达能力实际上是相同的。有些事情在其中一种语言中比较容易,有些在另一种语言中比较容易。
在库方面,我不知道Ruby和Python是如何比较的——我知道Perl让它们相形见绌。再者,有时(特别是当您正在寻找满足共同需求的库时),这样做的唯一效果是您被各种选择所淹没。如果您只想在Python或Ruby的库中很好地覆盖的某个特定领域做一些事情,那么CPAN上大量的其他东西并不一定是一个优势。然而,在利基领域,它很重要,你永远不知道你最终会有什么不可预见的需求(根据定义,是错误的)。
对于命令行上的一行程序,Python是一种非启动程序。
在交互式解释器环境方面,Perl…嗯…好吧,您可以使用调试器,这不是很好,或者您可以从CPAN安装一个调试器,但是Perl本身并不是很好。
因此,我认为Perl对于您的特殊需求确实有一个很小的优势,但仅仅是。如果你选择鲁比,你可能不会更糟。Python可能会给您带来更明显的不便,但它也不是一个糟糕的选择。
您可能需要Ruby,因为它是Metasploit的本地语言,而Metasploit实际上是标准的开源渗透测试框架。鲁比会给你:
排名第二的是Python。Python中有比Ruby中更多的潜在库可用(但不足以抵消Metasploit)。商业工具也倾向于支持Python——如果您是一个免疫画布或核心影响客户,那么您需要Python。Python给你:
毫不奇怪,许多web工作都使用Java工具。事实上,标准的web pentest工具是Burp Suite,它是一个Java swing应用程序。Ruby和Python都有Java变体,可以用来访问类似的工具。此外,Ruby和Python都提供:
这两种语言都不会出错,不过对于主流的pentest工作,Metasploit可能会忽略Python的所有优点,而目前,对于x86反向工作,Python优越的调试接口会忽略Ruby的所有优点。
还有:2008年。它们不是“脚本语言”。他们是编程语言。;)
相关问题 更多 >
编程相关推荐