WPA 全名为 Wi-Fi Protected Access,有WPA 和 WPA2两个标准,是一种保护无线电脑网络(Wi-Fi)安全的系统,它是应研究者在前一代的系统有线等效加密(WEP)中找到的几个严重的弱点而产生的。
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL。 SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。
协议当我们移植好USB-Wifi驱动后,还需要移植wpa_supplicant,移植所需要的源码在\Cortex-A9\移植部分\Wifi\wifi加密源码目录中
1.Openssl移植
将\Cortex-A9\移植部分\Wifi\wifi加密源码目录中openssl-0.9.8e.tar和wpa_supplicant-0.7.2.tar拷贝到Ubuntu工作目录(此文档以/home/linux/work/4412为工作目录)
执行以下命令解压源码
tar xvf wpa_supplicant-0.7.2.tar.gz
tar xvf openssl-0.9.8e.tar.gz
解压完后可以看到以下两个目录
openssl-0.9.8e和wpa_supplicant-0.7.2
1.1 安装补丁
penssl源码编译需要打wpa_supplicant提供的补丁,我们选择的openssl版本为openssl-0.9.8e所以我们需要wpa_supplicant-0.7.2/patches/openssl-0.9.8e-tls-extensions.patch拷贝到openssl-0.9.8e源码目录下。
执行命令
cp wpa_supplicant-0.7.2/patches/openssl-0.9.8e-tls-extensions.patch ./openssl-0.9.8e
进入openssl-0.9.8目录开始打补丁,执行以下命令
cd openssl-0.9.8e
patch -p1 < openssl-0.9.8e-tls-extensions.patch
1.2配置编译安装
在工作目录/home/linux/work/4412里创建一个新的目录wifi
mkdir /home/linux/work/4412/wifi
配置相关选项,在openssl-0.9.8目录中执行以下命令
./Configure linux-elf-arm -DL_EDNIAN linux:'arm-cortex_a8-linux-gnueabi-gcc' shared
--prefix=/home/linux/work/4412/wifi/
如图所示
配置命令执行后,开始编译安装,执行以下命令
make
make install
以上步骤成功后,可以在wifi目录中看到如图所示的新增目录
2.移植wpa_supplicant
进入wpa_supplicant-0.7.2/wpa_supplicant目录
cd /home/linux/work/4412/wpa_supplicant-0.7.2/wpa_supplicant
2.1修改Makefile
修改第2行中的CC=gcc 为 CC=arm-cortex_a8-linux-gnueabi-gcc,并且注销第1行和第3行。如下图所示
修改为
在
CFLAGS += -I../src
CFLAGS += -I../src/utils
下添加:
CFLAGS += -I/home/linux/work/4412/wifi/include/
修改
LIBS += -lssl
为
LIBS += -lssl -L/home/linux/work/4412/wifi/lib/
修改
LIBS_p += -lcrypto
为
LIBS_p += -lcrypto -L/home/linux/work/4412/wifi/lib/
2.2编译
在目录/home/linux/work/4412/wpa_supplicant-0.7.2/wpa_supplicant下执行命令
cp defconfig .config
make
编译完后可以再目录中发现以下两个文件wpa_supplicant和wpa_cli
将wpa_supplicant和wpa_cli拷贝到开发板根文件系统的/bin目录中(注意:此文件系统是开发板的根文件系统)
3.测试
3.1添加文件resolv.conf
在开发板根文件系统的/etc目录中添加文件resolv.conf
其内容如下
# Generated by NetworkManager
nameserver 202.96.64.68
3.2添加文件wpa-psk-tkip.conf
在开发板根文件系统的/etc目录中添加配置文件wpa-psk-tkip.conf
内容如下
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="XXXX" # XXXX为无线路由的ssid
key_mgmt=WPA-PSK
proto=WPA
pairwise=CCMP
group=CCMP
psk="XXXXXXXX" # XXXXXXXX为对应的无线路由密码
}
3.3创建目录/var/run/wpa_supplicant
在开发板根文件系统中穿件目录/var/run/wpa_supplicant,执行以下命令
mkdir /var/run/wpa_supplicant -p
3.4启动开发板测试
等开发板内核启动完成后,在终端上执行以下命令
注意:以下步骤都是在USB-wifi网卡驱动安装成功后才能正常测试,USB-Wifi驱动安装请参考《FS_4412平台USB-Wifi驱动移植参考文档》文档
配置网卡ip,执行以下命令
ifconfig wlan0 192.168.1.200 //注意:配置的ip网段要和路由器的网段一致
配置默认网关
route add default gw 192.168.1.1
启动wpa_supplicant连接无线网络
wpa_supplicant -B -i wlan0 -c /etc/wpa-psk-tkip.conf
查看连接状态
wpa_cli status