Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват данных по локальной сети ? Как прочитать содержимое пакета ? 
:(
    Опции темы
DarkDS
Дата 14.5.2003, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: нет
Всего: 16



Цитата(Step @ 14.5.2003, 16:52)
а как указать сокет, что бы перехватывало все пакеты

То есть? smile.gif
PM MAIL   Вверх
Step
Дата 14.5.2003, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



recv( s, Buffer, sizeof(Buffer), 0 );


первый параметр это переменная типа сокет


какой сокет нужно указать что бы перехватывались все покеты которые приходят


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
DarkDS
Дата 14.5.2003, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: нет
Всего: 16



Ниже приведенный код чесно стырен smile.gif Но он описывает работу сниффера smile.gif
Код

#include <conio.h>
#include <winsock2.h>

#define MAX_PACKET_SIZE    0x10000
// Буфер для приёма данных
static BYTE Buffer[MAX_PACKET_SIZE]; // 64 Kb

void main()
{
 WSADATA     wsadata;   // Инициализация WinSock.
 SOCKET      s;         // Cлущающий сокет.
 char        name[128]; // Имя хоста (компьютера).
 HOSTENT*    phe;       // Информация о хосте.
 SOCKADDR_IN sa;        // Адрес хоста
 long        flag = 1;  // Флаг PROMISC Вкл/выкл.

 // инициализация
 WSAStartup(MAKEWORD(2,2), &wsadata);
 s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
 gethostname(name, sizeof(name));
 phe = gethostbyname( name );
 ZeroMemory( &sa, sizeof(sa) );
 sa.sin_family = AF_INET;
 sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
 bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));
 
 // Включение promiscuous mode.
 ioctlsocket(s, SIO_RCVALL, &flag);

 // Приём IP-пакетов.
 while( !_kbhit() )
 {
   int count;
   count = recv( s, Buffer, sizeof(Buffer), 0 );
   // обработка IP-пакета
   if( count >= sizeof(IPHeader) )
   {
     IPHeader* hdr = (IPHeader *)Buffer;
     //что-то делаем с пакетом...
   }
 }
 // Конец работы.
 closesocket( s );
 WSACleanup();
}

PM MAIL   Вверх
DarkDS
Дата 14.5.2003, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: нет
Всего: 16



http://www.komodia.com/tools.htm
Тут есть уже работающий сниффер smile.gif
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0412 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.