Воскресенье, 15.06.2025, 12:21
 
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
raw-sockets в WinNT
AndorДата: Четверг, 12.03.2009, 09:48 | Сообщение # 1
Сержант
Группа: Друзья
Сообщений: 33
Репутация: 3
Статус: Offline
вопрос к многоуважаемому DXT, реально ли организавать обработку сырых сокетов в NT ручками без компонентов NTRS

no comments
 
DxTДата: Четверг, 12.03.2009, 10:22 | Сообщение # 2
Генерал-полковник
Группа: Администраторы
Сообщений: 70
Репутация: 6
Статус: Offline
Реально! Вот сцылко на пример http://www.delphisources.ru/files....er.zip. Там лежит сниффер (разбирает пакеты до уровня IP).
А вот кусок кода из примера, открывающий RAW-сокет
Code

// Инициализация слушающего сокета
function TSnifferThread.InitSocket: Boolean;
var
   PromiscuousMode: Integer;
begin
   // инициализируем WinSock
   Result := WSAStartup(WSA_VER, WSA) = NOERROR;
   if not Result then
   begin
     LogData := 'Ошибка: ' + SysErrorMessage(WSAGetLastError);
     Synchronize(ShowPacket);
     Exit;
   end;
   // создаем сокет
   hSocket := socket(AF_INET, SOCK_RAW, IPPROTO_IP);
   if hSocket = INVALID_SOCKET then
   begin
     DeInitSocket(WSAGetLastError);
     Exit;
   end;
   FillChar(Addr_in, SizeOf(sockaddr_in), 0);
   Addr_in.sin_family:= AF_INET;
   // указываем за каким интерфейсом будем следить
   Addr_in.sin_addr.s_addr := inet_addr(PChar(Host));
   // связываем сокет с локальным адресом
   if bind(hSocket, Addr_in, SizeOf(sockaddr_in)) <> 0 then
   begin
     DeInitSocket(WSAGetLastError);
     Exit;
   end;
   // Переключаем интерфейс на прием всех пакетов проходящих через интерфейс - promiscuous mode.
   PromiscuousMode := 1;
   if ioctlsocket(hSocket, SIO_RCVALL, PromiscuousMode) <> 0 then
   begin
     DeInitSocket(WSAGetLastError);
     Exit;
   end;
   Result := True;
end;


В одном метре 1024 километра
 
DxTДата: Вторник, 17.03.2009, 00:46 | Сообщение # 3
Генерал-полковник
Группа: Администраторы
Сообщений: 70
Репутация: 6
Статус: Offline
Помогло??? Так и не отписал)

В одном метре 1024 километра
 
  • Страница 1 из 1
  • 1
Поиск:

Хостинг от uCoz