RAW Розетки - C # - Установить флаги - PullRequest
5 голосов
/ 16 сентября 2011

Я пытаюсь написать приложение, которое отправляет необработанные сокеты в C #. У меня нет большого опыта в C / C ++, поэтому я бы предпочел C #. Я нашел несколько вариантов для необработанных сокетов в C #, но ни один из них не позволяет мне устанавливать такие флаги, как ACK, SYN, PSH, FIN и т. Д. Любые идеи, если это можно сделать в C #?

Любые советы приветствуются.

Обновление: Я пытаюсь написать инструмент для тестирования брандмауэра, я хотел бы отправлять пакеты из состояния, пакеты с разными флагами. Я использую Win 2008, и, насколько я читаю, я могу делать необработанные сокеты на нем. Я прибегну к C / C ++, если это необходимо, и пока все выглядит так.

Дальнейшее обновление: SharpPcap выглядит хорошо, кажется, v4.0 не имеет источника, только 3,5 делает. Я попытаюсь разобраться с этим, поскольку документация также не завершена. Кто-нибудь использовал это раньше?

Окончательное редактирование: SharpPcap выглядит великолепно! Это делает то, что мне нужно! Я опубликую последующий вопрос, так как я не гуру .NET, он хорошо захватывает, я просто не могу отправить пакет из части делегата захвата.

Спасибо всем!

Ответы [ 3 ]

3 голосов
/ 16 сентября 2011

Выезд SharpPcap .

Согласно описанию:

SharpPcap - это кроссплатформенная инфраструктура захвата пакетов для среды .NET, основанная на известных библиотеках pcap / WinPcap. Он предоставляет API для захвата, внедрения, анализа и построения пакетов с использованием любого языка .NET, например C # и VB.NET.

Он внутренне использует драйвер WinPcap, поэтому он позволяет создавать необработанные пакеты с собственными заголовками IP / TCP.

1 голос
/ 16 сентября 2011

Краткий ответ, на настольных версиях Windows вы не можете.Из Википедии

Когда Microsoft выпустила Windows XP в 2001 году с поддержкой необработанных сокетов, реализованной в интерфейсе Winsock, СМИ критиковали Microsoft, утверждая, что необработанные сокеты используются только для хакеров.Атака сброса TCP.Через три года после выпуска Windows XP Microsoft молча ограничила поддержку необработанных сокетов Winsock в несъемном исправлении и не предложила никакой дальнейшей поддержки или обходных путей для приложений, которые их использовали.

0 голосов
/ 16 сентября 2011

Если вы хотите перейти на этот уровень, вы можете создать Socket с SocketType.Raw и ProtocolType.IP.Тем не менее, я считаю, что вам придется вручную создавать пакеты, которые представляют ACK, SYN и т. Д. Таким образом, вам придется прочитать немного документов RFC.:)

Я не смог найти в Интернете ресурс о ваших конкретных потребностях, но, вероятно, стоило бы прочитать, как реализован этот C # сетевой анализатор .По крайней мере, это даст вам некоторое представление о том, как управлять необработанными сокетами на этом уровне.

РЕДАКТИРОВАТЬ: Как отметил Мистер Мэн, это невозможно в настольных версиях Windows.Однако это должно работать в версиях сервера.Вот официальное заявление от Microsoft :

Ограничения для необработанных сокетов

В Windows 7, Windows Vista, Windows XP с пакетом обновления 2 (SP2) иВ Windows XP с пакетом обновления 3 (SP3) возможность отправки трафика по необработанным сокетам была ограничена несколькими способами:

  • Данные TCP не могут отправляться по необработанным сокетам.
  • UDPдейтаграммы с неверным адресом источника не могут быть отправлены через необработанные сокеты.IP-адрес источника для любой исходящей дейтаграммы UDP должен существовать в сетевом интерфейсе, иначе датаграмма будет отброшена.Это изменение было сделано, чтобы ограничить способность вредоносного кода создавать распределенные атаки типа «отказ в обслуживании» и ограничивать возможность отправки поддельных пакетов (пакетов TCP / IP с поддельным IP-адресом источника).
  • вызовфункция связывания с необработанным сокетом для протокола IPPROTO_TCP недопустима.

Примечание Функция связывания с необработанным сокетом разрешена для других протоколов (IPPROTO_IP, IPPROTO_UDP или IPPROTO_SCTP, например).

Указанные выше ограничения не применяются к Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 или к версиям операционной системы, предшествующим Windows XP с пакетом обновления 2 (SP2).

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