使用wifi网卡笔记3---工具wpa_supplicant(STA模式)

时间:2024-05-31 21:54:43

1、  wpa_supplicant介绍

supplicant是恳求者的意思,是wpa的发起者,是发送认证请求的设备(手机),手机——AP——认证服务器可用于上述4种"认证/加密"


2、wpa_supplicant应用程序的编译与使用(阅读README文件)

(1) 先编译它的依赖libopenssl
tar xzf openssl-1.0.1d.tar.gz

cd openssl-1.0.1d/

第一类是全局性选项:

--openssldir=OPENSSLDIR
安装目录,默认是 /usr/local/ssl 。
--prefix=PREFIX
设置 lib include bin 目录的前缀,默认为 OPENSSLDIR 目录。
--install_prefix=DESTDIR
设置安装时以此目录作为"根"目录,通常用于打包,默认为空。
zlib
zlib-dynamic
no-zlib
使用静态的zlib压缩库、使用动态的zlib压缩库、不使用zlib压缩功能。
threads
no-threads
是否编译支持多线程的库。默认支持。
shared
no-shared
是否生成动态连接库。
asm
no-asm
是否在编译过程中使用汇编代码加快编译过程。
//配置  shared是指生成动态链接库,因为没加此项前生成的都是静态库文件。no-asm是指不使用里面的汇编代码,里面的汇编代码是给x86特别优化的./config shared no-asm --prefix=$PWD/tmp
修改Makefile:  (加上sudo权限修改,才能修改成功)
CC= arm-linux-gcc(交叉编译)
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
NM= arm-linux-nm
MAKEDEPPROG= arm-linux-gcc

//编译

make

//安装

make install
安装:(把编译处理的头文件和库文件复制到工具链那里)
把编译出来的头文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include


把编译出来的库文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib


把编译出来的库文件应该放入NFS文件系统的lib目录:
/work/nfs_root/fs_mini_mdev_new/lib




(2)要有一个配置文件.config
tar xzf wpa_supplicant-2.0.tar.gz 
cd wpa_supplicant-2.0/wpa_supplicant/
cp defconfig .config
修改.config加上一行: CONFIG_LIBNL32=y
修改Makefile:
CC=arm-linux-gcc(使用交叉编译)

//编译

make CC=arm-linux-gcc     (在我的编译环境下,要指定编译条件,才能编译成arm环境下的文件;韦老师的直接make的方法,在我的环境下行不通,直接使用make,在我的环境下会编译出PC上运行的文件!就算修改makefile文件也不行)

make(make log.txt 2>&1这句话是指编译输出的信息会存入log.txt,错误的信息也会存入第一个文件(log.txt))

//指定安装路径(DESTDIR=$PWD/tmp指目的目录等于当前目录下的tmp

make DESTDIR=$PWD/tmp install

把生成的应用程序拷贝到网络文件系统的bin目录下面

cp tmp/usr/local/sbin/ work/nfs_root/fs_mini_mdev_new/bin/

启动开发板 

3、使用:(查看wpa_supplicant的README文件

参数使用

使用wifi网卡笔记3---工具wpa_supplicant(STA模式)

这里-p是直接创建相关的目录,如目录run本来是没有的,但是要创建wap_supplicant,这样会先创建run目录,再在run目录下创建wpa_supplicant

mkdir -p /var/run/wpa_supplicant

注意:配置文件来源于/work/projects/wifi/wap_supplicant/wap_supplicant-2.0/wap_supplicant/examples里的.config文件,复制到网络文件系统的/etc目录下

① OPEN

//-B是指应用程序wpa_supplicant运行于后台,-c是指定配置文件, -i是指定网卡接口名

wpa_supplicant -B -c/etc/plaintext.conf -iwlan0

查看网卡wlan0的状态

wpa_cli -iwlan0 status // 查看状态

配置网卡IP

ifconfig wlan0 192.168.1.55

ping网关,若能ping通,表明配置网卡IP成功

ping 192.168.1.1


配置文件/etc/plaintext.conf内容为:

ctrl_interface=/var/run/wpa_supplicant

//network表示连接哪个网络

network={

        ssid="dswei" //AP名

        key_mgmt=NONE//指认证的方法

}


配置文件的写法是参考 wpa_supplicant-2.0/wpa_supplicant/examples文件夹下面的。
关于配置文件的详细解释,在wpa_supplicant-2.0/wpa_supplicant/ wpa_supplicant.conf 里 有详细介绍。


killall wap_supplicant  killall用于杀死指定名字的进程(kill processes by name)。

ifconfig wlan0 down 关闭网卡0

② WEP/WEP
wpa_supplicant -B -c/etc/wep.conf  -iwlan0
wpa_cli -iwlan0 status  // 查看状态
ifconfig wlan0 192.168.1.55
ping 192.168.1.1


配置文件/etc/wep.conf:

ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="dswei"
        key_mgmt=NONE //使用open或wep的认证方式
        wep_key0="baiwenwang123"  //密码(5个字符或13个字符)
        wep_tx_keyidx=0 //表示使用哪一个密码,现在使用第0个密码
}


③WPA(TKIP)
wpa_supplicant -B -c/etc/wpa-psk-tkip.conf  -iwlan0
wpa_cli -iwlan0 status  // 查看状态
ifconfig wlan0 192.168.1.55
ping 192.168.1.1


配置文件/etc/wpa-psk-tkip.conf
ctrl_interface=/var/run/wpa_supplicant  # 一个目录,用于wpa_supplicant和wpa_cli的socket通信,用作wap_cli查看应用程序wpa_supplicant状态
network={
        ssid="dswei"
        proto=WPA  # proto: list of accepted protocols, 可取WPA,RSN
                   # If not set, this defaults to: WPA RSN

        key_mgmt=WPA-PSK # 认证方式(PSK是指把密码放在无线AP那里)
                         # If not set, this defaults to: WPA-PSK WPA-EAP
        pairwise=TKIP    # If not set, this defaults to: CCMP TKIP
        group=TKIP       # If not set, this defaults to: CCMP TKIP WEP104 WEP40 
        psk="baiwenwang12"  #密码
}


④ WPA2(AES) 

配置文件来源:cp /etc/wpa-psk-tkip.conf  /etc/wpa_wpa2.conf

wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0
wpa_cli -iwlan0 status  // 查看状态
ifconfig wlan0 192.168.1.55
ping 192.168.1.1


配置文件/etc/wpa_wpa2.conf
ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="dswei"
        psk="baiwenwang123"
}


另:

wpa_cli可工作于"命令模式"和"交互模式"

命令模式:wpa_cli -iwlan0 status 

                 wpa_cli -iwlan0 scan_results 查看扫描的无线AP结果

交互模式:直接执行wpa_cli命令,可执行其他命令,输入quit命令退出


使用wifi网卡笔记3---工具wpa_supplicant(STA模式)
⑤ 配置文件/etc/wpa_wpa2.conf里设置多个network:
ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="dswei"
        psk="baiwenwang123"
}
network={
        ssid="Programer"
        psk="baiwenwang"
}


⑥ 访问外网:
man resolv.conf查看格式修改/etc/resolv.conf(在服务器上的)添加DNS:(DNS是域名服务器,把网址)
nameserver 192.168.1.1


设置网关:
route add default gw 192.168.1.1