代码之家  ›  专栏  ›  技术社区  ›  Vhaerun

以下哪种脚本语言更适合笔测试?[关闭]

  •  6
  • Vhaerun  · 技术社区  · 16 年前

    首先,我想避免在语言上发生激烈的战争。可供选择的语言有Perl、Python和Ruby。我想说的是,我对所有这些都很满意,但问题是我不能只关注一个。

    例如,如果我看到一个很酷的Perl模块,我必须尝试一下。如果我看到一个不错的Python应用程序,我必须知道它是如何制作的。如果我看到Ruby DSL或一些Ruby巫毒教,我会对Ruby上瘾一段时间。

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

    再说一次,我不想引发一场口水战或任何麻烦,我只想得到编剧们的诚实意见,他们知道自己在做什么。

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

    12 回复  |  直到 12 年前
        1
  •  28
  •   the Tin Man    12 年前

    你可能想要Ruby,因为它是Metasploit的原生语言,Metasploiit是事实上的标准开源渗透测试框架。Ruby将为你提供:

    • Metasploit's 框架、操作码和外壳码数据库
    • Metasploit的 Ruby lorcon 用于原始802.11工作的绑定。
    • Metasploit的KARMA绑定用于802.11客户端重定向。
    • Libcurl net/http用于web工具的编写。
    • EventMachine 用于web代理和模糊测试工作(或RFuzz,它扩展了著名的Mongrel web服务器)。
    • Metasm 用于生成外壳代码。
    • Distorm 用于x86拆卸。
    • BinData 用于二进制文件格式模糊测试。

    第二名是Python。Python中可用的渗透测试库比Ruby中更多(但不足以抵消Metasploit)。商业工具也倾向于支持Python——如果你是Immunity CANVAS或CORE Impact的客户,你想要Python。Python给你:

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

    • 与libpcap直接集成,用于原始数据包工作。
    • 用于加密的OpenSSL绑定。
    • IDA Pro扩展。
    • 用于API访问的成熟(或至少合理)C外部函数接口。
    • 用于UI工作的WxWindows,以及用于web UI的体面web堆栈。

    这两种语言都不会出错,尽管对于主流的pentest工作,Metasploit可能会超越Python的所有优势,而目前,对于x86反向工作,Python优越的调试接口会超越Ruby的所有优势。

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

        2
  •  8
  •   Aristotle Pagaltzis    16 年前

    [免责声明:我主要是一名Perl程序员,这可能会影响我的判断。然而,我并不是一个特别部落化的人,我认为在这个特定的问题上,我的论点是相当客观的。]

    Perl的设计是为了无缝融入Unix环境,这就是为什么它对主要具有面向对象背景的人(尤其是面向对象的Java学派)来说是如此陌生。然而,出于这个原因,它被广泛安装在任何类型的Unixoid操作系统的机器上,并且许多供应商的系统实用程序都是用它编写的。同样出于同样的原因,既没有安装Python也没有安装Ruby的服务器仍然可能有Perl,因此熟悉Perl非常重要。因此,如果你的CEH活动包括在Unix上的广泛活动,你无论如何都必须对Perl有一定的熟悉程度,你最好专注于它。

    也就是说,这在很大程度上是一个偏好问题。语言之间没有太大区别;它们的表现力几乎完全相同。有些事情在其中一种语言中更容易,有些事情在另一种语言里更容易。

    在库方面,我不知道Ruby和Python是如何相互比较的,但我知道Perl远远超过了它们。再说一次,有时(尤其是当你在寻找满足共同需求的库时),唯一的影响就是你被各种选择淹没了。如果你只想在Python或Ruby库很好覆盖的特定领域做事情 别的 CPAN上的东西不一定是优势。然而,在利基领域,这很重要,你永远不知道你最终会有什么不可预见的需求(根据定义是错误的)。

    对于命令行上的单行程序使用,Python是一种不可能的。

    在交互式解释器环境方面,Perl嗯,你可以使用调试器,它不是很好,或者你可以从CPAN安装一个,但Perl本身并没有提供一个好的调试器。

    所以我认为Perl确实对你的需求有很小的优势,但只是刚刚好。如果你选择Ruby,你的处境可能不会更糟。Python可能会给你带来更明显的不便,但它也很难成为 坏的 选择。

        3
  •  4
  •   adrianh    16 年前

    我可以为这三个问题提出一个论点:-)

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

    Ruby是一种很好学习的语言,但缺少Perl 5中的一些粗制滥造之处。如果你正在进行基于网络的测试,它还有watir库,这对trez很有用(参见 http://wtr.rubyforge.org/ )

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

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

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

        4
  •  3
  •   UnkwnTech    16 年前

    这取决于实现,如果它是分布式的,我会选择Java,正如你所知,因为它的可移植性。如果它仅用于内部使用,或者将在半受控环境中使用,那么请选择您最喜欢的维护方式,以及具有最佳长期前景的方式。

    现在,为了回答这个问题,我会选择Perl,但我是一个linux爱好者,所以我在这方面可能有点偏颇。

        5
  •  3
  •   QAZ    10 年前

    如果您计划使用Metasploit进行笔测试和漏洞开发,我建议您使用前面提到的ruby。Metasploiit是用ruby编写的,您可能希望进行的任何漏洞/模块开发都需要ruby。

    如果你将使用Immunity CANVAS进行笔测试,那么出于同样的原因,我会推荐Python,因为CANVAS是用Python编写的。此外,Peach和Sulley等模糊框架也是用Python编写的。

    我不推荐Perl,因为你会发现很少有与笔测试/模糊测试/漏洞利用相关的工具/脚本/框架。..在Perl中。

    由于你的问题是“工具编写和漏洞开发”,如果你选择Metasploit,我会推荐Ruby;如果你选择CANVAS,我会建议使用python。

    希望有帮助:)

        6
  •  2
  •   573f    16 年前

    作为CEH,首先学习CEH材料。这将使您接触到用于发动各种攻击的各种工具和平台。一旦你很好地理解了你的目标,看看现有工具和平台的功能(前面提到的metasploit框架非常全面和强大)。如何扩展它们以满足您的需求?一旦你知道了这一点,你就可以比较这些语言的能力。

    我还建议您查看一下 BackTrack 发行版。

        7
  •  1
  •   Leon Timmermans    16 年前

    所有这些都应该足够了。除非你需要一个只提供一种语言的库,否则我会让个人喜好来指导我。

        8
  •  1
  •   Rachel    16 年前

    如果你正在寻找一种能很好地与Java配合使用的脚本语言,你可能想看看Groovy。它具有Perl的灵活性和强大功能(闭包、内置正则表达式、每个角落的关联数组),但你可以从它访问Java代码,因此你可以访问大量的库,特别是你正在开发的系统的其余部分。

        9
  •  1
  •   jkramer    16 年前

    metasploit 是一个很好的渗透测试框架。它主要是用Ruby编写的,所以如果你熟悉这种语言,也许你可以在那里学习。然而,为了 使用 metasploit,你根本不需要知道任何语言。

        10
  •  1
  •   foobarfuzzbizz    15 年前

    如果你对CEH感兴趣,我会看看 Grey Hat Python 。它展示了一些非常有趣和相关的东西。

    话虽如此,任何语言都可以。

        11
  •  0
  •   brian d foy    16 年前

    好吧,你在想什么样的功绩?如果你想写一些需要低级东西(ptrace、原始套接字等)的东西,那么你需要学习C。但Perl和Python都可以使用。真正的问题是哪一个更适合你的风格?

    至于工具制作,Perl具有良好的字符串处理能力,更接近系统,有很好的支持,但依我之见,它非常令人困惑。我更喜欢Python:它是一种干净、易于使用、易于学习的语言,具有良好的支持(完整的语言/lib参考、第三方库等)。而且(严格来说,依我之见)很酷。

        12
  •  0
  •   r3nrut    14 年前

    我使用tqbf。我使用过Python和Ruby。目前,我正在使用JRuby。它具有Ruby的所有功能,可以访问Java库,所以如果你绝对需要一种低级语言来解决某个问题,你可以用高级语言来解决。到目前为止,我还不需要真正使用太多Java,因为Ruby已经能够完成我作为API测试人员所需要的一切。