曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5155|回复: 0
打印 上一主题 下一主题

怎么从命令行连接 WPA/WPA2 WIFI

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2014-10-7 11:28:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么从命令行连接 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 网络
iw wlan0 scan

如果你周边的 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 命令来使用上面的配置文件:
  1. # 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 已经连接正常。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-7 04:13 , Processed in 0.065446 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表