切换以太网接口MAC地址的批处理脚本

news2025/1/22 9:18:00

MAC(媒体访问控制)地址是网络设备的唯一标识符,用于网络通信。MAC 地址通常在设备制造时被分配并写入硬件。然而,在某些情况下,你可能需要或想要更改设备的 MAC 地址。以下是一些可能的理由:

1. **隐私和安全**:当你的设备连接到网络时,MAC 地址通常会被路由器和其他网络设备记录下来。这可能允许网络管理员,ISP,或者潜在的攻击者跟踪你的设备。通过定期更改你的 MAC 地址,你可以在一定程度上保护你的隐私和安全。

2. **网络访问控制**:一些网络,特别是企业网络,可能会使用 MAC 地址过滤作为访问控制的一部分。在这些情况下,只有预先允许的 MAC 地址才能连接到网络。如果你需要连接到这样的网络,但你的设备的 MAC 地址没有被允许,你可以更改你的 MAC 地址为一个已经被允许的地址。

3. **软件许可**:有些软件使用 MAC 地址作为许可证检查的一部分。如果你需要在新的硬件上运行这样的软件,但不想或不能获取新的许可证,你可以将新硬件的 MAC 地址更改为旧硬件的 MAC 地址。

请注意,虽然更改 MAC 地址在某些情况下可能有用,但也可能有潜在的问题。例如,如果两个设备在同一网络上使用了相同的 MAC 地址,可能会导致网络冲突。此外,不适当地更改 MAC 地址可能会导致网络连接问题。

批处理脚本

但是常规的修改MAC的方式比较繁琐,下面我为大家介绍一个通过批处理脚本的方式,在两个MAC地址值之间进行切换的方法,脚本如下

@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

使用方法

设置MAC地址值

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

在上面两行中设置切换的两个MAC地址值

确定要改MAC的以太网接口名称

以windows 11为例,查看?“网络连接”,如下图所示,我的电脑的以太网接口名称为“ethernet”

脚本中,如下行也是打印出电脑中的网络连接列表,从列表中也可查看到你的以太网接口名称

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

 

 在脚本中修改成你的以太网接口名称

 注意此处引号内的名称之前要加两个“空格”,这是因为列表形式冒号后有两个空格

Connnection Name:  ethernet

如下,在引号内修改成你的以太网接口名称 (这里不用在前面加空格)

 如果不想在脚本中修改名称,那么也可以通过在“网络连接”中将以太网连接重命名为“ethernet”

 注意:使用此脚本时,需要在管理员模式下运行!

脚本逐行解释

注意:这个脚本需要管理员权限才能运行,并且可能需要你根据实际情况修改网络适配器的注册表路径。在这个示例中,路径为HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001,但是在你的计算机上可能会有所不同。

下面是逐行解释:

1. `@echo off`:关闭回显,不显示执行的命令。
2. `chcp 65001`:设置命令行为 UTF-8 编码,以避免乱码。
3. `setlocal enabledelayedexpansion`:开启延迟变量扩展,允许在代码块(如 for 循环)中更新和使用变量。
4-6. `:: 设定两个MAC地址`:注释,说明下面两行设置了两个 MAC 地址。
7. `set MAC1=84-7B-57-45-DE-4F`:设置第一个 MAC 地址。
8. `set MAC2=08-92-04-27-43-8C`:设置第二个 MAC 地址。
9-10. `echo MAC1 is set to %MAC1%` 和 `echo MAC2 is set to %MAC2%`:打印两个 MAC 地址的值。
11-14. `echo Running 'getmac /v /fo list' command:` 和 `getmac /v /fo list`:显示当前运行的命令并打印 getmac 命令的输出。
15. `set Found=false`:初始化 Found 变量为 false。
16-31. `for /f ...`:for 循环用于查找名为 "以太网" 的连接的当前 MAC 地址。
   - 18-19. `if "%%a"=="Connection Name" if "%%b"=="  ethernet"`:如果找到名为 "以太网" 的连接,将 Found 设置为 true。
   - 22-27. `if "!Found!"=="true" if "%%c"=="Physical Address"`:如果找到 "以太网" 连接并且当前行包含 "Physical Address",则将当前 MAC 地址设置为 %%d 的值并将 Found 设置为 false。
32. `echo The MAC address of the "以太网" interface is: %CurrentMAC%`:打印当前的 MAC 地址。
33-34. `set CurrentMAC=!CurrentMAC:~1!`:删除 CurrentMAC 值的前导空格。
35-36. `echo "%CurrentMAC%"` 和 `echo "%MAC1%"`:打印当前的 MAC 地址和第一个 MAC 地址。
37-47. `if /I "%CurrentMAC%"=="%MAC1%" ...`:如果当前的 MAC 地址等于第一个 MAC 地址,执行以下操作:
   - 禁用 "ethernet" 接口。
   - 更新注册表以设置新的 MAC 地址。
   - 启用 "ethernet" 接口。
48-58. `else ...`:如果当前的 MAC 地址不等于第一个 MAC 地址,执行以下操作:
   - 禁用 "ethernet" 接口。
   - 更新注册表以设置新的 MAC 地址。
   - 启用 "ethernet" 接口。
59. `endlocal`:结束局部变量

总结:

通过这个脚本,我们可以实现在两个MAC地址间进行更换,用户也可以通过修改脚本,达到其他修改MAC的逻辑,如在一串MAC地址列表中,进行循环更换,每次更换为下一个MAC。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux期末复习总结

一、Linux基础及安装 LINUX是在UNIX基础上开发,具有UNIX全部功能。 **Linux特点:**开放性、多用户、多任务、出色的稳定性、良好的用户界面、设备独立性、丰富的网络功能、安全性、可移植性 Linux由4个主要部分组成:内核、Shell、文件系统、应用程序 …

【Python入门篇】——Python中循环语句(while循环的基础语法和基础案例)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

如何获得高并发经验?看这篇文章就够了

如何获得高并发经验? 这是我今天逛知乎的时候系统邀请我回答的一个问题,由此也引发了我的一些思考:为什么人人都想要获得高并发经验;想拥有高并发系统设计技能? 其原因LZ认为主要有以下三点: 涨薪&#x…

MD-MTSP:麻雀搜索算法SSA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、多仓库多旅行商问题 多旅行商问题(Multiple Traveling Salesman Problem, MTSP)是著名的旅行商问题(Traveling Salesman Problem, TSP)的延伸,多旅行商问题定义为:给定一个𝑛座城市的城市集…

【C++】内联函数----inline函数的详细使用教程

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

分享一个一键换肤按钮(超酷)

先上效果图&#xff1a; 效果图中转换为黑夜会有一个宇航员小猴子飞上来&#xff0c;途中没有截到。。。。 废话不多说&#xff0c;上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title…

通过VS开发人员命令提示符(developer command prompt)查看类

1.首先打开开始菜单栏&#xff0c;找到相应的VS版本。这里以VS2022为例 2.找到developer command prompt选项&#xff0c;点击进入 3.进入控制台&#xff0c;进入源文件所在的盘符&#xff08;这里以D盘为例&#xff0c;如果是默认C盘可以不用改&#xff09; 4.输入cd 文件地址…

printBanner

主类 package com.example.demo;import com.application.Application;public class Demo {public static void main(String[] args) {Application application new Application("application.properties");application.run();}}创建对象&#xff0c;需要的参数&…

第十三届蓝桥杯青少组省赛Python真题,包含答案

目录 一、选择题 二、编程题 第十三届蓝桥杯青少组省赛Python真题,包含答案 一、选择题 第 1 题 单选题 下列关于函数的说法正确的是 () 。 答案&#xff1a;C 第 2 题 单选题 十进制数55转换成十六进制是 () 。 答案&#xff1a;C 第 3题 单选题 下列方法中&#xff0c;哪…

Sysfs简介

Sysfs学习记录 主要参考文献&#xff1a;https://xuesong.blog.csdn.net/article/details/109522945 Sysfs(System File System)是一种虚拟文件系统&#xff0c;它提供了一种在Linux和Unix系统中管理设备和内核参数的机制。Sysfs基于内核&#xff0c;将底层硬件信息和内核参数…

WPF:WPF原生布局说明

前言 WPF在国内讨论度很小&#xff0c;我在这里记录一下WPF简单的原生控件是如何使用的&#xff0c;顺便回忆一下WPF的基础知识&#xff0c;有些忘记的比较厉害了 WPF简介 WPF是微软推出的桌面UI软件&#xff0c;是我觉得最早实现MVVM&#xff08;数据驱动事务&#xff09;&…

三、H3C-NE实验-配置管理实验

实验拓扑图&#xff1a; 实验描述&#xff1a; 1&#xff09;把路由器R配置为FTP服务器&#xff1b; 2&#xff09;在R上save配置文件后&#xff0c;主机登录FTP&#xff0c;把R的配置文件copy备份&#xff1b; 3&#xff09;删掉R的配置文件后&#xff0c;利用主机恢复R的配…

42个网工高效率工具,我只告诉你(一)

晚上好&#xff0c;我是老杨。 不知道上一篇书单总结&#xff0c;你是否觉得干货 今天更新第四篇&#xff0c;也是最后一篇总结——2022年全年&#xff0c;我安利给你的网工好用工具&#xff0c;整整42个。 它是什么&#xff0c;为什么好用&#xff0c;哪里下载&#xff0c;…

【Linux】进程信号详解(二)

文章目录 前言一、信号阻塞1.信号其他相关常见概念信号递达&#xff1a;信号未决&#xff1a;信号阻塞&#xff1a;信号阻塞vs信号递达的忽略动作 2. 在内核中的表示3. sigset_t4. 信号集操作函数5.sigprocmask函数6.sigpending 二、深入理解捕捉信号1. 虚拟地址空间2.用户态和…

mybatis是如何集成到spring的?

文章目录 1 前言1.1 集成spring前使用mybatis的方式1.2 集成mybatis到spring的关键步骤 2 SqlSessionFactoryBean对象分析2.1 buildSqlSessionFactory做了什么事情&#xff1f;2.2 为什么是SqlSessionFactoryBean却可以使用SqlSessionFactory&#xff1f; 3 验证demo4 举一反三…

【Python 爬虫之BeautifulSoup】零基础也能轻松掌握的学习路线与参考资料

BeautifulSoup是一种Python库&#xff0c;用于解析HTML和XML文档&#xff0c;并从中提取数据。它提供了Pythonic的解决方案来处理非结构化数据&#xff0c;因此可以轻松地从网页上提取数据。 使用BeautifulSoup编写爬虫&#xff0c;你可以自动化许多任务&#xff0c;比如数据抓…

实验三 Spark SQL基础编程

实验三 Spark SQL基础编程 1.实验目的 1. 掌握 Spark SQL 的基本编程方法&#xff1b; 2. 熟悉 RDD 到 DataFrame 的转化方法&#xff1b; 3. 熟悉利用 Spark SQL 管理来自不同数据源的数据。 2.实验内容 1&#xff0e;Spark SQL 基本操作 将下列 JSON 格式数据复制到 Li…

CF1245D Shichikuji and Power Grid 题解

CF1245D Shichikuji and Power Grid 题解 题目链接字面描述题面翻译样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 思路点拨代码实现 题目 链接 https://www.luogu.com.cn/problem/CF1245D 字面描述 题面翻译 已知一个平面上有 n n n 个城市&#x…

计网笔记 数据链路层 (1-2) 封装成帧、差错控制、流量控制与可靠传输、停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)

文章目录 前言在这里插入图片描述 零、数据链路层基本概念一、功能0、数据链路层功能概述1、封装成帧和透明传输1.1封装成帧1.2 透明传输1.3组帧方法 2、数据链路层的差错控制2.0差错从何而来2.1位错&#xff08;比特错&#xff0c;1变成0&#xff0c;0变成1&#xff09;2.2帧错…

干货 | ChatGPT使用指南,让你轻松上车AI世界!

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 聊天机器人&#xff08;Chatbot&#xff09;是一种人工智能应用&#xff0c;可以模拟人类对话行为&#xff0c;以自然语言进行交互。 在过去的几年里&#xff0c;随着自然语言处理技术和深…