Использование сырых сокетов с С#
Я хочу написать сканер портов в С#, и я не могу использовать SocketType.Raw, поскольку сырые сокеты были выведены из настольных версий окон. Я не могу использовать SharpPcap для какой-либо другой оболочки для Winpcap, поскольку я использую PPPoE для подключения к Интернету, а Winpcap не поддерживает PPP-устройства.
Мне нужно использовать библиотеку, которая реализует сырые сокеты и не полагается на winpcap.
Любые идеи? В основном мне нужно отправить SYN, получить SYN/ACK или RST, но не отправлять ACK обратно.
изменить:
Для людей, которые не считают, что RAW-сокеты исчезли из настольных версий Windows, см. здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs.85).aspx
В Windows 7, Windows Vista, Windows XP с пакетом обновления 2 (SP2) и Windows XP с пакетом обновления 3 (SP3) возможность отправки трафика по сырым сокетам была ограничена несколькими способами:
- Данные TCP не могут быть отправлены через сырые сокеты.
- UDP-датаграммы с недопустимым адресом источника не могут быть отправлены через сырые сокеты. IP-адрес источника для любой исходящей UDP-дейтаграммы должен существовать в сетевом интерфейсе или датаграмма удаляется. Это изменение было сделано, чтобы ограничить способность вредоносного кода создавать распределенные атак типа "отказ в обслуживании" и ограничивать возможность отправки поддельных пакетов (TCP/IP-пакетов с поддельным IP-адресом источника).
- Вызов функции
bind
с сырым сокетом для протокола IPPROTO_TCP
запрещен.
Примечание Функция bind
с сырым сокетом разрешена для других протоколов (IPPROTO_IP
, IPPROTO_UDP
или IPPROTO_SCTP
, например).
Ответы
Ответ 1
Обратите внимание на то, как это сделал nmap, и теперь я полагаю, что ваш вариант будет состоять в том, чтобы перейти на более низкий уровень в кадре ethernet.
"Nmap поддерживает только Ethernet-интерфейсы (включая большинство беспроводных карт 802.11 и многие VPN-клиенты) для сканирования необработанных пакетов. Если вы не используете параметры -sT -Pn, подключения RAS (такие как коммутируемые PPP-соединения) и некоторые VPN-клиенты не поддерживаются Эта поддержка была удалена, когда Microsoft удалила необработанную поддержку сокетов TCP/IP в Windows XP с пакетом обновления 2. Теперь Nmap должен отправлять кадры Ethernet более низкого уровня."
Итак - это приводит нас к:
http://www.codeproject.com/KB/IP/sendrawpacket.aspx
Ответ 2
Точно так же:
http://www.winsocketdotnetworkprogramming.com/clientserversocketnetworkcommunication8h.html
Кроме того, в какой момент он был удален из Windows? На прошлой неделе я сделал чат-клиент для друга; также http://msdn.microsoft.com/en-us/library/system.net.sockets.sockettype.aspx, по-прежнему указывает, что он активен.
Ответ 3
Попробуйте запустить Visual Studio как Adminitrator
Щелкните правой кнопкой мыши --- > запустите как администратор
Затем выполните программы с гнездами raW..