首先,我想避免语言上的一场火焰之战。可供选择的语言有Perl、Python和Ruby。我想提一下,我对所有这些都很满意,但问题是我不能只专注于其中一个。
例如,如果我看到一个很酷的Perl模块,我必须尝试一下。如果我看到一个很好的Python应用程序,我必须知道它是如何制作的。如果我看到Ruby DSL或某种Ruby巫术,我就会迷上Ruby一段时间。
目前我是一名Java开发人员,但计划在不久的将来参加CEH。我的问题是:对于工具编写和开发,您认为哪种语言最合适?
再说一次,我不想引起一场战争或任何麻烦,我只想从知道他们在做什么的编写者那里得到诚实的意见。
还有一件事:也许你们中的一些人会问“为什么只选择一种语言?”要回答这个问题:我只想选择一种语言,以便尝试掌握它。
发布于 2008-09-17 00:11:01
您可能需要Ruby,因为它是Metasploit的本地语言,Metasploit是事实上的标准开源渗透测试框架。Ruby将为您提供:
用于raw 802.11的
这里的第二名是Python。与Ruby相比,Python中有更多可用的五角化库(但不足以抵消Metasploit)。商业工具也倾向于支持Python -如果你是一个免疫画布或核心影响客户,你会想要Python。Python为您提供了:
不出所料,许多web工作都使用Java工具。事实上标准的web pentest工具是Burp Suite,它是一个Java swing应用程序。Ruby和Python都有Java变体,您可以使用它们来访问这样的工具。此外,Ruby和Python都提供了:
用于加密的原始packet work.
无论使用哪种语言,您都不会出错,尽管对于主流的pentest工作,Metasploit可能会挤掉Python语言的所有好处,而目前,对于x86逆向工作,Python语言优越的调试接口会挤掉所有Ruby语言的好处。
还有:现在是2008年。它们不是“脚本语言”。它们是编程语言。;)
发布于 2008-09-16 22:04:39
免责声明:我主要是一名Perl程序员,这可能会影响我的判断。然而,我不是一个特别的部落的人,我认为在这个特定的问题上,我的论点是相当客观的。
Perl被设计成无缝地融入Unix环境,这就是为什么它对具有主要面向对象背景的人(尤其是面向对象的Java学派)如此陌生的原因。由于这个原因,它被广泛地安装在任何类型的Unixoid操作系统的机器上,许多供应商的系统实用程序都是用它编写的。同样出于同样的原因,既没有安装Python也没有安装Ruby的服务器仍然可能安装有Perl,这也使得熟悉它变得很重要。因此,如果您的CEH活动包括Unix上的大量活动,那么您无论如何都必须对Perl有一定程度的了解,而且您最好还是专注于它。
也就是说,这在很大程度上是一个偏好问题。这两种语言没有太多的区别;它们的表达能力实际上是相同的。在一种语言中,有些事情会更容易一些,而在另一种语言中,有些事情会更容易一些。
就库而言,我不知道Ruby和Python是如何比较的--我只知道Perl比它们差了一大截。话又说回来,有时(特别是当你在寻找满足一般需求的库时),唯一的效果就是你会有大量的选择。如果您只想在Python或Ruby库很好地涵盖的某个特定领域做一些事情,那么CPAN上的大量其他东西不一定是一个优势。然而,在利基领域,它很重要,你永远不会知道你最终会有什么不可预见的需求(根据定义)。
对于命令行上的单行使用,Python是一种不可启动的工具。
在交互式解释程序环境方面,Perl…uhm…您可以使用调试器,这并不是很好,也可以从CPAN安装一个调试器,但是Perl本身并没有提供一个好的调试器。
因此,我认为Perl在满足您的特定需求方面确实略有优势,但仅限于此。如果你选择Ruby,你可能根本不会变得更糟。Python可能会给您带来更明显的不便,但它也不是一个糟糕的选择。
发布于 2008-09-16 22:48:57
我可以为所有这三种情况做一个论证:-)
Perl拥有CPAN的所有功能-在快速组合功能方面给了您巨大的优势。它还有一个很好的灵活的测试基础设施,这意味着你可以在同一个框架中插入许多不同的自动化测试风格(包括其他语言的测试)。
Ruby是一门很好学的语言--它缺少Perl5中的一些缺点。如果你在做基于web的测试,它也有watir库--这对trez很有用(参见http://wtr.rubyforge.org/)。
Python -很好的语言(虽然不是我个人的偏好),一些人发现它的结构更容易掌握。
它们中的任何一种(以及许多其他语言)都将是一门很好的学习语言。
我关注的不是语言,而是你的工作环境。如果你周围有其他人在做类似的事情,那么学习东西总是更容易。如果你现在的开发人员/测试人员已经专注于上面的一个-我会去做的。如果不是,请选择最适合您当前工作环境/最有用的。与团队中的其他成员聊天,看看他们的想法。
https://stackoverflow.com/questions/76408
复制相似问题