我刚刚开始研究如何将开源安全产品nmap集成到某些c ++代码中.如果有人试过这个,并对最佳方法有一些想法,我当然会感激.
谢谢你的回复.具体来说,我想运行端口扫描(ipv6).我肯定更喜欢非gpl解决方案,如命令行或套接字接口.但是,我也是这一点,我正在寻找最快的解决方案,因为我们正在面对一些严格的时间表,我们可以在必要时重新实现非gpl解决方案.
(注意:我不是律师,不应将此作为法律建议)
您可能应该注意到,根据手册中的许可章节,Nmap会将产品解析为其派生作品,因此属于GPL许可义务.在GPLv2许可没有定义一个派生的工作是什么,而不是让那达向法院提起诉讼,并根据著作权法的定义.通常的解释是,除了链接到操作系统中包含的系统库之外,任何形式的链接都使链接的工作成为派生的工作,而通过管道或网络进行通信的单独进程不一定是派生的工作,尽管如上所述的GPL FAQ,"如果通信的语义是足够亲密,交换复杂的内部数据结构,即得可能是一个基础考虑两个部分合并成一个更大的程序".这似乎是Nmap开发人员正在采取的解释.
无论如何,假设您不需要担心GPL,您可能想要查看Nmap 的输出选项 ; 特别是,-oX
对于XML输出和-oG
"greppable"输出.如果您需要更多地控制Nmap的功能,您应该查看Nmap脚本引擎,它是Nmap中的一个Lua脚本引擎,可以为您提供各种控制.