Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SOCK_RAW [D7, WinXP]


Страницы:   1 2

Unax ©   (2004-02-14 17:52:00) 

Уважаемые мастера, как получить доступ к сокету SOCK_RAW под учетной записью не администратора.

Код такой

s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

iRead = sendto(s, buf, size, 0, adr, adrlen);

После вызова sendto ошибка 10013, "Сделана попытка доступа к сокету методом, запрещенным правами доступа"

Если я работаю с правами администратора, то функция ошибки не дает.

Всем спасибо.


Unax   (2004-02-15 21:46:00) [1]

Вопрос насчет статьи http://www.delphimaster.ru/articles/icmp.html

Где взять документацию по icmp.dll и вообще есть ли документация на другие библиотеки которые предоставляет микрософтина. Или все это дело в MSDN описано?


Verg   (2004-02-15 12:57:00) [2]


> Unax ©   (15.02.04 12:38) [24]


Нет. Я его попробовал просто так. Прямо их демки и все. Ну да - работает, прикольно.
Нет задач под это дело.


Unax   (2004-02-15 12:38:00) [3]

>> Verg
А нет каких-нить простых примерчиков с использованием WinPCap


Unax   (2004-02-15 12:36:00) [4]

:) А я не знал.


Verg   (2004-02-15 12:27:00) [5]


> Unax ©   (15.02.04 12:25) [21]


Дык :) Это ж их штатный портал.


Unax   (2004-02-15 12:25:00) [6]

Я качал отсюда:
http://winpcap.polito.it/

Там и документация есть.


Verg   (2004-02-15 12:22:00) [7]


> Unax ©   (15.02.04 12:14) [19]
> Была бы она еще в Дельфевом варианте. Мне как-то Дельфи
> ближе чем С.


Что ты имеешь ввиду? Исходники? Че-то я не встречал отважных, пишуших кернел моде драйверов на делфи :)

А всяких портаций интерфейса в сети полно.
Вот, например,
http://www.misalpina.com/ghost3k/delphi.php


Unax   (2004-02-15 12:14:00) [8]

Была бы она еще в Дельфевом варианте. Мне как-то Дельфи ближе чем С.


Verg   (2004-02-15 12:14:00) [9]

Кому интересно, вот модуль:

unit mstcpip;

interface
uses Winsock2;
type
   _tcp_keepalive  = packed record
      onoff : u_long;
      keepalivetime : u_long;
      keepaliveinterval : u_long;
   end;

const
// New WSAIoctl Options
SIO_RCVALL                           = IOC_IN or IOC_VENDOR or 1;
SIO_RCVALL_MCAST                     = IOC_IN or IOC_VENDOR or 2;
SIO_RCVALL_IGMPMCAST                 = IOC_IN or IOC_VENDOR or 3;
SIO_KEEPALIVE_VALS                   = IOC_IN or IOC_VENDOR or 4;
SIO_ABSORB_RTRALERT                  = IOC_IN or IOC_VENDOR or 5;
SIO_UCAST_IF                         = IOC_IN or IOC_VENDOR or 6;
SIO_LIMIT_BROADCASTS                 = IOC_IN or IOC_VENDOR or 7;
SIO_INDEX_BIND                       = IOC_IN or IOC_VENDOR or 8;
SIO_INDEX_MCASTIF                    = IOC_IN or IOC_VENDOR or 9;
SIO_INDEX_ADD_MCAST                  = IOC_IN or IOC_VENDOR or 10;
SIO_INDEX_DEL_MCAST                  = IOC_IN or IOC_VENDOR or 11;

// Values for use with SIO_RCVALL* options
  RCVALL_OFF             = 0;
  RCVALL_ON              = 1;
  RCVALL_SOCKETLEVELONLY = 2;

implementation

end.


Verg   (2004-02-15 11:55:00) [10]

Сниферы еще любят пользоваться библиотекой WinPcap.


Unax   (2004-02-15 11:55:00) [11]

Хотя я не знаю как сделаны эти сниферы, может быть без помощи SOCK_RAW.


Unax   (2004-02-15 11:53:00) [12]

Оказывается те сниферы что у меня есть, работают в качестве службы с учетной записью SYSTEM. Наверное это единственный способ получить доступ к RAW сокетам не зная пароль админа.


Verg   (2004-02-15 11:45:00) [13]


> Verg ©   (15.02.04 11:17) [11]
> Да? Разве в WINSOCK2 от Алекса нет этой константы?


Упс. Точно нет. Значит я эти константы уже сам довставлял да и забыл про это.

Да и вообще-то эти константы должны бить определены (если уж подходить совсем педантично) в модуле mstcpip, а не в winsock2.


Verg   (2004-02-15 11:31:00) [14]


> А вообще может-быть отправка запрещена, а принимать пакеты
> можно.


Нет, любая операция с этим сокетом приведет к WSAEACCES, если нет прав Админа.


Unax   (2004-02-15 11:20:00) [15]

Спасибо. Если бы было в Winsock2 не спрашивал бы.


Verg   (2004-02-15 11:17:00) [16]

Да? Разве в WINSOCK2 от Алекса нет этой константы?
Ну вот, на всякий случай тогда
SIO_RCVALL                           = IOC_IN or IOC_VENDOR or 1;
SIO_RCVALL_MCAST                     = IOC_IN or IOC_VENDOR or 2;
SIO_RCVALL_IGMPMCAST                 = IOC_IN or IOC_VENDOR or 3;
SIO_KEEPALIVE_VALS                   = IOC_IN or IOC_VENDOR or 4;
SIO_ABSORB_RTRALERT                  = IOC_IN or IOC_VENDOR or 5;
SIO_UCAST_IF                         = IOC_IN or IOC_VENDOR or 6;
SIO_LIMIT_BROADCASTS                 = IOC_IN or IOC_VENDOR or 7;
SIO_INDEX_BIND                       = IOC_IN or IOC_VENDOR or 8;
SIO_INDEX_MCASTIF                    = IOC_IN or IOC_VENDOR or 9;
SIO_INDEX_ADD_MCAST                  = IOC_IN or IOC_VENDOR or 10;
SIO_INDEX_DEL_MCAST                  = IOC_IN or IOC_VENDOR or 11;


Unax   (2004-02-15 11:07:00) [17]

>> Verg
Возникает такой вопрос, как работают снифера не под админом. Ведь они же каким-то образом ловят IP-пакеты, а SOCK_RAW этого не позволяет. Ты недавно в форуме приводил код снифера, не получается проверить: SIO_RCVALL undeclared. Чему равна эта константа?
А вообще может-быть отправка запрещена, а принимать пакеты можно.


Verg   (2004-02-15 10:43:00) [18]

Так кто же знал, в свою очередь, что тебя интересует реализация именно ping, а не абстрактный SOCK_RAW в общем случае.


Unax   (2004-02-15 10:24:00) [19]

А я знал что ли. Я уже сделал с помощью SOCK_RAW, но работает только в 9х и под администратором в NT.
Теперь буду знать, спасибо.


Verg   (2004-02-15 10:03:00) [20]

В смысле с этого (ping/icmp) и надо было начинать....


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо