Любые идеи о том, как интегрировать с Nmap программно? - PullRequest
1 голос
/ 09 апреля 2009

Я только начинаю изучать, как интегрировать nmap, продукт для обеспечения безопасности с открытым исходным кодом, в некоторый код на С ++. Если бы кто-нибудь попробовал это, и у него есть идеи по поводу наилучшего подхода, я, безусловно, был бы признателен за это.

Спасибо за ответы. В частности, я хотел бы запустить сканирование портов (ipv6). Я определенно предпочел бы не-gpl решения, такие как командная строка или интерфейс сокетов. Тем не менее, я также хочу найти самое быстрое решение (я), поскольку мы сталкиваемся с некоторыми жесткими временными рамками, и мы можем при необходимости выполнить обратную загрузку реализации решения без gpl.

Ответы [ 4 ]

6 голосов
/ 10 апреля 2009

(примечание: я не юрист, и ничего из этого не следует воспринимать как юридическую консультацию)

Вы, вероятно, должны заметить, что Nmap рассматривает продукт, который анализирует его вывод, как производную работу, в соответствии с главой о лицензировании в руководстве, и, таким образом, подпадает под обязательства по лицензированию GPL. GPLv2 не определяет, что является производным произведением, вместо того, чтобы разрешить это решать судам и в соответствии с определениями в законе об авторском праве. Обычная интерпретация состоит в том, что любая форма связи, кроме связи с системными библиотеками, включенными в операционную систему, делает связанную работу производной работой, в то время как отдельный процесс, который взаимодействует по каналам или сети, не обязательно является производной работой, хотя, как упоминалось в FAQ по GPL , «если семантика коммуникации достаточно интимна и обменивается сложными внутренними структурами данных, это тоже может послужить основой для рассмотрения двух частей как объединенной в большую программу». Похоже, это интерпретация, которую принимают разработчики Nmap.

В любом случае, предполагая, что вам не нужно беспокоиться о GPL, вы, вероятно, захотите посмотреть опции вывода для Nmap; в частности, -oX для вывода XML и -oG для вывода "greppable". Если вам нужно больше контроля над тем, что делает Nmap, вам следует обратиться к Nmap Scripting Engine , скриптовому движку Lua в Nmap, который дает вам все виды контроля.

1 голос
/ 10 апреля 2009

Вы всегда можете прочитать это в трубе. По традиции это приемлемо, даже если не GPL обращается к GPL.

1 голос
/ 09 апреля 2009

Вы хотите использовать определенные функции? Я нашел простой способ использования nmap на других языках - заставить его выплевывать xml с помощью ключа -oX. Существует DTD (и множество способов преобразовать его в xsd для вашего любимого инструмента привязки), который вы можете использовать для потребления данных.

Учитывая, что вы пишете на C ++, хотя, вероятно, было бы достаточно просто ссылаться на него напрямую, если вам нужно.

0 голосов
/ 09 апреля 2009

«Интеграция» на самом деле не говорит достаточно. Какие вещи вы хотите сделать? В зависимости от уровня «интеграции» может быть достаточно запустить nmap как отдельный процесс и записать его результаты. Преимущество в том, что вы можете обновить версию nmap, не перестраивая приложение. Если вам требуется более тесная связь, то это зависит от того, какая функциональность вам нужна, и от «niz-библиотек» nmap, но имейте в виду, что это код GPL, и для такого рода интеграции потребуется распространение исходного кода вашего приложения.

...