

The easiest way to find the MAC address on any Linux computer is to use the command “ip link”. But finding it for your computer might not be that easy, that is why I explain how to do this in this tutorial. 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.The MAC address is a unique identifier assigned to each network adapter that you can use to whitelist authorized devices or assign a specific IP address to each device. 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
