Сложность разработки программы сканирования FIN - PullRequest
0 голосов
/ 04 декабря 2009

Я хочу реализовать программу на Linux C для выполнения следующей задачи: она использует сканирование FIN для сканирования всех открытых портов хоста.

Вот краткое описание для сканирования FIN (пропустите, если вы уже знаете это): Википедия: FIN сканирование

При сканировании FIN открытый порт не будет отвечать ни в какой форме, а закрытый порт будет отправлять обратно пакет RST. Знаете, у каждого компьютера есть 65536 возможных портов. Я не нашел некоторый исходный код, который может дать мне несколько указаний.

И моя идея, вроде низкой эффективности, такова: основная программа итеративно отправляет пакет FIN на каждый порт, а поток отвечает за получение обратной связи (пакет RST). Этот поток работает только в течение определенного периода времени и после тайм-аута завершается. После этого основная программа проверит и определит, какие порты еще не были RST.

Я думаю, что более серьезная проблема этой схемы в том, что она недостаточно надежна, поскольку время ожидания трудно определить. Кто-нибудь может предложить лучшую схему, пожалуйста?

Ответы [ 2 ]

1 голос
/ 04 декабря 2009

nmap уже делает это .. Но я не думаю, что вы действительно можете обойтись реализацией на основе тайм-аута. Пару секунд должно хватить, но установите разумное значение по умолчанию, а затем сделайте его настраиваемым. Это то, что я сделал для сканера ARP, который я написал однажды. Я не использовал потоки, но вместо этого использовал неблокирующий pcap, но многопоточное решение работало бы так же хорошо.

1 голос
/ 04 декабря 2009

Может быть nmap код может помочь вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...