1、认证和加密的概念
(1)概念
(2)阶段划分
初级版本:认证不需要密码, 传输不需要加密
认证不需要密码, 传输需要加密(用WEP算法)
认证需要密码(用WEP算法), 传输需要加密(用WEP算法,容易破解)
过渡版本:WPA 认证方式(802.1x),加密方式(TKIP,WEP)
认证方式(PSK),加密方式(TKIP,WEP)
终极版本: WPA2 认证方式(802.1x),加密方式CCMP(AES-CCMP),TKIP,WEP
认证方式(PSK),加密方式CCMP(AES-CCMP),TKIP,WEP
802.1x:手机连接到AP后,它的认证过程不是在AP上进行的,而是发送到一个服务器,由服务器进行认证,在大型公司里面,用一个服务器统一进行认证这样比较好,但对于家庭网络,这样做认证成本太高,因而用PSK替代
PSK;手机只需要连接AP,AP会提示手机输入密码,AP上事先设置密码,如果手机提供的密码和事先设置的密码一样,那么手机就可以使用无线网络。
(3)手机认证方式
以手机上WIFI热点为例,有4种常用的"认证/加密"
a. open
b. WEP
c. WPA(TKIP)
d. WPA2(AES)
2、编译、使用应用程序iw,wpa_supplicant,dhcp
(1)旧工具iwconfig, iw是它的替代者, 可用于这2种"认证/加密": open, WEP
//iw工具依赖于libnl库
tar xzf libnl-3.2.23.tar.gz
cd libnl-3.2.23/
//配置
./configure --host=arm-linux --prefix=$PWD/tmp
修改 lib/addr.c 添加宏(宏来自内核源码)
//编译
make
//安装
make install
//把头文件和库复制到工具链里面去
//把库的所有*so*复制到开发板所使用的网络文件系统的lib目录
把编译出来的头文件应该放入:(编译出来的文件都放在 libnl-3.2.23/tmp目录下)
include$ sudo cp * -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
cd tmp/include/libnl3
sudo cp netlink -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
把编译出来的库文件应该放入:(-d表示原来是链接文件也作为链接文件拷贝过去)
lib$ cp * -rf -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
把编译出来的库文件应该放入NFS文件系统的lib目录:lib$ cp *so* -d work/nfs_root/fs_mini_mdev_new/lib
//编译iw工具
tar xjf iw-3.11.tar.bz2
cd iw-3.11/
修改Makefile:
CC = "arm-linux-gcc"
NL3xFOUND := Y
#LIBS += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
#CFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
在info.c的代码前面添加
#define htole16(X) (((((uint16_t)(X)) << 8) | ((uint16_t)(X) >> 8)) & 0xffff)
编译并把iw拷贝到网络文件系统的bin目录下面去
使用:
iw list // 列出WIFI网卡的性能
ifconfig wlan0 up //启动网卡
iw dev wlan0 scan | grep dswei // 扫描WIFI AP. | grep dswei 表示在输出结果在那个搜索dswei
iw wlan0 connect dswei // 连接到WIFI AP:dswei (open)
iw wlan0 connect dswei keys d:0:baiwenwang123// 连接到WIFI AP:dswei (WEP)
d: default, 0: 第0个密码
ifconfig wlan0 192.168.1.55 //配置IP
ping 192.168.1.1
iw wlan0 disconnect //取消链接