|
怎么从命令行连接 WPA/WPA2 的 WIFI?
先说明一点,iwconfig 并不适合连接 WPA/WPA2 的 WIFI,而适合 WEP 或开放式的 WIFI 。尽管在图形界面下,使用 Network-Mannager 是很容易连接到一个 WPA/WPA2 的 WIFI 的;但在某些情况下,你确实会使用到命令行,而不是去使用图形界面。
下面的介绍,会涉及到几个命令,分别对其说明:
1. iw 命令检查无线网卡
iw 命令是处理 WIFI 相关事务的一个基本工具,比如它可以找到可以连接 WIFI 的无线网卡设备名,扫描 AP 。当然,iwlist 也可以扫描到 AP (iwlist wlan0 scanning)。
直接运行 iw,可以看到无线网卡的设备名:
# iw dev
phy#1
Interface wlan0
ifindex 4
type managed
其中,pyh#1 表明系统有一个无线网卡,且为 pyh#1,#1 是个编号。
设备名为 wlan0。
type 是指无线网卡的操作模式,managed 表示该设备是一个连接到 AP 的 WIFI 客户端。
2. 检查无线网卡是不是已经起来了,使用 ip 命令:
# ip link show wlan0
4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether 00:f1:40:40:06:26 brd ff:ff:ff:ff:ff:ff
其中 link 是一个 ip 命令的操作目标,它操作网络设备。show wlan0 显示出 wlan0 的信息。注意,上面的 UP,表示无线网卡已经起来了。假如使用 ifconfig 关掉 wlan0,就可以看到 UP 标识已经没有了 :# ifconfig wlan0 down
# ip link show wlan0
4: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether 00:f1:40:40:06:26 brd ff:ff:ff:ff:ff:ff
我们仍然使用 ip 命令将 wlan0 带醒:
# ip link set wlan0 up
# ip link show wlan0
4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether 00:f1:40:40:06:26 brd ff:ff:ff:ff:ff:ff
现在 wlan0 已经 UP 了。
3. 使用 iw 检查无线连接状态:
# iw wlan0 link
Not connected.
还没有建立连接。
4. 扫描 WIFI 网络:
如果你周边的 WIFI 热点非常多,那么会输出一长串的结果,如下所示:
# iw wlan0 scan
BSS c8:e7:d8:00:18:d0 (on wlan0)
TSF: 161672233865 usec (1d, 20:54:32)
freq: 2437
beacon interval: 100
capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)
signal: -19.00 dBm
last seen: 2840 ms ago
SSID: rztec
Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0
DS Parameter set: channel 6
Country: US Environment: Indoor/Outdoor
Channels [1 - 11] @ 30 dBm
ERP: <no flags>
Extended supported rates: 24.0 36.0 48.0 54.0
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC (0x000c)
WPA: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
由上可见,SSID 为 rztec ;安全协议为 RSN,也就是通常所说的 WPA2 。
5. 连接到 WPA/WPA2 WIFI 网络
连接到 WPA/WPA2 的工具为 wpa_supplicant。首先,需要为 wpa_supplicant 生成一个包含了预共享密钥(PSK, pre-shared key)的文件,这里使用 wpa_passphrase 命令:
# wpa_passphrase rztec >> /etc/wpa_supplicant.conf
rztec.12 #输出 WIFI 密码
root@kali:~# cat /etc/wpa_supplicant.conf
# reading passphrase from stdin
network={
ssid="rztec"
#psk="rztec.12"
psk=ba4e9c8c83e0c1531accf56d71bd8f59409da7653161fb871a85c252c88bdf3d
}
接下来,就可以使用 wpa_supplicant 命令来使用上面的配置文件:
- # wpa_supplicant -B -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf
复制代码
在上面命令中,
-B 表示让 wpa_supplicant 运行在后台。
-D 表示指定一个无线网卡驱动,一般情况下可以先试 wext,如果出现 ioctl[SIOCSIWENCODEEXT]: Invalid argument 的错误提示,那么应该考虑更换驱动,比如我采用的是 3070 芯片的网卡,因此使用了 nl80211 。
-i 指定无线网卡接口。
-c 后接刚才生成的配置文件。
使用 iw 命令确定一下是否连接成功:
# iw wlan0 link
Connected to c8:e7:d8:00:18:d0 (on wlan0)
SSID: rztec
freq: 2437
RX: 5962 bytes (57 packets)
TX: 1159 bytes (29 packets)
signal: -19 dBm
tx bitrate: 58.5 MBit/s MCS 6
bss flags: short-preamble short-slot-time
dtim period: 0
beacon int: 100
到这里,如果无线 AP 是 DHCP 分配的,那么已经自动分配到了 IP,可以用 ifconfig 命令来查看。如若还没分配到 IP ,那么可以尝试 dhclient wlan0 命令来要求分配一个 IP 。
再用 ip 命令来查看:
# ip addr show wlan0
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:f1:40:40:06:26 brd ff:ff:ff:ff:ff:ff
inet 192.168.7.220/24 brd 192.168.7.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 fd3e:92ad:2e16:0:2f1:40ff:fe40:626/64 scope global dynamic
valid_lft 6963sec preferred_lft 1563sec
inet6 fe80::2f1:40ff:fe40:626/64 scope link
valid_lft forever preferred_lft forever
也显示连接上了。
ping 一下谷歌:
# ping www.google.com
PING www.google.com (173.194.127.145) 56(84) bytes of data.
64 bytes from hkg03s13-in-f17.1e100.net (173.194.127.145): icmp_req=1 ttl=54 time=75.2 ms
也已经通,说明 WIFI 已经连接正常。
|
|