我刚刚开始研究如何将开源安全产品 nmap 集成到某些 C++ 代码中。如果有人试过这个,并且对最佳方法有一些想法,我当然会很感激。
感谢您的回复。具体来说,我想运行端口扫描 (ipv6)。我肯定更喜欢非 gpl 解决方案,例如命令行或套接字接口(interface)。然而,我也在寻找最快的解决方案,因为我们要面对一些严格的时间表,如果需要,我们可以回载实现非 gpl 解决方案。
最佳答案
(注:我不是律师,所有这些都不应被视为法律建议)
您可能应该注意到,根据 the licensing chapter,Nmap 将解析其输出的产品视为派生作品。在手册中,因此属于 GPL 许可义务。 GPLv2没有定义什么是衍生作品,而是让法院根据版权法的定义来决定。通常的解释是,除了链接到操作系统中包含的系统库之外,任何形式的链接都会使链接的作品成为派生作品,而通过管道或网络进行对话的单独进程不一定是派生作品,尽管如GPL FAQ ,“如果通信的语义足够亲密,交换复杂的内部数据结构,那也可以成为考虑将这两个部分组合成一个更大程序的基础。”这似乎是 Nmap 开发人员正在采用的解释。
无论如何,假设您不需要担心 GPL,您可能想看看 output options对于 Nmap;特别是 -oX
用于 XML 输出,-oG
用于“greppable”输出。如果你需要更多地控制 Nmap 的功能,你应该查看 Nmap Scripting Engine ,Nmap 中的 Lua 脚本引擎,可为您提供各种控制。
关于c++ - 关于如何以编程方式与 nmap 集成的任何想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735001/