如何用C语言获取网卡的mac地址

如何用C语言获取网卡的mac地址,第1张

为什么一定要用C语言呢?这个用C语言比较麻烦,需要的知识比较多,完全可以用更简单的办法啊。命令行上这样的命令“ipconfig -all | find "物理地址"”,可以很简单的就得到了。

如果是英文系统, 将“物理地址”换成“Physical Address”即可。

如果非的要用C语言,则可以先调用system函数, system("ipconfig -all | find \"物理地址\" > temptxt" ); 将mac地址信息存入临时文件temptxt;然后再从中提取。

局域网管理中经常遇到已知某个MAC地址,要查询其IP地址的情况,有如下几种方法:

方法一:用ARP -A 查询

这种方法只能查到与本机通讯过(20分钟内)的主机MAC地址和IP地址。可在远程主机所属网段中的任一台主机上运行此命令,这样可查出IP欺骗类病毒的主机。

方法二:用专用软件查,如nbtscan

命令方式是:nbtscan -r 网络号/掩码位,这种方法可查询某网段的所有IP与MAC对应关系,但装有防火墙的主机则禁止查询。

方法三: 如果所连交换机有网管功能,可用ARP SHOW 命令显示交换机的arp缓存信息,这种方式基本可查询所有的IP 与MAC地址,但只有网管才有这个权限。

方法四:用sniffer类的嗅探软件抓包分析,packet中一般都含用IP地址与MAC地址。

方法五:用solarwinds类软件中的MAC ADDRESS DISCOVERY查询,但这个工具好象不能跨网段查询。

两种方法设置:

1、编辑配置文件。

vi  /etc/sysconfig/network-scripts/ifcfg-eth0

如图所示:将BOOTPROTO=none改成BOOTPROTO=DHCP即可从网络设备自动获取IP地址等网络信息。

2、netconfig命令。

输入netconfig后将会出现下图所示,单击yes按钮。

选中”use dynamic ip configuration“点击OK即可。

最简单的 *** 作方法:

1、点击桌面开始、运行;

2、输入:CMD

3、输入:ipconfig /all

输入:ipconfig /all >D:\1txt 还可将信息保存到D盘命名为1txt的文件中。

注:网卡MAC地址即下图中的“物理地址”。

MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。

MAC地址是网卡决定的,是固定的。

查看方法:

(1)首先,找到手机的“设置”,进入设置后,选择“无线和网络”。

(2)选择“WLAN设置”进入即可。

(3)进入后,点击手机左下角的"菜单键",在d出的小菜单里选择“高级”。

(4)现在就可以看到安卓手机的mac地址了。

跨网段获取MAC地址方法如下:

protected void Page_Load(object sender, EventArgs e)

{

//ReadMSG();

if (!IsPostBack)

{

Label1Text =

"//客户端ip:" +

RequestServerVariablesGet("Remote_Addr")ToString() + "<br>" +

" //客户端主机名:" +

RequestServerVariablesGet("Remote_Host")ToString() + "<br>" +

"//客户端浏览器IE:" +

RequestBrowserBrowser + "<br>" +

"//客户端浏览器 版本号:" +

RequestBrowserMajorVersion + "<br>" +

"//客户端 *** 作系统:" +

RequestBrowserPlatform + "<br>" +

"//服务器ip:" +

RequestServerVariablesGet("Local_Addr")ToString() + "<br>" +

"//服务器名:" +

RequestServerVariablesGet("Server_Name")ToString() + "<br>";

string stringMAC = "";

string stringIP = "";

ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");

ManagementObjectCollection MOC = MCGetInstances();

foreach (ManagementObject MO in MOC)

{

if ((bool)MO["IPEnabled"] == true)

{

stringMAC += MO["MACAddress"]ToString(); //获取网卡的地址

string[] IPAddresses = (string[])MO["IPAddress"]; //获取本地的IP地址

if (IPAddressesLength > 0)

stringIP = IPAddresses[0];

Label1Text += "<br>MAC:" + stringMAC + "/ IP:" + stringIP;

if (stringIP == "192168145")

Label1Text += "<br>I get you :192168145<br>";

}

}

//在页面上打印出客户端的网卡物理地址(MAC)

//ResponseWrite(thisGetMac(RequestUserHostAddressToString())+"<br>");

GetInfo();

}

}

//获取cpu序列号,硬盘ID,网卡MAC地址

private void GetInfo()

{

string cpuInfo = "";//cpu序列号

ManagementClass cimobject = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = cimobjectGetInstances();

foreach (ManagementObject mo in moc)

{

cpuInfo = moProperties["ProcessorId"]ValueToString();

Label1Text += "cpu序列号:" + cpuInfoToString();

}

//获取硬盘ID

String HDid;

ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");

ManagementObjectCollection moc1 = cimobject1GetInstances();

foreach (ManagementObject mo in moc1)

{

HDid = (string)moProperties["Model"]Value;

Label1Text += "硬盘序列号:" + HDidToString();

}

}

//protected void Button1_Click(object sender, EventArgs e)

//{

// try

// {

// FileDelete(@"D:\htmlhtml");

// }

// catch (Exception e2)

// {

// ResponseWrite(e2Message);

// }

// ResponseWrite("Delete Successed!");

//}

//获取远程客户端的网卡物理地址(MAC)

public string GetMac(string IP) //para IP is the client's IP

{

string dirResults = "";

ProcessStartInfo psi = new ProcessStartInfo();

Process proc = new Process();

psiFileName = "nbtstat";

psiRedirectStandardInput = false;

psiRedirectStandardOutput = true;

psiArguments = "-A " + IP;

psiUseShellExecute = false;

proc = ProcessStart(psi);

dirResults = procStandardOutputReadToEnd();

procWaitForExit();

dirResults = dirResultsReplace("\r", "")Replace("\n", "")Replace("\t", "");

Regex reg = new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(<key>(()))__MAC", RegexOptionsIgnoreCase | RegexOptionsCompiled);

Match mc = regMatch(dirResults + "__MAC");

if (mcSuccess)

{

return mcGroups["key"]Value;

}

else

{

reg = new Regex("Host not found", RegexOptionsIgnoreCase | RegexOptionsCompiled);

mc = regMatch(dirResults);

if (mcSuccess)

{

return "Host not found!";

}

else

{

return "";

}

}

}

以上就是关于如何用C语言获取网卡的mac地址全部的内容,包括:如何用C语言获取网卡的mac地址、已知对方的mac地址,如何获取对方的ip地址和计算机名、linux下怎样获取网络设备的mac地址,ip地址等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9443131.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存