Script por lotes para cambiar la dirección MAC de la interfaz Ethernet

Una dirección MAC (Media Access Control) es un identificador único para un dispositivo de red y se utiliza para la comunicación de red. Las direcciones MAC generalmente se asignan y escriben en el hardware cuando se fabrica el dispositivo. Sin embargo, en algunos casos, es posible que necesite o desee cambiar la dirección MAC del dispositivo. Aquí hay algunas razones posibles:

1. **Privacidad y seguridad**: cuando su dispositivo está conectado a la red, los enrutadores y otros dispositivos de red suelen registrar la dirección MAC. Esto podría permitir que los administradores de red, los ISP o posibles atacantes rastreen su dispositivo. Al cambiar su dirección MAC regularmente, puede proteger su privacidad y seguridad hasta cierto punto.

2. **Control de acceso a la red**: algunas redes, especialmente las redes empresariales, pueden usar el filtrado de direcciones MAC como parte del control de acceso. En estos casos, solo las direcciones MAC preaprobadas pueden conectarse a la red. Si necesita conectarse a dicha red, pero la dirección MAC de su dispositivo no está permitida, puede cambiar su dirección MAC a una que ya esté permitida.

3. **Licencias de software**: Algunos programas usan la dirección MAC como parte de la verificación de la licencia. Si necesita ejecutar dicho software en un nuevo hardware, pero no quiere o no puede obtener una nueva licencia, puede cambiar la dirección MAC del nuevo hardware a la dirección MAC del antiguo hardware.

Tenga en cuenta que si bien cambiar la dirección MAC puede ser útil en algunas situaciones, también puede ser potencialmente problemático. Por ejemplo, si dos dispositivos utilizan la misma dirección MAC en la misma red, puede producirse un conflicto de red. Además, cambiar la dirección MAC de manera inapropiada puede causar problemas de conexión a la red.

secuencia de comandos por lotes

Sin embargo, la forma convencional de modificar la dirección MAC es engorrosa. Permítanme presentarles un método de secuencia de comandos por lotes para cambiar entre dos valores de dirección MAC. La secuencia de comandos es la siguiente

@echo off

chcp 65001

setlocal enabledelayedexpansion

:: 设定两个MAC地址
set MAC1=00-7B-57-45-DE-01
set MAC2=08-00-04-27-43-02

echo MAC1 is set to %MAC1%
echo MAC2 is set to %MAC2%

:: 打印 getmac 命令的输出
echo Running 'getmac /v /fo list' command:
getmac /v /fo list
echo.

:: 初始化 Found 变量
set Found=false

for /f "tokens=1-2 delims=:" %%a in ('getmac /v /fo list') do (
    if "%%a"=="Connection Name" if "%%b"=="  ethernet" (
    set Found=true
    echo found the right connection name
    for /f "tokens=1-2 delims=:" %%c in ('getmac /v /fo list') do (
            if "!Found!"=="true" if "%%c"=="Physical Address" (
                set CurrentMAC=%%d
                set Found=false
            )
        )
    ) 
)
echo The MAC address of the "以太网" interface is: %CurrentMAC%

:: 删除前导空格
set CurrentMAC=!CurrentMAC:~1!
echo "%CurrentMAC%"
echo "%MAC1%"

if /I "%CurrentMAC%"=="%MAC1%" (
    echo Switching from MAC1 to MAC2...
    set MAC2=!MAC2:-=!
    echo "!MAC2!"
    netsh interface set interface "ethernet" admin=disable
    REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001" /v NetworkAddress /t REG_SZ /d !MAC2! /f
    netsh interface set interface "ethernet" admin=enable
) else (
    echo Switching from %CurrentMAC% to MAC1...
    set MAC1=!MAC1:-=!
    echo "!MAC1!"
    netsh interface set interface "ethernet" admin=disable
    REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001" /v NetworkAddress /t REG_SZ /d !MAC1! /f
    netsh interface set interface "ethernet" admin=enable
)



endlocal

pause

Instrucciones

Establecer el valor de la dirección MAC

:: 设定两个MAC地址
set MAC1=00-7B-57-45-DE-01
set MAC2=08-00-04-27-43-02

Establezca los dos valores de dirección MAC para cambiar en las dos líneas anteriores

Determine el nombre de la interfaz Ethernet para cambiar la MAC

Tome Windows 11 como ejemplo, ¿comprueba? "Conexión de red", como se muestra en la figura a continuación, el nombre de la interfaz Ethernet de mi computadora es "ethernet"

En el script, la siguiente línea también imprime la lista de conexiones de red en la computadora, y también puede ver el nombre de su interfaz Ethernet de la lista

:: 打印 getmac 命令的输出
echo Running 'getmac /v /fo list' command:
getmac /v /fo list
echo.

 

 Cámbielo a su nombre de interfaz ethernet en el script

 Tenga en cuenta que aquí se agregan dos "espacios" antes del nombre entre comillas, porque hay dos espacios después de los dos puntos en el formulario de lista

Connnection Name:  ethernet

De la siguiente manera, cámbielo al nombre de su interfaz Ethernet entre comillas (aquí no agregue un espacio al frente)

 Si no desea cambiar el nombre en el script, también puede cambiar el nombre de la conexión Ethernet a "ethernet" en "Conexiones de red"

 NOTA: ¡Este script debe ejecutarse en modo administrador!

Guión interpretado línea por línea

Nota: este script requiere privilegios de administrador para ejecutarse y es posible que deba modificar la ruta de registro del adaptador de red de acuerdo con la situación real. En este ejemplo, la ruta es HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001, pero puede ser diferente en su computadora.

Aquí hay una explicación línea por línea:

1. `@echo off`: apaga el eco y no muestra el comando ejecutado.
2. `chcp 65001`: establezca la línea de comando en codificación UTF-8 para evitar caracteres ilegibles.
3. `setlocal enableelayeexpansion`: habilite la expansión de variables retrasadas, lo que permite que las variables se actualicen y utilicen en bloques de código (como bucles for).
4-6. `:: establezca dos direcciones MAC`: comentario, explique que las siguientes dos líneas establecen dos direcciones MAC.
7. `set MAC1=84-7B-57-45-DE-4F`: establece la primera dirección MAC.
8. `set MAC2=08-92-04-27-43-8C`: establece la segunda dirección MAC.
9-10 `echo MAC1 está configurado en %MAC1%` y `echo MAC2 está configurado en %MAC2%`: Imprime los valores de dos direcciones MAC.
11 a 14. `echo Ejecutando el comando 'getmac /v /fo list':` y `getmac /v /fo list`: Muestra el comando actualmente en ejecución e imprime la salida del comando getmac.
15. `set Found=false`: inicializa la variable encontrada en falso.
16 a 31. `for /f ...`: Se utiliza un bucle for para encontrar la dirección MAC actual de la conexión denominada "Ethernet".
   - 18 y 19. `if "%%a"=="Nombre de la conexión" if "%%b"=="ethernet"`: si se encuentra una conexión llamada "ethernet", establezca Encontrado en verdadero.
   - 22 a 27. `if "!Found!"=="true" if "%%c"=="Dirección física"`: si se encuentra una conexión "Ethernet" y la línea actual contiene "Dirección física", entonces la dirección MAC actual se establece en el valor de %%d y Found se establece en falso.
32. `echo La dirección MAC de la interfaz "Ethernet" es: %CurrentMAC%`: Imprime la dirección MAC actual.
33 y 34. `set CurrentMAC=!CurrentMAC:~1!`: elimina los espacios iniciales del valor de CurrentMAC.
35 y 36. `echo "%CurrentMAC%"` y `echo "%MAC1%"`: Imprime la dirección MAC actual y la primera dirección MAC.
37 y 47. `if /I "%CurrentMAC%"=="%MAC1%" ...`: si la dirección MAC actual es igual a la primera dirección MAC, haga lo siguiente: - Desactive la interfaz "ethernet"
   .
   - Actualice el registro para establecer una nueva dirección MAC.
   - Habilitar la interfaz "ethernet".
48-58.`else...`: si la dirección MAC actual no es igual a la primera dirección MAC, haga lo siguiente:
   - Desactive "ethernet" interfaz.
   - Actualice el registro para establecer una nueva dirección MAC.
   - Habilitar la interfaz "ethernet".
59. `endlocal`: finaliza la variable local

Resumir:

A través de este script, podemos realizar el reemplazo entre dos direcciones MAC. Los usuarios también pueden modificar el script para lograr otras lógicas de modificación de MAC, como el reemplazo cíclico en una cadena de listas de direcciones MAC, cambiando cada vez a la siguiente MAC.

Supongo que te gusta

Origin blog.csdn.net/weixin_46481662/article/details/130662746
Recomendado
Clasificación