说明

应该是2016年之前的记录,之前没有写文档记录的习惯,都是随手记录的txt文件,所以没有图片、格式等。甚至现在看来有些地方逻辑不通(可能还因为年少轻狂,有些偏颇的话语),但是这些与现在的我不重要了,所以也不打算再复现、推理,重新编辑等,仅仅是在旧硬盘中发现,删除之前觉得可能还有点价值,记录下来吧。

参考find5的部分源码https://github.com/CyanogenMod/android_device_oppo_apq8064-common/tree/cm-11.0/wcnss_oppo

大概原理就是从自己指定的文件中获取mac地址,E:\cm11.0\hardware\qcom\wlan\wcnss-service目录下是wcnss-service这个可执行文件
在init.aries.rc中
service wcnss-service /system/bin/wcnss_service
class main
user system
group system wifi radio
oneshot

wcnss_oppo_client.c其实就是wcnss_qmi_client.c的覆盖,生成的动态库libwcnss_qmi中wcnss_qmi_get_wlan_address函数就可以
修改mac地址。
libqminvapi这个库文件是小米官方库,有个qmi_nv_read_wlan_mac(unsigned char** mac);函数获取真实的mac地址。

Android.mk和wcnss_oppo_client.c内容如下。

1:Android.mk
ifeq ( ( B O A R D V E N D O R ) , o p p o ) i f e q ( (BOARD_VENDOR),oppo) ifeq ( (BOARDV​ENDOR),oppo)ifeq((TARGET_BOARD_PLATFORM),msm8960)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := wcnss_oppo_client.c

LOCAL_C_INCLUDES += hardware/qcom/wlan/wcnss_service
LOCAL_CFLAGS += -Wall

LOCAL_SHARED_LIBRARIES := libc libcutils libutils liblog

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libwcnss_qmi

include $(BUILD_SHARED_LIBRARY)

endif
endif


2:wcnss_oppo_client.c

//#define LOG_NDEBUG 0

#define LOG_TAG “wcnss_oppo”

#define SUCCESS 0
#define FAILED -1

#define MAC_ADDR_PATH “/data/opponvitems/4678”
#define MAC_ADDR_SIZE 6
#define MAX_WAIT_COUNT 5
#define WAIT_TIME 500000

#include <cutils/log.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>

int wcnss_init_qmi(void)
{
/* empty */
return SUCCESS;
}

int wcnss_qmi_get_wlan_address(unsigned char *pBdAddr)
{
int fd, ret, i;
char buf[MAC_ADDR_SIZE];
struct stat mac_stat;

do {usleep(WAIT_TIME);
} while (stat(MAC_ADDR_PATH, &mac_stat) && i < MAX_WAIT_COUNT);if (i == MAX_WAIT_COUNT) {ALOGE("Failed to obtain MAC address from NV\n");return FAILED;
}fd = open(MAC_ADDR_PATH, O_RDONLY);
if (fd < 0) {ALOGE("Failure opening MAC path: %d\n", errno);return FAILED;
}ret = read(fd, buf, MAC_ADDR_SIZE);
if (ret < 0) {ALOGE("Failure to read MAC data: %d\n", errno);close(fd);return FAILED;
}/* swap bytes */
for (i = 0; i < MAC_ADDR_SIZE; i++) {pBdAddr[i] = buf[MAC_ADDR_SIZE - 1 - i];
}ALOGI("Found MAC address: %02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx\n",pBdAddr[0],pBdAddr[1],pBdAddr[2],pBdAddr[3],pBdAddr[4],pBdAddr[5]);close(fd);return SUCCESS;

}

void wcnss_qmi_deinit(void)
{
/* empty */
}


cm11修改wifi_mac地址相关推荐

  1. 税友报税软件让修改服务器地址,税友报税软件让修改服务器地址

    税友报税软件让修改服务器地址 内容精选 换一换 目前,支持通过以下2种方式来设置日志级别:通过执行命令来设置日志级别.您可以用adc进程运行用户登录开发环境,执行全局级或模块级的日志级别设置命令.在开 ...

  2. Linux下修改MAC地址总结

    偶尔会用到这个知识点,久了不用又会记不住,所以记之,方便以后查询. Linux下修改MAC地址 方法一: 1.关闭网卡设备 ifconfig eth0 down 2.修改MAC地址 ifconfig ...

  3. t6文件服务器怎么设置,t6 修改文件服务器地址

    t6 修改文件服务器地址 内容精选 换一换 通过云服务器或者外部镜像文件创建私有镜像时,如果云服务器或镜像文件所在虚拟机的网络配置是静态IP地址时,您需要修改网卡属性为DHCP,以使私有镜像发放的新云 ...

  4. Ubuntu修改IP地址和MAC地址

    Ubuntu修改IP地址和MAC地址 修改IP和MAC地址以及网关的方法:>  > >  >  sudo ifconfig eth0 192.168.1.2 netmask 2 ...

  5. Linux 修改 IP地址 和 网关

    修改IP地址和网关是很常见的操作,在做相关实验的时候,如果没有设置好,会带来很多不必要的麻烦.. 1. 修改IP地址 vi /etc/sysconfig/network-scripts/ifcfg-e ...

  6. Linux与win2003下修改mac地址方法

    一.在Linux下修改MAC地址方法如下: 方法1:在文件"/etc/rc.local"中加入    ifconfig eth0 hw ether 00:D0:59:0D:9B:4 ...

  7. QNX设置开机启动命令来修改IP地址

    2019独角兽企业重金招聘Python工程师标准>>> 在控制台使用命令行修改QNX系统IP地址: # ifconfig en0 192.168.0.156 查询IP地址: # if ...

  8. redhat7.4启动telnet和SSH服务,修改IP地址

    今天去机房,开通服务器的telnet服务. 首先查了下本地有没有telnet服务. rpm –qa |grep telnet  没有输出,说明没有telnet服务,需要装telnet.telnet-s ...

  9. 无盘服务器怎么修改ip,怎么进入无盘服务器修改IP地址呢

    怎么进入无盘服务器修改IP地址呢 内容精选 换一换 在弹性云服务器上安装完成后输入公网IP,无法连接目的虚拟机,端口无法访问工具.源端网络未连通目的端.目的端安全组未开放8084端口.目的端网络ACL ...

最新文章

  1. qgis修复拓扑错误_深度 | QGIS开发与发布规则解析
  2. Java项目:网上家具商城平台设计和实现(java+springboot+mysql+ssm)
  3. linux设备驱动学习笔记(1)
  4. 关于因为该列没有包含在聚合函数或 GROUP BY 子句中
  5. python对文件的读操作方法有哪些-Python文件操作实例大全
  6. dhcpd中的mac
  7. 传智播客 C/C++学习笔记 内存四区模型
  8. CS231n李飞飞计算机视觉 迁移学习之物体定位与检测上
  9. python爬虫之数据提取Xpath(爬取起点中文网案例)
  10. 蓝桥杯 算法提高 盾神与积木游戏
  11. 【超超超easy】5分钟:自制酷炫猫咪词云图,会点鼠标即可。
  12. OSPF- P2P网络、NBMA网络和P2MP网络
  13. 梦幻诛仙linux纯端架设教程,梦幻诛仙 一键端搭建iOS安卓双端+完整后台源码+各种工具附带视频架设教程...
  14. React学习笔记(二) | 受控组件
  15. Dilated Convolutions
  16. 知物由学 | “群控软件”助长黑灰产套利的零和游戏,硬核技术打击隐秘的不公
  17. 志强系列的服务器能吃鸡吗,英特尔 xeon e5-2660能玩绝地求生吗
  18. 理解和应用持续集成-Tekton
  19. Linux 指令:怎样从文件中找到重复行?
  20. 数字校园php,利用PHP技术加强高校数字化校园的信息资源建设

热门文章

  1. 直播回放:快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
  2. 小狗钱钱-博多·舍费尔
  3. 学习SQLSugar,分享给更多人收益
  4. 人脑与计算机之间有什么联系,再谈人脑与电脑的关系
  5. 【游戏面包屑】时间回溯·逆流吧
  6. 离散信号内插和抽取Matlab,抽取与内插的频谱分析
  7. 20110822炒股日记--进入筑底阶段
  8. 荣耀开发者关怀月邂逅1024程序员节,请开发者喝咖啡
  9. SQL Server数据并发处理
  10. 一个编程A白的真实独白