1 找到网卡的驱动源代码,并使用交叉编译器编译(通常是生成.ko文件,需要insmod);
2 下载wpa_supplicant源代码包并做适当的配置,之后使用交叉编译器编译,使用到的可执行文件只有wpa_supplicant;
3 根据用户输入的信息(主要是AP的ESSID/KEY)生成wpa_supplicant.conf,并启动wpa_supplicant(不过之前看到一款采用andriod系统的产品中,wpa_supplicant是作为deamon 进程存在的);
4 接下来要做的是:查询网卡是否associated到AP(这部分代码可以从wpa_cli中stole):status对应的代码;
5 关于发送命令给wpa_supplicant使其scan AP的功能代码,也从wpa_cli源代码中:scan_result对应的代码;
一旦查询到网卡associated 到AP,则物理层的操作就完成了,如果AP 被配置为DHCP server ,则
网卡可以使用busybox中的udhcpc -i 获取IP 地址。
6 向wpa_supplicant 发送退出命令的代码为wpa_cli的terminate命令对应的代码;
7 关于wpa_cli是如何同wpa_supplicant通信的呢?这涉及到Linux中的一种IPC 方式 :socket(PF_UNIX, SOCK_DGRAM, 0)。And if you want more info please RTFC!
阅读(1480) | 评论(0) | 转发(0) |