34 #include <netinet/in.h>
36 #include <sys/ioctl.h>
45 return "00:00:00:00:00:00";
54 int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
57 return "00:00:00:00:00:00";
63 ifc.ifc_len =
sizeof(buf);
65 if (ioctl(sock, SIOCGIFCONF, &ifc) == -1)
67 return "00:00:00:00:00:00";
70 struct ifreq* it = ifc.ifc_req;
71 const struct ifreq*
const end = it + (ifc.ifc_len /
sizeof(
struct ifreq));
73 for (; it != end; ++it)
75 strcpy(ifr.ifr_name, it->ifr_name);
76 if (ioctl(sock, SIOCGIFFLAGS, &ifr) == 0)
78 if (!(ifr.ifr_flags & IFF_LOOPBACK))
80 if (ioctl(sock, SIOCGIFHWADDR, &ifr) == 0)
95 sprintf(temp,
"%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",
96 (
unsigned char)ifr.ifr_hwaddr.sa_data[0],
97 (
unsigned char)ifr.ifr_hwaddr.sa_data[1],
98 (
unsigned char)ifr.ifr_hwaddr.sa_data[2],
99 (
unsigned char)ifr.ifr_hwaddr.sa_data[3],
100 (
unsigned char)ifr.ifr_hwaddr.sa_data[4],
101 (
unsigned char)ifr.ifr_hwaddr.sa_data[5]);
113 #include <winsock2.h>
114 #include <iphlpapi.h>
115 #include <Winerror.h>
121 IP_ADAPTER_INFO AdapterInfo[128];
122 DWORD dwBufLen =
sizeof(AdapterInfo);
123 DWORD dwStatus = GetAdaptersInfo(AdapterInfo, &dwBufLen);
126 if (dwStatus != ERROR_SUCCESS)
128 return "00:00:00:00:00:00";
131 PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
136 if (pAdapterInfo->Type == MIB_IF_TYPE_ETHERNET)
138 sprintf_s(szBuffer,
sizeof(szBuffer),
"%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",
139 pAdapterInfo->Address[0],
140 pAdapterInfo->Address[1],
141 pAdapterInfo->Address[2],
142 pAdapterInfo->Address[3],
143 pAdapterInfo->Address[4],
144 pAdapterInfo->Address[5]);
150 pAdapterInfo = pAdapterInfo->Next;
153 return "00:00:00:00:00:00";
164 std::string mac =
"00:00:00:00:00:00";