Я пытаюсь записать сканер портов в C#. Я провел некоторое исследование на методах сканирования портов.
Если Вам интересно, это ссылки, которые я нашел полезным:
- ^PPT Presentation^ http://www.cs.wright.edu/~pmateti/InternetSecurity/Lectures/Probing/index.html
- http://www.auditmypc.com/freescan/readingroom/port_scanning.asp
- (старый) NMAP - Искусство сканирования портов: http://nmap.org/nmap_doc.html
- Методы сканирования портов: http://nmap.org/book/man-port-scanning-techniques.html
- Сканирование портов интерактивный пример: http://www.osischool.com/concept/communication/port-scanning
Прибытие в мой вопрос. Это методы сканирования портов:
- Подключение TCP () сканирование
- TCP сканирование SYN
- TCP сканирование FIN
- РОЖДЕСТВЕНСКОЕ сканирование TCP
- Сканирование ПУСТОГО УКАЗАТЕЛЯ TCP
- Сканирование окна TCP
- Сканирование UDP
Но я реализовал только TCP Connect() Scan
(показанный здесь). Но это мертво медленный (берущий> 0,5 секунды для тестирования каждого порта). Для реализации отдыха методов мне нужен доступ пакетного уровня. Я должен создать необработанные пакеты. Действительно ли возможно сделать это в C#? Раз так, как сделать это?
Это казалось хорошей оберткой вокруг великой библиотеки WinPCap, когда я использовал ее давным-давно:
http://sourceforge.net/projects/sharppcap/
Я уверен, что теперь она лучше.
Для доступа к необработанным пакетам вам понадобится драйвер (NDIS) или что-то в этом роде. Вам также может понадобиться использовать Native Win32 API и P/Invoke.
Вот кое-что, что поможет: http://www.codeproject.com/KB/IP/sendrawpacket.aspx