根据网卡获取MAC地址

The mac address or the hardware address or the ethernet address of an interface is a 48 bit number that looks like this : 00:1c:c0:f8:79:ee

The mac address of an interface can be found given its name. The function to use is ioctl.


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#include <stdio.h>    //printf

#include <string.h>   //strncpy

#include <sys/socket.h>

#include <sys/ioctl.h>

#include <net/if.h>   //ifreq

#include <unistd.h>   //close

 

int main()

{

    int fd;

    struct ifreq ifr;

    char *iface = "eth0";

    unsigned char *mac;

     

    fd = socket(AF_INET, SOCK_DGRAM, 0);

 

    ifr.ifr_addr.sa_family = AF_INET;

    strncpy(ifr.ifr_name , iface , IFNAMSIZ-1);

 

    ioctl(fd, SIOCGIFHWADDR, &ifr);

 

    close(fd);

     

    mac = (unsigned char *)ifr.ifr_hwaddr.sa_data;

     

    //display mac address

    printf("Mac : %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n" , mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);

 

    return 0;

}

  

Output

1 $ gcc interface_mac.c && ./a.out
2 Mac : 00:1c:c0:f8:79:ee
时间: 2024-09-19 11:42:28

根据网卡获取MAC地址的相关文章

VC获取物理网卡的MAC地址

获取网卡的MAC地址的方法很多,如:Netbios,SNMP,GetAdaptersInfo等.经过测试发现 Netbios 方法在网线拔出的情况下获取不到MAC,而 SNMP 方法有时会获取多个重复的网卡的MAC,试来试去还是 GetAdaptersInfo 方法比较好,网线拔出的情况下可以获取MAC,而且很准确,不会重复获取网卡. GetAdaptersInfo 方法也不是十全十美,也存在些问题: 1)如何区分物理网卡和虚拟网卡: 2)如何区分无线网卡和有线网卡: 3)"禁用"的网

php获取网卡的MAC地址支持WIN/LINUX系统_php技巧

复制代码 代码如下: <?php /** 获取网卡的MAC地址原码:目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址 **/ class GetMacAddr{ var $return_array = array(); // 返回带有MAC地址的字串数组 var $mac_addr; function GetMacAddr($os_type){ switch ( strtolower($os_type) ){ case "linux": $this->for

PHP获取MAC地址

  获取网卡的MAC地址原码;目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址 <?php   /**   获取网卡的MAC地址原码:目前支持WIN/LINUX系统   获取机器网卡的物理(MAC)地址   **/        class GetMacAddr{                var $return_array = array(); // 返回带有MAC地址的字串数组           var $mac_addr;                functio

PHP获取MAC地址的函数代码_php技巧

复制代码 代码如下: <?php /** 获取网卡的MAC地址原码:目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址 **/ class GetMacAddr{ var $return_array = array(); // 返回带有MAC地址的字串数组 var $mac_addr; function GetMacAddr($os_type){ switch ( strtolower($os_type) ){ case "linux": $this->for

C#取得设备网卡的MAC地址和硬盘的卷标号

硬盘 ( 一 ).说明取得设备网卡的MAC地址和硬盘的卷标号( 二 ).图片示例 ( 三 ).代码using System;using System.Management;namespace NetCard{/// <summary> /// 读取设备 /// </summary> public class run {private ManagementClass mc; private ManagementObjectCollection moc; private Managem

Java获取mac地址的方法_java

本文实例讲述了Java获取mac地址的方法.分享给大家供大家参考.具体如下: /* * GetMacAddress .java * * description:get Mac addreess * * @author hadeslee * * Created on 2007-9-27, 9:11:15 * * To change this template, choose Tools | Templates * and open the template in the editor. */ pa

javascript-前端能否获取mac地址或是唯一标识

问题描述 前端能否获取mac地址或是唯一标识 在投票过程中,想在前端做一层限制,如果处理. 能否通过js获取mac地址或是cookie等方式,与后端php做配合? 或者,有什么更好的方案. 解决方案 前端获取mac有什么用,刷票的程序可以伪造假的mac,后端则根本不能获取到mac 建议你绑定手机验证,一个手机一票.也可以绑定支付宝.信用卡.身份证等可以识别人的东西. 解决方案二: 首先,前端是不可能获取mac地址的. 一个折中的方案是,创建一个cookie,比如叫做voted,在后端的php中,

iOS7以下设备获取mac地址

注意,是iOS7以下的设备,直接上源码,获取mac地址都是为了唯一标识一个设备的,但iOS7设备的mac地址为 020000000000 MacAddress.h #include <sys/socket.h> #include <sys/sysctl.h> #include <net/if.h> #include <net/if_dl.h> NSString * macaddress(); MacAddress.m #import "MacAdd

Powershell小技巧之获取MAC地址_PowerShell

在Powershell中获取MAC地址不是很难.这里就有一种方法: 复制代码 代码如下: PS> getmac /FO CSV | ConvertFrom-Csv Physical Address                        Transport Name                         ----------------                        --------------                         5C-51-4F-6