有关如何以编程方式与nmap集成的任何想法?

时间:2009-04-09 16:40:04

标签: c++ security integration nmap

我刚开始研究如何将开源安全产品nmap集成到某些c ++代码中。如果有人试过这个,并对最佳方法有一些想法,我当然会感激。

感谢您的回复。具体来说,我想运行端口扫描(ipv6)。我肯定更喜欢非gpl解决方案,如命令行或套接字接口。但是,我也是这一点,我正在寻找最快的解决方案,因为我们正在面对一些严格的时间表,我们可以在必要时重新实现非gpl解决方案。

4 个答案:

答案 0 :(得分:6)

(注意:我不是律师,这一切都不应被视为法律建议)

您应该注意到,根据手册中的the licensing chapter,Nmap会将产品解析为其派生作品,因此属于GPL许可义务。 GPLv2没有定义派生作品是什么,而是根据版权法的定义让法院判决。通常的解释是,除了链接到操作系统中包含的系统库之外,任何形式的链接都使链接的工作成为派生的工作,而通过管道或网络进行通信的单独进程不一定是派生的工作,尽管如上所述GPL FAQ,“如果沟通的语义足够密切,交换复杂的内部数据结构,这也可以作为将两个部分组合成一个更大的程序的基础。”这似乎是Nmap开发人员正在采取的解释。

无论如何,假设您不需要担心GPL,您可能希望查看Nmap的output options;特别是,-oX表示XML输出,-oG表示“greppable”输出。如果您需要更多地控制Nmap的功能,您应该查看Nmap Scripting Engine,这是Nmap中的一个Lua脚本引擎,可以为您提供各种控制。

答案 1 :(得分:1)

您是否希望使用特定功能?我发现在其他语言中使用nmap的一种简单方法是使用-oX开关吐出xml。有一个DTD(和许多方法将其转换为您最喜欢的绑定工具的xsd)您可以使用什么来使用数据。

鉴于您使用C ++编写,但如果需要,可能很容易直接链接。

答案 2 :(得分:1)

你总是可以用烟斗来读它。根据传统,即使非GPL访问GPL也是可以接受的。

答案 3 :(得分:0)

“整合”并不是说得太多。你想做什么事?根据“集成”的级别,将nmap作为单独的进程运行并捕获其输出可能就足够了。优点是您可以在不重建应用程序的情况下更新nmap的版本。如果你需要更紧密的耦合,那么它取决于你需要什么功能和“库化”nmap,但要注意它是GPL代码,这种集成需要你的应用程序的源代码分发..