На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
  
> "Копирование входящего трафика по определённому порту"
    Добрый день. Уже давно изучаю тему перехватов API, но тут наткнулся на возможность получать данные через сырые сокеты. Так вот, у меня получилось написать получение отправляемых пакетов, но вот те пакеты, которые приходят из сети, почему-то не ловятся.

    Делаю так:
    ExpandedWrap disabled
      procedure ListenThread;
      var
      ---
      begin
        WSAStartup(MAKEWORD(2,2), WSAData);
        s := socket(AF_INET, SOCK_RAW, IPPROTO_IP);
        GetHostName(PAnsiChar(name), SizeOf(name));
        phe := GetHostByName(PAnsiChar(name));
        ZeroMemory(@sa, sizeof(sa));
        sa.sin_family := AF_INET;
        sa.sin_addr.s_addr := cardinal(pointer(phe^.h_addr_list^)^);
        bind(s, sa, SizeOf(TSockaddr));
        ioctlSocket(s, SIO_RCVALL, flag);
        repeat
          count := recv(s, Buffer, sizeof(Buffer), 0);
          if (count >= sizeof(TIPHeader)) then begin
            hdr := @Buffer;
            sa1.s_addr := hdr.iph_src;
            sa2.s_addr := hdr.iph_dest;
            Pac := ByteToHexStr(@Buffer[sizeof(TIPHeader)],count); // переводим в строку
          end;
        until false;
      end;


    Ни у кого код не завалялся, а то я даже не знаю, почему может не ловиться
      Версия винды какая? RAW-сокеты имеют много ограничений по безопасности, в зависимости от версии.
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0.0527 ]   [ 15 queries used ]   [ Generated: 22.09.26, 13:06 GMT ]