|
ru.nethack- RU.NETHACK ------------------------------------------------------------------- From : Andrey Sokolov 2:5020/400 14 Oct 2004 13:15:18 To : Cybervlad Subject : Re: Ettercap [WINDOWS - Версия] --------------------------------------------------------------------------------
Wed Oct 06 2004 16:23, Cybervlad wrote to Alexey V. Vissarionov:
C> А че мне было задумываться? Пихал в сокет столько, сколько мне надо, а
C> распиловкой на пакеты пусть IP-стек занимается...
C> Hо мы-то, вообще говоря, про raw-socket, у него есть одна особенность ;)
Hу, Слав, твоими устами бы да мёд пить! ;)
К сожалению, в Windows такое не работает. В тех Windows, которые поддерживают
RAW Sockets (с 2000 до XP SP1). По одному пакету за один системный вызов. Да,
ты можешь захерачить 50 килобайт, и он распилит тебе это на фрагментированные
IP-дейтаграммы. Hо вот два маленьких пакета за один сисколл ты не отправишь.
Кроме того, есть такая тема: ты можешь открывать
socket(AF_INET,SOCK_RAW,whatever_you_want), и отправлять любые IP-пакеты с
любым значением поля protocol в заголовке IP. Однако, если ты сделаешь
socket(AF_INET,SOCK_RAW,IPPROTO_TCP), то ты ничего отправлять не сможешь.
WSAGetLastError() скажет тебе, что у тебя член коротковат ;( И получать
IP/TCP-пакеты на сырой сокет, будь то IPPROTO_TCP, будь то whatever_you_want,
ты тоже не сможешь.
Потом, в SP2 замечательная корпорация MicroSoft (R) решила запретить сырые
сокеты. Я не знаю, зачем они это сделали и почему они это сделали ИМЕHHО ТАК,
но они это сделали. Что ж, в MicroSoft'е (R) наверняка работают очень умные
люди, полагаю, умнее нас с тобой. И, коль скоро они не стали рассказывать
народу о причинах такого поступка, значит это не нашего ума дело. Значит, так
надо.
Короче, если ты захочешь открыть сырой сокет, со вторым парамером SOCK_RAW и с
любым третьим параметром, такой сокет тебе откроется, не вопрос. Однако, при
попытке сделать sendto или recvfrom, ядро скажет тебе, что ты мудак. Hу
конечно же, оно сделает это более политкорректно: мол, "твой системный вызов
прерван".
Решается проблема элементарно: с командной строки пишем "net stop
sharedaccess" и всё работает, ничего не прерывается. Hу или выполняем
соответствующий сисколл в рантайме. Служба опускается долго, поэтому, для
пущей надёжности, засыпаем WaitForSingleEvent на соответствующем событии. Hу,
или можно пропатчить tcpip.sys, тоже делается элементарно, и уже по сети
разгуливают такие патчи ;)
--- ifmail v.2.15dev5.3
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.nethack/16679ab9ef14a.html, оценка из 5, голосов 10
|