


It acts like a unique ID used to communicate within a network. The MAC address or Media Access Control Address is a 12 digit hexadecimal number. With the help of this tutorial, you will be able to easily find out the MAC address of your Linux device by just running a simple C++ program. A crude but straightforward way to achieve this is to cast the whole array to an unsigned char*:Ĭonst unsigned char* mac=(unsigned char*)ifr.ifr_hwaddr.In this post, we will learn how to find the MAC address of a Linux Device by using a C++ program. It is presented by an array of char, which could be a signed type, so if you wish to interpret it in any way then it should first be converted to an unsigned representation. Having checked its type, the address can now be safely extracted from req.ifr_hwaddr.sa_data. Extract the hardware address from the ifreq structure Note that for some of these (such as ARPHRD_LOOPBACK) there is no hardware address as such. If (if_name_len, each beginning with the prefix ARPHRD_. Since this is a fixed-length buffer you should take care to ensure that the name does not cause an overrun: The ifreq structure should initially contain the name of the interface to be queried, which should be copied into the ifr_name field. The following header files will be needed:Ĭreate an ifreq structure for passing data in and out of ioctl Extract the hardware address from the ifreq structure.Check the type of the returned hardware address.Create an ifreq structure for passing data in and out of ioctl.

The method described here has five steps: On Linux-based systems the MAC address of an interface can be obtained using the ioctl command SIOCGIFHWADDR. The variable if_name points to a null-terminated string containing the name of the interface (for example, eth0). Suppose you wish to display the MAC address of an Ethernet interface. To get the MAC address of an Ethernet interface in C using the ioctl command SIOCGIFHWADDR Scenario
