当前位置: 技术问答>linux和unix
linux下怎么提取本机真实mac地址??
来源: 互联网 发布时间:2016-02-29
本文导语: 本人目的是做个上网客户端,中间一步需要得到本机真实物理地址,也就是被改过之前刻在网卡上的原始物理地址 思路:1,用libpcap获取底层包 提取网卡信息 2,我觉得linux开机会将真实物理地址写入某个地方,然后...
本人目的是做个上网客户端,中间一步需要得到本机真实物理地址,也就是被改过之前刻在网卡上的原始物理地址
思路:1,用libpcap获取底层包 提取网卡信息
2,我觉得linux开机会将真实物理地址写入某个地方,然后才被修改过的物理地址覆盖,要能模拟出这个过程,也能提取出来
3,如果真实物理地址仍保存在内存,用某些高级命令可以吧??
对linux尚处于一知半解状态,望高手指教
思路:1,用libpcap获取底层包 提取网卡信息
2,我觉得linux开机会将真实物理地址写入某个地方,然后才被修改过的物理地址覆盖,要能模拟出这个过程,也能提取出来
3,如果真实物理地址仍保存在内存,用某些高级命令可以吧??
对linux尚处于一知半解状态,望高手指教
|
#include
#include
#include
#include
#include
#include
#include
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);
printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2xn",
(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;
}
#include
#include
#include
#include
#include
#include
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);
printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2xn",
(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;
}