Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Sahr_2011
1 / 1 / 0
Регистрация: 21.09.2011
Сообщений: 31
#1

Изменение mac адреса - C++

05.04.2012, 10:31. Просмотров 1303. Ответов 1
Метки нет (Все метки)

Стоит задача программно изменить mac адрес устройства.
Помогите чем небуть url или примерчиком может кто то Даст вектор куда копать ))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2012, 10:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменение mac адреса (C++):

Mac OS Timers - C++
Доброго времени суток. Есть ли какие-то средства(чистый С) для работы с таймерами под Мак(аналоги timer_create или SetTimer,...

Фаервол на C++ для Mac OS X - C++
Можно ли написать фаервол для Mac OS X на C++ с использованием Qt? Или на чём можно будет написать быстрее и легче (GUI нужны обязательно)....

Определение mac-адреса сетевой карты - C++ Builder
Приветствую. Ребят, дайте пожалуйста действующий способ определения mac-адреса сетевой карты на билдере.

Ошибка с получением Mac-адреса сетевого адаптера вызовом NetBIOS - C++ Builder
Пытаюсь запустить консольку, разработаную в VS в Buildere. Компилируется без ошибок, но и адрес карты не выдаёт (Ошибка инициализации). ...

mac-adres локалки - C++ Builder
Вечер добрый хелп ) Ребят каким способом можно узнать мак адрес локального подключения?

IP/MAC адресса, сканирование - C++ Builder
Хочу поднять тему про локальную сеть(создание своих программ для сети), кто нибудь отсылал пинг или сканировал через DNS,ARP, а может кто...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
05.04.2012, 17:03 #2
А ты гуглить пробовал? Нашел код по первой же ссылки. У нас запрещены ссылки на другие форумы, поэтому вот код, который нашел:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
 #include <iostream.h>
   #include <stdio.h>
   #include <windows.h>
   #include <setupapi.h>
   #include <devguid.h>
   #include <regstr.h>
   #include <stdlib.h>
   #include "string.h"
 
   unsigned long enableDisable = -1;
   char* newAddr;
 
   int main( int argc, char *argv[ ], char *envp[ ] )
   {
      if(argc > 2){
         enableDisable = atoi(argv[1]);
         newAddr = argv[2];
      }
      else{
         cout << "CHMAC - Change MAC address. Also sounds cool when pronounced as one word.\r\nUSAGE: chmac adapter address\r\nwhere adapter is the desired adapter number from the list below,\r\nand address is a MAC address in the format dd11223344f8 or RESET to reset\r\nto the default value. NOTE: A MAC address can only contain hexadecimals\r\n(0123456789ABCDEF). There is NO automatic checking!\r\nDisclaimer: This program is provided \"AS-IS\". Anything that may or may not\r\nhappen because of it is entirely the user's fault.\r\n\r\n";
      }
 
       HDEVINFO hDevInfo;
       SP_DEVINFO_DATA DeviceInfoData;
       SP_PROPCHANGE_PARAMS Param;
       DWORD i;
 
       // Create a HDEVINFO with all present devices.
       hDevInfo = SetupDiGetClassDevs(NULL,
           0, // Enumerator
           0,
           DIGCF_PRESENT | DIGCF_ALLCLASSES );
       
       if (hDevInfo == INVALID_HANDLE_VALUE)
       {
           return 1;
       }
       
       // Enumerate through all devices in Set.
       
       DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
       for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,
           &DeviceInfoData);i++)
       {
           DWORD DataT;
           LPTSTR buffer = NULL;
           DWORD buffersize = 0;
           
           unsigned long netguid = 1295444338;
 
           while (!SetupDiGetDeviceRegistryProperty(
               hDevInfo,
               &DeviceInfoData,
               SPDRP_DEVICEDESC,
               &DataT,
               (PBYTE)buffer,
               buffersize,
               &buffersize))
           {
               if (GetLastError() == 
                   ERROR_INSUFFICIENT_BUFFER)
               {
                   if (buffer) LocalFree(buffer);
                   buffer = (LPTSTR)LocalAlloc(LPTR,buffersize);
               }
               else
               {
                   break;
               }
           }
 
           if(DeviceInfoData.ClassGuid.Data1 == netguid && enableDisable == -1) cout << i << ": " << buffer << endl;
 
 
 
         if(i == enableDisable && DeviceInfoData.ClassGuid.Data1 == netguid){
            HKEY k = SetupDiOpenDevRegKey(hDevInfo, &DeviceInfoData, DICS_FLAG_GLOBAL, 0, DIREG_DRV, KEY_ALL_ACCESS);
            if(k == INVALID_HANDLE_VALUE){
               cout << "ERROR: Cannot open driver information for editing!" << endl;
               exit(1);
            }
            TCHAR regData[128];
            unsigned long regDataLen = sizeof(regData);
            if(RegQueryValueEx(k, "NetworkAddress", NULL, NULL, (unsigned char*)&regData, &regDataLen) == 0){
               //something exists; KILL IT!!!
               cout << "Previous value exists; deleting..." << endl;
               RegDeleteValue(k, "NetworkAddress");
            }
            if(stricmp((const char*)newAddr, "reset") != 0){
               if(RegSetValueEx(k, "NetworkAddress", 0, REG_SZ, (const unsigned char*)newAddr, strlen((const char*)newAddr)) != ERROR_SUCCESS){
                  cout << "ERROR: Could not set new MAC address!" << endl;
                  exit(1);
               }
            }
            else{
               cout << "MAC reset successful. Proceeding..." << endl;
            }
            cout << "Change successful. Rebooting adapter..." << endl;
            RegCloseKey(k);
            Param.ClassInstallHeader.cbSize = sizeof(Param.ClassInstallHeader);
            Param.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
            Param.HwProfile = 0;
            Param.Scope = DICS_FLAG_GLOBAL;
            //disable it:
            Param.StateChange = DICS_DISABLE;
            SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData, (SP_CLASSINSTALL_HEADER *)&Param, sizeof(Param));
            SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &DeviceInfoData);
            //reenable it:
            Param.StateChange = DICS_ENABLE;
            SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData, (SP_CLASSINSTALL_HEADER *)&Param, sizeof(Param));
            SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &DeviceInfoData);
            cout << "CHMAC complete." << endl;
         }
 
 
           if (buffer) LocalFree(buffer);
       }
       
       
       if ( GetLastError()!=NO_ERROR &&
            GetLastError()!=ERROR_NO_MORE_ITEMS )
       {
           return 1;
       }
       
       SetupDiDestroyDeviceInfoList(hDevInfo);
       
       return 0;
   }
особо не вникал, работоспособность не проверял, но автор утверждает, что код рабочий и меняет MAC адрес.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2012, 17:03
Привет! Вот еще темы с ответами:

Mac адрес из приходящего пакета в сети - C++ Builder
Доброго времени суток. Ситуация состоит в том, чтоб отлавливать широковещательные пакеты и анализировать загруженность сети.Что то на...

Включение компьютера через MAC адрес - C++ Builder
Привет люди У меня 1 вопрос, как можно реализовать включение компиютера через MAC адрес? без апи, на чистом С++? Спасибо заранее...

Изменение даты создания папки и изменение MAC-адреса - CMD/BAT
Ребята всем привет. Нужна ваша помощь. Пишу bat для одной операции и столкнулся с проблемой что надо изменить дату создание папки Program...

Изменение MAC адреса - Delphi
Всем привет! Тут такая тема: каждые 15 минут меня блокируют по WiFi, типо надо заплатить денег. Я постоянно меняю значение Mac адреса чтоб...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru