ioctl函数获取/修改mac地址(C语言实现)
直接上代码吧,亲测可用
#include <stdio.h> /* for fprintf etc */
#include <net/if.h> /* for struct ifreq */
#include <net/if_arp.h> /* for ARPHRD_ETHER */
#include <sys/ioctl.h> /* for IOCTL's */
#include <sys/socket.h> /* for socket(2) */
//#include <unistd.h> /* for close */int main(int argc, const char *argv[]){int sockfd;struct ifreq req;char buf[32] = {0};char buf_mac[32] = {0x00, 0x04, 0x88, 0x00, 0x50, 0x15}; /* 这里为需要设置的 mac 目标值 */int i = 0;if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {perror("fail to create socket ..!");exit(1);}strcpy(req.ifr_ifrn.ifrn_name, "en1");/* 获得en1的MAC地址 */if (ioctl(sockfd, SIOCGIFHWADDR, &req) < 0) {perror("fail to ioctl ");close(sockfd);exit(1);}memcpy(buf, req.ifr_ifru.ifru_hwaddr.sa_data, 6);for (i = 0; i < 6; i++)printf("%02x:", buf[i] & 0xff);puts("\b ");//后输出不带":"memcpy(req.ifr_ifru.ifru_hwaddr.sa_data, buf_mac, 6);
// strncpy(req.ifr_ifru.ifru_hwaddr.sa_data, buf_mac, 6);/* *设置en1的MAC地址 */if (ioctl(sockfd, SIOCSIFHWADDR, &req) < 0) {perror("fail to ioctl ");close(sockfd);exit(1);}/* *获得en1的MAC地址 */if (ioctl(sockfd, SIOCGIFHWADDR, &req) < 0) {perror("fail to ioctl ");close(sockfd);exit(1);}close(sockfd);memcpy(buf, req.ifr_ifru.ifru_hwaddr.sa_data, 6);//strncpy(buf, req.ifr_ifru.ifru_hwaddr.sa_data, 6);/* *按照xx:xx:xx:xx:xx:xx的格式显示 */for (i = 0; i < 6; i++)printf("%02x:", buf[i] & 0xff);puts("\b ");//后输出不带":"return 0;
}
ioctl函数获取/修改mac地址(C语言实现)相关推荐
- R语言使用basename函数获取数据链接地址中的文件名称(removes all of the path up to and including the last path separator )
R语言使用basename函数获取数据链接地址中的文件名称(removes all of the path up to and including the last path separator (i ...
- ioctl(sock, SIOCGIFHWADDR, ifr)获取网卡mac地址
ioctl(sock, SIOCGIFHWADDR, &ifr) 获取网卡mac地址 ioctl(sock, SIOCGIFINDEX, &ifr)获取网卡接口地址 为什么我bind时 ...
- 【瑞芯微Rockchip Linux平台】SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息
[瑞芯微Rockchip Linux平台]SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息 1. 获取本机的蓝牙mac地址 __get_bt_mac_addr() ...
- 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
开发语言:C/C++ 支持平台:Windows 实现功能: 通过WMI获取网卡MAC地址.硬盘序列号.主板序列号.CPU ID.BIOS序列号 下载地址: WMI_DeviceQuery.zip 版本 ...
- python修改mac地址_python利用_winreg模块制作MAC地址修改工具
通过百度搜索知道,xp下修改MAC地址的方法主要有两个,一种是通过配置本地链接属性来实现,这种方法不适合用程序来完成,另一种是通过修改注册表来完成,本程序主要是利用了这种方法. 具体方法:Window ...
- Linux Intel网卡IGB驱动修改mac地址
实然心血来潮,想研究一下Intel网卡mac地址是怎么设置的.本文使用IGB驱动,适合于i211等网卡. MAC地址对于网络来说十分重要,观察过几个网络驱动,发现在Linux内核中,MAC来龙去脉无非 ...
- linux内核根据skb获取目的mac地址
linux内核根据skb获取目的mac地址 工作笔记 工作笔记 linux编程 直接通过skb里面的信息获取mac,如下 1.struct ethhdr *eth_hdr = (struct ethh ...
- 网关屏蔽mac地址,linux下修改mac地址方法
局域网里有一台机器,同一网段内的机器,只有部分能够ping通,也无法ping通网关,现象很奇怪,尝试过修改IP,重启网络服务,都无法解决问题. 最后怀疑是不是网关将该机器mac地址给屏蔽掉了,因此修改 ...
- Linux脚本方式修改Mac地址,两种修改Linux系统中MAC地址的方法
我们先查找MAC地址和网络接口,我们来了解一下Linux中网卡的一些细节.用这个命令来获取网络接口的详细信息: ip link show 在输出中,您将看到一些详细信息以及MAC地址: 1: lo:m ...
最新文章
- Markdown = PPT ?这个工具给力!
- 进阶:秒杀系统是如何设计的?
- iphone开发基础:loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法
- CPU核数跟多线程的关系
- arXiv 2019 《DCA: Diversified Co-Attention towards Informative Live Video Commenting》论文笔记
- 怎样准备阿里技术面试_如何准备技术面试
- android 应用专属目录,获取Android应用专属缓存存储目录的实例
- Qt文档阅读笔记-Qt工作笔记-QTableWidget::selectedItems()官方解析与实例(如何进行多选)
- 爬虫教程 python3_【Python3爬虫】Appium入门教程
- python列表知识点_列表知识点整理
- 三大系列总结(offset client scroll)
- SQL-sqlHelper001
- java 设置请求超时时间_java设置http请求超时时间
- IOS Andriod 抖音无水印下载和快手无水印下载
- 仿微信实现拍摄视频,实现点击无声,自动录制
- 创业感悟:不忘初心,方得始终
- Maya角色UV展平技巧笔记
- PHP+ mysql实现注册登录功能
- Code review是个数学问题:从二向箔说起
- 渐变折射率(GRIN)介质的构建与建模
热门文章
- linux系统配置Vim命令,vim配置 LINUX操作系统VIM的安装和配置
- 新型智能健身房如何破局重新定义健身行业
- React全家桶学习
- Python 字典(Dictionary) setdefault()方法
- 【死磕DDD】领域驱动架构设计核心概念
- python好找工作吗2017-大四应届毕业生,学了两个月Python,找工作感觉好难啊?...
- HDU2097:Sky数
- kurento6.9.0 client java的使用方法(kurento-hello-world)
- 如何去除QTableWidget表格选中Item时的虚线框?
- oracle设置时间格式