Смена MAC-адреса: как это делать и почему может не получаться?
7293
10
Добрый день, народ. Задача такая: для доступа в Интернет нужно сменить MAC-адрес на WiFi-адаптерах у двух ноутбуках: один Acer и адаптер на нем Atheros, другой Asus и на нем BrodCom. На вкладке "Дополнительно" в свойствах адаптера Atheros есть параметр "Network address", а у BrodCom - "Управляемый MAC-адрес". Что там, что там, при заполнении адресом нужного редактора и нажатия "OK" почему-то ничего не меняется. Самое интересное, что когда потом снова заходишь в эти свойства, нужный MAC написан в нужном редакторе, то есть он там сохраняется, а физически не меняется. Почему? И знает ли кто-нибудь, как можно все же его сменить-то?
Игорь772
зачем менять? Не проще ли позвонить провайдеру и перепривязать? Или МАК не ваш?:миг:
Злыдь
Нет, непроще. Там не от провайдера зависит, а от фильтра, включенного и настроенного в определённом маршрутизаторе. У девушки был старый бук и она свободно подключалась, а сейчас появился другой, новый бук, а администратора нет пока возможности попросить сменить в маршрутизаторе адрес один на другой. Второй же бук был взят для опытов, а на нем тоже не получилось.
Игорь772
Пичалько, чо... можно и так но потом придет админ и учинит.
Злыдь
Все бы хорошо, но меня смутило вот что:
Убедитесь, что MAC-адрес корректно отформатирован. Некоторые типы адаптеров (особенно Wi-Fi-карты) не воспринимают изменения MAC-адресов, если вторая половина первого октета не представляет из себя 2, 6, A, E или начинается с нуля. Это требование появилось еще во времена Windows XP и выглядит следующим образом:
• D2XXXXXXXXXX
• D6XXXXXXXXXX
Это как понимать? То есть, если первые 8 символов выглядят так "DC85DE7E", то я вообще на этой сетевой карте не смогу его выставить?
Игорь772
бредятинка, но можно и так:

Показать спойлер
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SETLOCAL ENABLEEXTENSIONS

::Generate and implement a random MAC address
FOR /F "tokens=1" %%a IN ('wmic nic where physicaladapter^=true get deviceid ^| findstr [0-9]') DO (
CALL :MAC
FOR %%b IN (0 00 000) DO (
REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\%%b%%a >NUL 2>NUL && REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\%%b%%a /v NetworkAddress /t REG_SZ /d !MAC! /f >NUL 2>NUL
)
)

::Disable power saving mode for network adapters
FOR /F "tokens=1" %%a IN ('wmic nic where physicaladapter^=true get deviceid ^| findstr [0-9]') DO (
FOR %%b IN (0 00 000) DO (
REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\%%b%%a >NUL 2>NUL && REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\%%b%%a /v PnPCapabilities /t REG_DWORD /d 24 /f >NUL 2>NUL
)
)

::Reset NIC adapters so the new MAC address is implemented and the power saving mode is disabled.
FOR /F "tokens=2 delims=, skip=2" %%a IN ('"wmic nic where (netconnectionid like '%%') get netconnectionid,netconnectionstatus /format:csv"') DO (
netsh interface set interface name="%%a" disable >NUL 2>NUL
netsh interface set interface name="%%a" enable >NUL 2>NUL
)

GOTO :EOF
:MAC
::Generates semi-random value of a length according to the "if !COUNT!" line, minus one, and from the characters in the GEN variable
SET COUNT=0
SET GEN=ABCDEF0123456789
SET GEN2=26AE
SET MAC=
:MACLOOP
SET /a COUNT+=1
SET RND=%random%
::%%n, where the value of n is the number of characters in the GEN variable minus one. So if you have 15 characters in GEN, set the number as 14
SET /A RND=RND%%16
SET RNDGEN=!GEN:~%RND%,1!
SET /A RND2=RND%%4
SET RNDGEN2=!GEN2:~%RND2%,1!
IF "!COUNT!" EQU "2" (SET MAC=!MAC!!RNDGEN2!) ELSE (SET MAC=!MAC!!RNDGEN!)
IF !COUNT! LEQ 11 GOTO MACLOOP
Показать спойлер
Злыдь
А что делает Ваш код? я так понял, что он отключает режим экономии энергии у адаптера и ставит ему случайный MAC-адрес, который генерируется системой. Так ли это, и если не так, то какие ещё действия будут применены при запуске сего сценария?
Игорь772
Рекомендую ВНИМАТЕЛЬНО прочитать текст, подумать над смыслом КАЖДОЙ строчки и перестать задавать глупые вопросы.
Злыдь
Рекомендую ВНИМАТЕЛЬНО прочитать текст, подумать над смыслом КАЖДОЙ строчки и перестать задавать глупые вопросы.
Что ж делать, если английский мой не на столько совершенен?.. В общем, как бы там не было, спасибо, конечно, но файлик Ваш не помог.
Что было сделано?
Был создан .bat-файл с текстом, прописанным Вами выше. Он был запущен, винда что-то там выполнила, после чего окно командной строки закрылось. Как и оказалось, после этого MAC-адрес адаптера был поменен на случайно сгенерированный. я изменил в свойствах MAC на тот, который нужен для подключения к сети, и смысла это никакого не дало. Как был он стандартный - (48:B2:xx:xx:xx:xx), так таким и остался.:хммм:
Игорь772
Использовал я как-то программу macshift, для тех же целей. Работало.
Через bat файл не так удобно, да и нюансы, скорее всего, от версии windows, существуют.