首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这些脚本语言中哪一种更适合笔试?

这些脚本语言中哪一种更适合笔试?
EN

Stack Overflow用户
提问于 2008-09-16 20:11:22
回答 12查看 6.3K关注 0票数 6

首先,我想避免语言上的一场火焰之战。可供选择的语言有Perl、Python和Ruby。我想提一下,我对所有这些都很满意,但问题是我不能只专注于其中一个。

例如,如果我看到一个很酷的Perl模块,我必须尝试一下。如果我看到一个很好的Python应用程序,我必须知道它是如何制作的。如果我看到Ruby DSL或某种Ruby巫术,我就会迷上Ruby一段时间。

目前我是一名Java开发人员,但计划在不久的将来参加CEH。我的问题是:对于工具编写和开发,您认为哪种语言最合适?

再说一次,我不想引起一场战争或任何麻烦,我只想从知道他们在做什么的编写者那里得到诚实的意见。

还有一件事:也许你们中的一些人会问“为什么只选择一种语言?”要回答这个问题:我只想选择一种语言,以便尝试掌握它。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2008-09-17 00:11:01

您可能需要Ruby,因为它是Metasploit的本地语言,Metasploit是事实上的标准开源渗透测试框架。Ruby将为您提供:

用于raw 802.11的

  • Metasploit's框架、操作码和外壳代码databases
  • Metasploit's绑定802.11客户端redirection.
  • Libcurl的KARMA绑定和用于web代理和模糊工作的web工具writing.
  • EventMachine的net/http (或RFuzz,它扩展了众所周知的Mongrel generation.
  • Distorm databases
  • Metasploit‘s shellcode generation.
  • Distormdatabases
  • Metasploit’s x86 disassembly.
  • BinData Ruby lorcon二进制文件格式模糊。

这里的第二名是Python。与Ruby相比,Python中有更多可用的五角化库(但不足以抵消Metasploit)。商业工具也倾向于支持Python -如果你是一个免疫画布或核心影响客户,你会想要Python。Python为您提供了:

  • Twisted用于网络access.
  • PaiMei用于程序跟踪,可编程debugging.
  • CANVAS和Impact support.
  • Dornseif's firewire库用于远程debugging.
  • Ready integration with WinDbg用于远程Windows内核调试(在Ruby语言中对于内核调试仍然没有很好的解决方案,这就是为什么我仍然偶尔使用Python.)。用于web渗透测试的fuzzing.
  • SpikeProxy的
  • Peach Fuzzer和Sully (也称为OWASP Pantera).

不出所料,许多web工作都使用Java工具。事实上标准的web pentest工具是Burp Suite,它是一个Java swing应用程序。Ruby和Python都有Java变体,您可以使用它们来访问这样的工具。此外,Ruby和Python都提供了:

用于加密的原始packet work.

  • OpenSSL绑定的
  • 直接集成。用于用于UI工作的
  • IDA Pro extensions.
  • Mature (或至少是合理的)C外部函数接口,以及用于web UI的像样的web堆栈。

无论使用哪种语言,您都不会出错,尽管对于主流的pentest工作,Metasploit可能会挤掉Python语言的所有好处,而目前,对于x86逆向工作,Python语言优越的调试接口会挤掉所有Ruby语言的好处。

还有:现在是2008年。它们不是“脚本语言”。它们是编程语言。;)

票数 28
EN

Stack Overflow用户

发布于 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可能会给您带来更明显的不便,但它也不是一个糟糕的选择。

票数 8
EN

Stack Overflow用户

发布于 2008-09-16 22:48:57

我可以为所有这三种情况做一个论证:-)

Perl拥有CPAN的所有功能-在快速组合功能方面给了您巨大的优势。它还有一个很好的灵活的测试基础设施,这意味着你可以在同一个框架中插入许多不同的自动化测试风格(包括其他语言的测试)。

Ruby是一门很好学的语言--它缺少Perl5中的一些缺点。如果你在做基于web的测试,它也有watir库--这对trez很有用(参见http://wtr.rubyforge.org/)。

Python -很好的语言(虽然不是我个人的偏好),一些人发现它的结构更容易掌握。

它们中的任何一种(以及许多其他语言)都将是一门很好的学习语言。

我关注的不是语言,而是你的工作环境。如果你周围有其他人在做类似的事情,那么学习东西总是更容易。如果你现在的开发人员/测试人员已经专注于上面的一个-我会去做的。如果不是,请选择最适合您当前工作环境/最有用的。与团队中的其他成员聊天,看看他们的想法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/76408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档