Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
18 / 18 / 3
Регистрация: 28.06.2010
Сообщений: 77

Mac адрес из приходящего пакета в сети

28.10.2010, 05:59. Показов 2741. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Ситуация состоит в том, чтоб отлавливать широковещательные пакеты и анализировать загруженность сети.Что то на подобии снифера. Так вот, каким образом можно получить mac адрес из пришедшего пакета. Читал что первые 14 байт это так называемый frame. В нем и хранятся mac адреса источника и получателя. Как мне этот фрейм распарсить? Мне как раз нужен mac адрес получателя по широковещалке это - ff:ff:ff:ff:ff:ff по нему и фильтр будет в программе. Наткнулся на такую структуру
C++
1
2
3
4
5
typedef struct MAC{
    BYTE dst[6];  //mac адрес получателя
    BYTE src[6];  //mac адрес источника
    WORD type;  // тип, версия IP в моем случает версия 4 0x0800
} MAC;
для определения IP адресов и протоколов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
typedef struct IPHeader {
  UCHAR   iph_verlen;   // версия и длина заголовка
  UCHAR   iph_tos;      // тип сервиса
  USHORT  iph_length;   // длина всего пакета
  USHORT  iph_id;       // Идентификация
  USHORT  iph_offset;   // флаги и смещения
  UCHAR   iph_ttl;      // время жизни пакета
  UCHAR   iph_protocol; // протокол
  USHORT  iph_xsum;     // контрольная сумма
  ULONG   iph_src;      // IP-адрес отправителя
  ULONG   iph_dest;     // IP-адрес назначения
} IPHeader;
используя:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
nLen=recvfrom(sock,buf,j,0,(struct sockaddr*)&from,&(nLength));
if (nLen>0)
{
MAC * mac = (MAC*)buf;
//... не правильно определяет мак адреса
Mac_src = AnsiString(IntToHex(mac->src[0],2)+":"+
                                          IntToHex(mac->src[1],2)+":"+
                                          IntToHex(mac->src[2],2)+":"+
                                          IntToHex(mac->src[3],2)+":"+
                                          IntToHex(mac->src[4],2)+":"+
                                          IntToHex(mac->src[5],2));
Mac_dst = AnsiString(IntToHex(mac->dst[0],2)+":"+
                                          IntToHex(mac->dst[1],2)+":"+
                                          IntToHex(mac->dst[2],2)+":"+
                                          IntToHex(mac->dst[3],2)+":"+
                                          IntToHex(mac->dst[4],2)+":"+
                                          IntToHex(mac->dst[5],2));
 
//...мак адреса не те какие в реале... 
IPHeader* hdr = (IPHeader *)buf;
//...все норм определяется как надо и ип и протокол 
 
}
Как быть ? помогите?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2010, 05:59
Ответы с готовыми решениями:

Недопустимый MAC-адрес. MAC-адрес не может быть адресом рассылки
Привет! Потребовалось выполнить привязку IP-адреса к MAC-адресу двух устройств. С первым устройством все получилось удачно. При...

Получить MAC адрес компьютера в локальной сети по его имени
Срочно требуется помощь в данном вопросе, ибо машин много и подходить к каждой с листочком лень))

Как в локальной сети построенной PT передать с компа на комп сообщение на mac-адрес?
Друзья! Ну то есть всё просто, есть коммутатор и два компа к нему подключенные в Cisco Packet Tracker. И, коль скоро они в одной локальной...

4
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
28.10.2010, 14:50
Ситуация состоит в том, чтоб отлавливать широковещательные пакеты и анализировать загруженность сети.
Зачем ?
Почему ты решил что в сети именно broadcast-ы создают основную загрузку ?
0
18 / 18 / 3
Регистрация: 28.06.2010
Сообщений: 77
29.10.2010, 04:18  [ТС]
а если так называемая петля образовалась? как мне ее найти?? + сопоставлять, вести БД, IP адресов в своей сети с маками которые были при первой регистрации.. Тем самым выявлять кто подменяет IP адреса. Поверь даже в нормальной фирме есть "олени".
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
29.10.2010, 17:03
Значит сразу разделим

1) образовалась петля
Вопрос - а что в фирме кто-то кроме админов имеет право ставить switch-и и другое оборудование ?
Остальным - по голове и больно

2) ... вести базу IP-адресов ...
разумеется
неплохо знать какие компы у тебя есть

3) подмена IP-адресов
чтобы заметить подмену тебе в любом случае нужно какие у тебя IP-ники и MAC-и
0
18 / 18 / 3
Регистрация: 28.06.2010
Сообщений: 77
01.11.2010, 04:27  [ТС]
Цитата Сообщение от odip Посмотреть сообщение
Значит сразу разделим

1) образовалась петля
Вопрос - а что в фирме кто-то кроме админов имеет право ставить switch-и и другое оборудование ?
Остальным - по голове и больно

2) ... вести базу IP-адресов ...
разумеется
неплохо знать какие компы у тебя есть

3) подмена IP-адресов
чтобы заметить подмену тебе в любом случае нужно какие у тебя IP-ники и MAC-и
1)ну есть люди которые тянут кабеля не только сетевые но и телефонные, + кто то из сетивиков не тот провод может по ошибке сунуть в свич.
2)3) да есть уже такая база данных(отдельно)
Ты мне лучше скажи как получить этот несчастный mac адрес из пакета...
я делал через SendARP, но сказали, что это не прокатит.. что надо чтоб программа не чего не посылала, а находилась в тени..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2010, 04:27
Помогаю со студенческими работами здесь

Очень интересная задача! Для адреса 93.175.16.7/24 вычислить маску сети, широковещательный адрес, адрес сети
А вам по силам справиться? Для адреса 93.175.16.7/24 вычислить маску сети, широковещательный адрес, адрес сети, сколько компьютеров...

Как определить IP-адрес сети, зная IP-адрес узла назначения и маску сети
Добрый вечер, форумчане! Дали задачку одну: "Найти IP-адрес сети, зная IP-адрес узла назначения=12.34.56.83 и маску...

Какой mac адрес используется при удаленном подключении к рабочему столу и заблокировать доуступ к компьютеру по mac?
Я совсем не разбираюсь в этой теме... Есть два компа - сервер и левый. Левый подключается к рабочему столу сервера. На сервере можно...

Адрес пакета
Здравствуйте! Встала задача: надо с сайта отправить пакет на определенный компьютер, который находится в локальной сети. У меня есть...

Определить IP адрес источника пакета
Всем привет. Прилагаю скриншот вопроса. Заранее спасибо за помощь!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru