Форум: "Сети";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизSOCK_RAW Найти похожие ветки
← →
Unax © (2004-02-14 17:52) [0]Уважаемые мастера, как получить доступ к сокету SOCK_RAW под учетной записью не администратора.
Код такой
s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
iRead = sendto(s, buf, size, 0, adr, adrlen);
После вызова sendto ошибка 10013, "Сделана попытка доступа к сокету методом, запрещенным правами доступа"
Если я работаю с правами администратора, то функция ошибки не дает.
Всем спасибо.
← →
Verg © (2004-02-14 19:56) [1]
> s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
Странно, тебе уже здесь должны были отказать....
В смысле s = INVALID_SOCKET
← →
Unax © (2004-02-14 22:07) [2]Сокет даётся валидный, ошибка именно при отсылке.
← →
Verg © (2004-02-14 22:43) [3]Ну что ж...
Raw socket support requires administrative privileges. Users running Winsock applications that make use of raw sockets must have administrative privileges on the computer, otherwise raw socket calls will fail with an error code of WSAEACCES.
(C) MSDN
Значит тебе куда-нибудь на hackzone....
← →
Unax © (2004-02-15 09:39) [4]Тогда интересно как работает стандартный ping.exe, может есть какой другой способ отправить ICMP сообщение.
PS. Indy ICMP тоже выдает ошибку при пинге accsess denied.
← →
Verg © (2004-02-15 10:00) [5]http://www.delphimaster.ru/articles/icmp.html
← →
Verg © (2004-02-15 10:01) [6]http://www.delphimaster.ru/articles/icmp.html
← →
Verg © (2004-02-15 10:03) [7]В смысле с этого (ping/icmp) и надо было начинать....
← →
Unax © (2004-02-15 10:24) [8]А я знал что ли. Я уже сделал с помощью SOCK_RAW, но работает только в 9х и под администратором в NT.
Теперь буду знать, спасибо.
← →
Verg © (2004-02-15 10:43) [9]Так кто же знал, в свою очередь, что тебя интересует реализация именно ping, а не абстрактный SOCK_RAW в общем случае.
← →
Unax © (2004-02-15 11:07) [10]>> Verg
Возникает такой вопрос, как работают снифера не под админом. Ведь они же каким-то образом ловят IP-пакеты, а SOCK_RAW этого не позволяет. Ты недавно в форуме приводил код снифера, не получается проверить: SIO_RCVALL undeclared. Чему равна эта константа?
А вообще может-быть отправка запрещена, а принимать пакеты можно.
← →
Verg © (2004-02-15 11:17) [11]Да? Разве в 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:20) [12]Спасибо. Если бы было в Winsock2 не спрашивал бы.
← →
Verg © (2004-02-15 11:31) [13]
> А вообще может-быть отправка запрещена, а принимать пакеты
> можно.
Нет, любая операция с этим сокетом приведет к WSAEACCES, если нет прав Админа.
← →
Verg © (2004-02-15 11:45) [14]
> Verg © (15.02.04 11:17) [11]
> Да? Разве в WINSOCK2 от Алекса нет этой константы?
Упс. Точно нет. Значит я эти константы уже сам довставлял да и забыл про это.
Да и вообще-то эти константы должны бить определены (если уж подходить совсем педантично) в модуле mstcpip, а не в winsock2.
← →
Unax © (2004-02-15 11:53) [15]Оказывается те сниферы что у меня есть, работают в качестве службы с учетной записью SYSTEM. Наверное это единственный способ получить доступ к RAW сокетам не зная пароль админа.
← →
Unax © (2004-02-15 11:55) [16]Хотя я не знаю как сделаны эти сниферы, может быть без помощи SOCK_RAW.
← →
Verg © (2004-02-15 11:55) [17]Сниферы еще любят пользоваться библиотекой WinPcap.
← →
Verg © (2004-02-15 12:14) [18]Кому интересно, вот модуль:
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.
← →
Unax © (2004-02-15 12:14) [19]Была бы она еще в Дельфевом варианте. Мне как-то Дельфи ближе чем С.
← →
Verg © (2004-02-15 12:22) [20]
> Unax © (15.02.04 12:14) [19]
> Была бы она еще в Дельфевом варианте. Мне как-то Дельфи
> ближе чем С.
Что ты имеешь ввиду? Исходники? Че-то я не встречал отважных, пишуших кернел моде драйверов на делфи :)
А всяких портаций интерфейса в сети полно.
Вот, например,
http://www.misalpina.com/ghost3k/delphi.php
← →
Unax © (2004-02-15 12:25) [21]Я качал отсюда:
http://winpcap.polito.it/
Там и документация есть.
← →
Verg © (2004-02-15 12:27) [22]
> Unax © (15.02.04 12:25) [21]
Дык :) Это ж их штатный портал.
← →
Unax © (2004-02-15 12:36) [23]:) А я не знал.
← →
Unax © (2004-02-15 12:38) [24]>> Verg
А нет каких-нить простых примерчиков с использованием WinPCap
← →
Verg © (2004-02-15 12:57) [25]
> Unax © (15.02.04 12:38) [24]
Нет. Я его попробовал просто так. Прямо их демки и все. Ну да - работает, прикольно.
Нет задач под это дело.
← →
Unax © (2004-02-15 21:46) [26]Вопрос насчет статьи http://www.delphimaster.ru/articles/icmp.html
Где взять документацию по icmp.dll и вообще есть ли документация на другие библиотеки которые предоставляет микрософтина. Или все это дело в MSDN описано?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.034 c