Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/75: Рейтинг темы: голосов - 75, средняя оценка - 4.63
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325

Определение MAC адреса

28.09.2014, 22:18. Показов 14792. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, долго лазил по интернету и по форуму, что-то не получилось найти нужной темы, если можете киньты ссылку или подскажите где начать искать, хоть какой нибуть совет или решение) вообщем мне програмно нужно определить мак адрес компа, что бы он у меня был толи в какой нибуть переменной или еще что либо, просто не нашол нечего похожего, незнаю даже примерно как должно выглядеть, просто в будущем я этот МАК буду передавать на сервер, от клиента подкинте идею буду очень благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.09.2014, 22:18
Ответы с готовыми решениями:

Определение mac-адреса (ARP)
Необходимо написать программку (без использования каких-либо спец. библиотек), определяющую mac-адрес (по ARP, само собой). Подскажите, с...

Проверка mac адреса
Всем доброго времени суток. Перейду сразу к сути, есть компьютер, находящийся за NAT`ом и имеющим доступ к интернету, он отправляет UDP...

Получение MAC адреса
Здравствуйте. Пишу функцию извлечения MAC адреса, вот код: #include <stdio.h> #include <stdlib.h> #include...

10
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,893
28.09.2014, 22:36
итернал, Windows, Linux.
1
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325
28.09.2014, 22:46  [ТС]
а для винды то весь целый код нужен или кусок, просто что бы я хотя бы с кодом начал розбиратся? а то я владею английським, но не очень хорошо, прийдется помучатся с переводом)

Добавлено через 2 минуты
и всеравно по коду есть непонятные моменты, ну там новая библиотека и тд, можно какую нибуть литературку к этому в добавок? что бы почитать разобратся
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,893
28.09.2014, 23:19
Лучший ответ Сообщение было отмечено Убежденный как решение

Решение

Цитата Сообщение от итернал Посмотреть сообщение
и всеравно по коду есть непонятные моменты
Спрашивайте.

Цитата Сообщение от итернал Посмотреть сообщение
можно какую нибуть литературку к этому в добавок?
Могу посоветовать только на MSDN почитать про функции GetAdaptersInfo и GetAdaptersAddresses (лучшее использовать ее) там есть примеры, но тоже на английском.
+ еще почитать.
1
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325
28.09.2014, 23:45  [ТС]
ну в частности библиотека iphlpapi.lib, просто некогда с ней не реботал

тут я так понимаю мы обьявляем переменую?
C++
1
PIP_ADAPTER_INFO AdapterInfo;
просто больше вопросы связанны из-за незнания функций и библиотеки, думаю почитаю то что выдали, станет чуть ясней относительно функций)
но всеравно непонятно, что имено возвращает данная строка
C++
1
return mac_addr;
я сколько смотрю, так и непонял в какой стркое туда заносится значение
тут?
C++
1
2
3
4
5
sprintf(mac_addr, "%02X:%02X:%02X:%02X:%02X:%02X",
pAdapterInfo->Address[0], pAdapterInfo->Address[1],
pAdapterInfo->Address[2], pAdapterInfo->Address[3],
pAdapterInfo->Address[4], pAdapterInfo->Address[5]);
printf("Address: %s, mac: %s\n", pAdapterInfo->IpAddressList.IpAddress.String, mac_addr);
если да то можете росказать чуть подробней что имено тут происходит
и для чего тогда потом это?
C++
1
2
printf("\n");
pAdapterInfo = pAdapterInfo->Next;
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,893
29.09.2014, 00:15
Лучший ответ Сообщение было отмечено итернал как решение

Решение

Вот код еще проще. О печатает все MAC адреса. Создайте консольное приложение добавьте код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <winsock2.h>
#include <iphlpapi.h>
 
#pragma comment(lib, "iphlpapi.lib")
 
// выводит 6 байт, начиная с addr в консоль
void PrintMACaddress (BYTE *addr) {
   for (int i = 0; i < 6; ++i) {
       printf("%02x%c", *addr++, (i < 5) ? '-' : '\n');
   }
}
 
// печатаем МАК адреса всех адаптеров
static void GetMACaddress() {
   IP_ADAPTER_INFO AdapterInfo[16];       // информация о 16 адаптерах макс
   DWORD dwBufLen = sizeof (AdapterInfo); // кол-во байт в буффере
 
   DWORD dwStatus = GetAdaptersInfo(AdapterInfo, &dwBufLen);
   if (dwStatus != ERROR_SUCCESS) {
      printf("GetAdaptersInfo failed. err=%d\n", GetLastError());
      return;
  }
 
   PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // информация о текущем адаптере
   while (pAdapterInfo) {                       // пока есть информация об адаптерах
      PrintMACaddress(pAdapterInfo->Address);   // печатаем MAC
      pAdapterInfo = pAdapterInfo->Next;        // переходим к информации о следующем адаптере
   }
}
и в main() вызовете функцию GetMACaddress().
Миниатюры
Определение MAC адреса  
2
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325
29.09.2014, 00:40  [ТС]
оно мне вывело 3 мак адреса, 2 еще от вай фая, их можно как-то "отсеять"
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,893
29.09.2014, 00:51
Цитата Сообщение от итернал Посмотреть сообщение
но всеравно непонятно, что имено возвращает данная строка
Нужно изучить структуру IP_ADAPTER_INFO, а именно мембер Type. Что именно вам нужно?

Константа IF_TYPE_IEEE80211 (71) означает Wifi адптер, только:
This adapter type is returned on Windows Vista and later. On Windows Server 2003 and Windows XP , an IEEE 802.11 wireless network interface returns an adapter type of MIB_IF_TYPE_ETHERNET.
1
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325
29.09.2014, 01:08  [ТС]
Цитата Сообщение от schdub Посмотреть сообщение
Что именно вам нужно?
мне нужно имено сетевой карты, без wifi
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,893
29.09.2014, 01:15
Цитата Сообщение от итернал Посмотреть сообщение
мне нужно имено сетевой карты, без wifi
C
1
2
3
4
5
6
7
8
9
10
//... 
    PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
    while (pAdapterInfo) {
        if (pAdapterInfo->Type == MIB_IF_TYPE_ETHERNET) {
            PrintMACaddress(pAdapterInfo->Address);
            break;
        }
        pAdapterInfo = pAdapterInfo->Next;
    }
//...
2
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 3
06.12.2017, 12:01
Почему-то ничего не получилось из того, что здесь написано, я полез в интернет и наткнулся на статью, кажется от этого форума но не смог разобраться что там и к чему, а при написании выдает ошибку "требуется точка с запятой" перед функцией GetAdapterID, пытался юзать с помощью этой функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void MacAdress()
{
    
    UCHAR MYLIBAPI GetAdapterID(char *Name, // NetBIOS имя станции
        UINT lana_num,
        CARDID *ID) // 6 байтовый массив
    {
        UCHAR rc = 0;
        UCHAR Status[256];
 
        while (lstrlen(Name) - 15)
            lstrcat(Name, " ");
 
        memset(&SNcb, 0, sizeof(NCB));
        SNcb.ncb_command = NCBASTAT;
        SNcb.ncb_buffer = (LPSTR)Status;
        SNcb.ncb_length = 256;
        lstrcpy(SNcb.ncb_callname, Name);
        SNcb.ncb_lana_num = lana_num;
        rc = Netbios(&SNcb);
        if (rc == 0) {
            memcpy(ID, Status, 6);
        }
        return(SNcb.ncb_cmd_cplt);
        
    }
    
}
Про эту функцию на русском языке ничего не нашел. Хелп плиз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2017, 12:01
Помогаю со студенческими работами здесь

Получение Mac-адреса сетевого адаптера.
Очень нужна помощь!!! В Microsoft Visual Studio 2010 пытаюсь запустить консольное приложение (и в CLR и в Win32): #include...

Написать программу на Си под unix (вывод, ip, маски, широковещательного адреса, mac)
Всем привет! Ребята помогите! Нужно написать программу которая выводит ip адрес, маску, широковещательный адрес, и аппаратный адрес...

Определение внешнего IP адреса внутренними ресурсами?
Предлагаю присоединиться к обсуждению форумчан компетентных в сетях, чтобы новички могли потихоньку двигаться дальше. Продолжение темы...

Изменение mac адреса
Стоит задача программно изменить mac адрес устройства. Помогите чем небуть url или примерчиком может кто то Даст вектор куда копать ))

Определение MAC адреса
Можно ли какнить на PHP определить MAC адрес с которого идет обращение к сайту?


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru