Rilevare MAC address

Autore: Fabio Di Matteo
Ultima revisione: 19/03/2008

Stampa sullo stdout il mac address di eth0.

#include <stdio.h>
 
#include <string.h> /* for strncpy */
 
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>
 
int
main()
{
 int fd;
 struct ifreq ifr;
 
 fd = socket(AF_INET, SOCK_DGRAM, 0);
 
 ifr.ifr_addr.sa_family = AF_INET;
 strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
 
 ioctl(fd, SIOCGIFHWADDR, &ifr);
 
 close(fd);
 
 /* display result */
 printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
         (unsigned char)ifr.ifr_hwaddr.sa_data[0],
         (unsigned char)ifr.ifr_hwaddr.sa_data[1],
         (unsigned char)ifr.ifr_hwaddr.sa_data[2],
         (unsigned char)ifr.ifr_hwaddr.sa_data[3],
         (unsigned char)ifr.ifr_hwaddr.sa_data[4],
         (unsigned char)ifr.ifr_hwaddr.sa_data[5]);
 
 return 0;
}