Qt修改mac地址

1.通过修改注册表NetworkAddress实现,如果注册表没有此项,找到DriverDesc描述信息是网卡信息,如Intel(R) Ethernet Connection I218-LM,在此新建字符串NetworkAddress,其值就是mac地址。

mac地址修改后,要重启网卡。 网卡禁用启用,运行cmd命令netsh interface set interface 本地连接 enabled 和netsh interface set interface 本地连接 disabled。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QProcess>
#include <QSettings>
#include <QString>
#include <QDebug>
#include <QFile>
#include <QMessageBox>
#include <QDir>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

}

MainWindow::~MainWindow()
{
    delete ui;
}

//const QString strReg="HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\0007";
void MainWindow::on_btnRecover_clicked()
{
  ui->btnRecover->setEnabled(false);
  if(!loadIni())
  {
      ui->btnRecover->setEnabled(true);
      return;
  }
  setButtonStatus(ui->btnModify,false);
  QSettings *reg=new QSettings(mReg,QSettings::NativeFormat);
  reg->setValue("NetworkAddress",mOriginal);
  delete reg;
  reg=NULL;
  reStartNetWork();
  setButtonStatus(ui->btnRecover,true);
  ui->btnRecover->setEnabled(true);

}

void MainWindow::on_btnModify_clicked()
{
    ui->btnModify->setEnabled(false);
    if(!loadIni())
    {
        ui->btnModify->setEnabled(true);
        return;
    }
    setButtonStatus(ui->btnRecover,false);
    QSettings *reg=new QSettings(mReg,QSettings::NativeFormat);

    reg->setValue("NetworkAddress",mModify);
    delete reg;
    reg=NULL;
    reStartNetWork();

    setButtonStatus(ui->btnModify,true);
    ui->btnModify->setEnabled(true);
}

void MainWindow::reStartNetWork()
{
   setNetEnabled(false);
   setNetEnabled(true);
}

void MainWindow::setNetEnabled(bool isEnabled)
{
    QStringList cmdlst;
    if(isEnabled)
    {
      cmdlst<<"/c";
      cmdlst<<"netsh interface set interface 本地连接 enabled";
    }
    else
    {
      cmdlst<<"/c";
      cmdlst<<"netsh interface set interface 本地连接 disabled";
    }

    runCMD(cmdlst);
}

void MainWindow::testCmd()
{
    QProcess p(0);
    p.start("cmd", QStringList()<<"/c"<<"ping www.baidu.com");
    p.waitForStarted();
    p.waitForFinished();
    QString strTemp=QString::fromLocal8Bit(p.readAllStandardOutput());

    QMessageBox testMassage;
    testMassage.setText(strTemp);
    testMassage.exec();

}
void MainWindow::runCMD(const QStringList &cmdlst)
{
    QProcess p(0);
    p.start("cmd",cmdlst);
    qDebug()<<cmdlst;
    p.waitForStarted();
    p.waitForFinished();
    qDebug()<<QString::fromLocal8Bit(p.readAllStandardOutput());

}

void MainWindow::setButtonStatus(QPushButton *btn,bool isClick)
{
    if(isClick)
    {
        btn->setStyleSheet("QPushButton{background-color: rgb(220, 241, 252);"
                           "border-color: rgb(170, 255, 255);"
                           "border-radius: 10px;"
                           "border: 1px solid;"

                           "}");
    }
    else
    {

       btn->setStyleSheet("QPushButton{background-color: rgb(240, 240, 240);"
                          "border-color: rgb(170, 255, 255);"
                          "border-radius: 10px;"
                          "border: 1px solid;"

                          "}");
    }

}

bool MainWindow::loadIni()
{

    if(!QFile::exists(qApp->applicationDirPath()+"\\config.ini"))
    {
        QMessageBox box;
        box.setText("config.ini don‘t exist!");
        box.setStandardButtons(QMessageBox::Ok);
        box.exec();
        return false;
    }

    QSettings *setIni = new QSettings(qApp->applicationDirPath()+"\\config.ini", QSettings::IniFormat);

    mReg=setIni->value("Regedit/reg").toString();
    mOriginal=setIni->value("MacAddress/original").toString();

    mModify=setIni->value("MacAddress/modify").toString();
    return true;
}
[Regedit]
#找到DriverDesc值是网卡信息,如Intel(R) Ethernet Connection I218-LM,就是添加此网卡mac地址NetworkAddress的地方#
reg=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007
[MacAddress]
original=ECF4BB4D144F
modify=B8AC6F3F148D
#modify=
#modify=
#modify=
时间: 2024-08-29 17:01:26

Qt修改mac地址的相关文章

用派克斯出现651 查看&修改mac地址的方法

1.winxp查看mac地址的方法 2.winxp修改mac地址的方法 电脑MAC地址是网卡适配器在出厂时就已经被固定了的,也叫物理地址,每块网卡适配器有全球唯一的MAC地址,一般情况是不需要修改MAC地址的,但有些特殊情况需要更改MAC地址来实现一些特殊的要求,修改之前大家先知道如何查看 第一种方法 1.在开始菜单栏选择"运行" 2.在运行中输入"cmd" 3.我们会看到有一个黑色窗口弹出,在里边输入"ipconfig /all"然后按回车键

linux下修改MAC地址的问题解决

在linux中,修改MAC地址 # ifdown eth0 # ifconfig eth0 hw ether 12:34:56:78:90:12 (修改的MAC地址跟原来的地址不同) # ifup eth0 (修改成功) 后,用# ifconfig 查看,MAC地址改变了,但之后输入#service network restart 或ifdown eth0命令时,会出现如下错语信息: Device eth0 has MAC address 12:34:56:78:90:12, instead o

手动修改MAC地址可以突破IP-MAC绑定吗?

这个世界有矛就有盾,既然有IP-MAC绑定的技术,总归就有人会尝试去突破这个绑定.一般来说,无非是通过"修改IP地址"和"修改MAC地址"两种方式. 1. IP地址的修改很简单,在"本地连接"里面,修改TCP/IP的属性就可以,如图: 2. 大多数人不知道,其实电脑还可以修改"MAC地址".如下图: 3. 所以,要防止客户机通过修改IP地址和mac地址来突破IP-MAC绑定策略,不但要对绑定列表外的IP地址禁止其上网,而且要屏

macOS 自动修改mac地址脚本

介于 某公众号提供了通过修改mac地址来链接BUPT_mobile 的推送,上网上查了一下咋写脚本,实现一键修改mac地址的功能 网上有自动修改mac地址的程序,但是很坑爹的要收费,所以不如自力更生写一个靠谱的脚本 新建记事本文件(用xcode或者textedit都可以) 代码如下: /////// #!/usr/bin/expect -fset timeout 10set password "111111" //这里是你的密码spawn sudo ifconfig en0 lladd

vmware克隆centos修改mac地址

故障背景: 克隆完虚拟机后,连不上网,ifconfig查看后,发现网卡eth0没有启动,于是ifconfig eth0 up 启动eth0网卡,结果启动不了,进入/etc/sysconfig/network-scripts/ifcfg-eth0查看后,发现MAC地址和IP地址与原机相同,于是修改IP后service network restart 重启网络服务,发现提示提示 Bringing up interface eth0: Device eth0 does not seem to be p

Linux下永久修改MAC地址和ifconfig命令总结

1. 固定一个MAC地址,特别是在使用多个虚拟机的时候 linux环境下: 用root身份登录,在/etc/rc.d/rc.local里加上这三句 ifconfig eth0 down ifconfig eth0 hw ether 00:0C:18:EF:FF:ED ifconfig eth0 up 这样重新reboot后就不怕MAC复原了. 2. ifconfig命令(转载http://www.cnblogs.com/taobataoma/archive/2007/12/27/1016689.

unbntu修改mac地址

分享下Ubuntu下更改MAC地址的简单方法: 首先把网卡设备给 down 掉,否则会报告系统忙,无法更改. sudo ifconfig eth0 down 然后修改 MAC 地址,这一步较 Windows 中那图形化的修改要简单得多. sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE (你的MAC地址,随便啦,XXOO的,反正是0-9.A-F就行) 改好了在把网卡设备给 up 起来,然后为了保险起见可以再重启一下网络服务,赶紧继续看 F1 . sudo

Windows修改MAC地址

谈起mac地址我想大多数人都比较清楚,一旦我们设置了它就能在局域网防止别人盗用你的ip,不过如果mac地址被别人知道了就得修改一下,很多用户不知道Win7怎么改mac地址?其实这个问题很简单,不知道的朋友可以看看小编整理的Win7改mac地址方法. 方法/步骤: 1.打开开始菜单,选择控制面板. 2.打开控制面板项,选择网络和共享中心. 3.选择更改适配器设置. 4.选择本地要修改mac地址的网卡. 5.右键该网卡,选择属性. 6.从弹出的属性设置框中选择配置. 7.进行配置设置框,选择高级选项

dSploitzANTI渗透教程之修改MAC地址与Wifi监听器

dSploitzANTI渗透教程之修改MAC地址与Wifi监听器 dSploitzANTI基本配置 渗透测试是一种安全性较大的工作.所以,在实施渗透测试之前进行一些简单设置.如修改MAC地址.了解网络等.通过进行简单的配置,不仅可以保护自己的身份被暴漏,而且还可以提高渗透效率.因此,本章将介绍一些基本配置. 修改MAC地址 由于zANTI是一款渗透测试工具,所以在扫描时可能会被一些安全软件拦截,如360.因此,为了不暴漏自己的真实身份,用户可以在渗透之前修改自己的MAC地址.下面将介绍修改MAC