wifi存在4种认证和加密的方式
1,open
2,WEP
3,WPA
4,WPA2
 
工具
iw,可以用于open和WEP的认证和加密方式,
wpa_supplicant 上面四种加密认证方式都支持
dhcp:使得WIFI网卡动态获取IP
 
wireless.kernel.org
iw依赖于libnl库
 
iw list 获得所有设备的属性,例如band信息(2.4GHZ/5GHZ) 和802.11n的信息
iw dev wlan0 scan   扫描附近的wifi
iw dev wlan0 link  
iw wlan0 connect name 连接名字为name的开放wifi
ifconfig wlan0 ip  设置设备wlan0 ip地址
 
连接WEP加密认证的wifi:
iw wlan0 connect name keys d:0:0011223344   //d:default 默认密码   0: 第0个密码
 
iw wlan0 disconnect 断开wifi连接
 
目前一般的wifi都是用wpa/wpa2认证加密,所以一般使用wpa tool    (supplicant:请求者)
官网:wireless.kernel.org   
相关库:libpcap libdnet OpenSSL(libopenssl) GnuTLS inter TLSv1 implementation等  (make 〉tf.log 2>&1 将输出信息存入tf.log,将错误信息存入第一个参数即tf.log)。 即将所有log存在tf.log中
wpa_supplicant -B(后台作为服务进程) -c(配置文件) -i(指定需要用的网卡)
key_mgmt 认证加密方式
wpa_cli -i wlan0 status  查看wlan0的连接状态
 
key_mgmt=NONE //代表当前认证加密方式为Open/WEP
如果是WEP的话。有两种密码格式,一种5个字符的密码格式,一种为12个字符的密码格式
wep_key0 wep_key1分别指定这两种密码格式的密码
通过wep_tx_keyidx确定当前使用的是那种格式的密码
 
key_mgmt=WPA-PSK //WPA-EAP 指使用认证服务器,PSK指使用密码
proto=WPA
pairwise=TKIP
group=TKIP
psk="********"
 
key_mgmt=WPA-PSK 
proto=WPA2/RSN
pairwise=CCMP
group=CCMP
psk="********"
相关参数详解可以 查看帮助文档
 实际上,由于wpa配置文件默认参数已经配置
所以用户填充的时候,只需要填充ssid 和psk就可以了
ctrl_interface 指定一个目录,用于wpa_supplicant 和wpa_cli的socket通信。使得wpa_cli能够控制wpa_supplicant
 
wpa_cli的交互模式
wpa_cli
 
域名服务器DNS :resolv.conf 
nameserver 192.168.1.1
网关
route add default gw 192.168.1.1
 
DHCP 动态设置IP和路由
wpa_cli -a /sbin/wpa_action.sh -B   wpa_cli 自动将sh运行在后台
 
 
自动挂载,使用mdev.conf
mdev.conf的格式:
<device regex> <uid>:<gid> <octal permissions> [<@ | $ | *> <command>]
device regex:正则表达式,表示哪一个设备
uid:owner
gid:组id
ocal permissions:以八进制表示的属性
@:创建设备节点之后执行的命令
$:删除设备节点之后执行的命令
*:创建设备节点之后和删除设备节点之前 执行命令
command:要执行的命令
 
例如:
leds 0:0 777 * /bin/add_remove_led.sh
wlan0 0:0 777 * /sbin/audo_wifi.sh
 
wifi 的ap 功能:
hostapd工具使用 搭建无限热点:参考文章:
hostapd需要libnl库
配置文件:
hostapd.conf
内容:
interface=wlan0
driver=nl80211
ssid=
channel=
macaddr_acl=0/1/2/3
auth_algs=
wpa=
psk=
wpapassphrase=password
wpa_pairwise=TKIP//wpa1
rsn=pairwise=CCMP//wpa2
 
hostapd -B *.conf
需要再启动dhcpd 为连接自动分配IP
添加dhcpd的配置文件内容
subnet 192.168.1.0 netmask 255.255.255.0 {
    rang 192.168.1.10 192.168.1.100;
    option domain-name-servers 192.168.1.1;
    option routers 192.168.1.1;
}
启动dhcpd
ifconfig 192.168.1.1
dhcpd -cf *.conf
 
查看由多少个设备连接了这个ap
hostapd_cli