Реализация всех методов сканирования портов на C# / Создание необработанных низкоуровневых пакетов на C#

Я пытаюсь написать сканер портов на С#. Я провел небольшое исследование методов сканирования портов.

Если вам интересно, вот ссылки, которые я нашел полезными:

  1. http://www.cs.wright.edu/~pmateti/InternetSecurity/Lectures/Probing/index.html ^Презентация PPT^
  2. http://www.auditmypc.com/freescan/readingroom/port_scanning.asp
  3. (старый) NMAP — искусство сканирования портов: http://nmap.org/nmap_doc.html
  4. Методы сканирования портов: http://nmap.org/book/man-port-scanning-techniques.html
  5. Пример интерактивного сканирования портов: http://www.osischool.com/concept/communication/port-scanning

Переходя к моему вопросу. Вот методы сканирования портов:

  1. TCP-подключение () Сканирование
  2. Сканирование TCP SYN
  3. TCP FIN-сканирование
  4. XMAS-сканирование TCP
  5. НУЛЕВОЕ сканирование TCP
  6. Сканирование окна TCP
  7. UDP-сканирование

Но я реализовал только TCP Connect() Scan (показано здесь). Но это очень медленно (для проверки каждого порта требуется> 0,5 секунды). Для реализации остальных методов мне нужен доступ на уровне пакетов. Мне нужно создать необработанные пакеты. Возможно ли это сделать на С#? Если да, то как это сделать?


person claws    schedule 04.01.2010    source источник
comment
Я был бы заинтригован, чтобы увидеть, как это выходит, если источник должен стать доступным.   -  person Nathan Taylor    schedule 07.01.2010


Ответы (2)


Это казалось хорошей оболочкой для замечательной библиотеки WinPCap, когда я использовал ее давным-давно:

http://sourceforge.net/projects/sharppcap/

Я уверен, что сейчас лучше.

person Ioan    schedule 04.01.2010
comment
Сейчас намного лучше. API, наконец, достиг зрелости, поэтому его методы в значительной степени высечены в камне, а синтаксический анализ был перенесен из SharpPcap в проект Packet.Net. Теперь использовать его гораздо проще, чем раньше. - person Evan Plaice; 10.11.2010

Вам понадобится драйвер (NDIS) или что-то подобное для доступа к необработанным пакетам. Вам также может понадобиться использовать Native Win32 API и использовать P/Invoke.

Вот что может помочь: http://www.codeproject.com/KB/IP/sendrawpacket.aspx

person Tony The Lion    schedule 04.01.2010
comment
Наиболее часто используемый драйвер для пакетного доступа нижнего уровня поставляется вместе с WinPcap. - person Evan Plaice; 10.11.2010