AP端:
STA端:
1.ip addr 查看是否连接,也可查看网卡是否启动和网卡名
2.将wifi名和密码写入配置
wpa_passphrase wifi名 wifi密码 >> /etc/wpa_supplicant/wpa_supplicant.conf
3.加载配置文件
wpa_supplicant -i 网卡名 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
4.自动分配ip地址,并检验是否成功分配到ip
dhclient 网卡名
ip addr
ps -aux | grep wpa
-
$ wpa_cli -i wlan1 scan // 搜索附近wifi网络
-
$ wpa_cli -i wlan1 scan_result // 打印搜索wifi网络结果
-
$ wpa_cli -i wlan1 add_network // 添加一个网络连接
-
$ wpa_cli -i wlan1 set_network 0 ssid '"name"'
-
$ wpa_cli -i wlan1 set_network 0 psk '"password"'
-
$ wpa_cli -i wlan1 enable_network 0
- $ wpa_cli -i wlan1 set_network 0 ssid '"name"'
- $ wpa_cli -i wlan1 set_network 0 key_mgmt NONE
- $ wpa_cli -i wlan1 set_network 0 wep_key0 '"password"'
- $ wpa_cli -i wlan1 enable_network 0
wpa_cli -i wlan1 save_config
/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
update_config=1
country=NL
bss_expiration_age=250
network={
ssid="xxxxxxxxxxx"
psk="xxxxxxxxxxx"
priority=4
disabled=1
}
连接:nmcli device wifi connect wifiname password wifipasswd 删除:nmcli con del wifiname 启动:nmcli connection up wifiname 关闭:nmcli connection down wifiname
nmcli c modify "NAME" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "PASSWORD" 启动wifi:nmcli c up "NAME" 关闭wifi:nmcli c down "NAME"
linux wifi功能的实现
一、嵌入式linux四件套配置
1、网卡选型的依据:
a.网卡不能乱选,否则没戏。网卡的依据是,kernel的menuconfig -> device drivers -> network device support -> wireless lan -> 一堆驱动,however,这还没有结束;
b.buildroot -> menuconfig -> target packet -> hardware handling -> *** firmwares -> linux-firmware -> wifi firmwares -> 一堆驱动的bin。
# 这些网卡商都十分淫荡,在官网上放着10年前的固件,但是却给这些软件巨头发放最新的驱动,而且还不开源,嗞嗞。。
# 接下来是开启一些功能
2、开启内核rfkill功能
menuconfig -> networking support -> rf switch subsystem support
3、开启kernel和buildroot的驱动支持
a、就是第一步的那两个地方,然后:
b、Networking support -> Networking options ->
<*> Packet socket
[*] NETLINK: mmapped IO
[*] IP: DHCP support
[*] IP: BOOTP support
[*] IP: RARP support
[*] Network packet filtering (replaces ipchains) //添加,后面子选项可不选,配置CONFIG_NETFILTER
4、buildroot软件包设置
buildroot -> menuconfig -> target packet -> network applications
选择hostapd,iw,wireless tools,wpa_supplicant(注意全选)
5、然而还没有结束
buildroot -> busybox-menuconfig -> networking utilities -> udhcpd, udhcpc
嗯,telnet困难症的朋友,你们现在可以脱离苦海了,把telnetd也选上去吧
# 这个时候,应该就能顺利启动网卡了,需要验证一下/sys/class/net/wlan0里面有没有phy80211这个东西,如果没有,说明驱动安装失败。
# 如果是网上找到的开源驱动,并且你不需要开AP,那么即使没有phy80211也能够上网,详见附一
# 如果你的网卡是usb的,而且比较水,那么网卡有时候会死机,这个时候你怎么搞,它都不会再鸟你了,这个时候,嗯,抽出来,再插进去 = =..
二、应用程序配置(client篇)
1、ifconfig wlan0 up
2、情况一:要连接的AP没有密码
iw dev wlan0 connect "Guest hi-T"
udhcpc -i wlan0
# 然后可以用ping了
# 经过使用,Guest的信号还是不错的,丢包率只有10%上下,udhcpc找ip的速度也是非常快的。
3、情况二:要连接的AP使用WPA加密
需要使用wpa_supplicant
a、创建文件/etc/wpa_supplicant.conf,如果是在buildroot把这个包打上去的,那么应该本来就有这个文件;
b、编辑文件:/etc/wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_
ap_scan=1 //必须要这一句,这是导演安排滴
network={
ssid="zhd-1" # 这是AP的名字
psk="123456789" # 这是AP的密码
}
保存退出。
c、wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant
-D 表示驱动程序; -i 表示网卡; -c 表示配置文件
如果看到CTRL-EVENT-CONNECTED的debug输出,证明配置是对的。
如果看到 pre-shared key maybe incorrect,并且持续不断出现,表示密码可能是错的。
如果看到其他的信息,有可能是配置文件不完整,甚至是驱动程序本身也是不完整的。
d、CTRL-EVENT-CONNECTED之后一段时间内,如果没有任何输出,证明连接稳定,可以进行下一步:
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant -B,让wpa_supplicant常驻在后台,控制网卡
处于client模式;
e、udhcpc -i wlan0, 获取ip
f、用完后,wpa_cli -i wlan0 terminate,退出wpa_supplicant,并停止wlan0
# 使用 zhd-1 测试带密码wifi,请务必保持耐心,不要随便 ^C ,请久等。。(ping的丢包率在40%以上。。。)
三、应用程序配置(AP篇)
1、sh: iw list
a. 找到Supported interface modes, 发现内有AP,lucky, go next;
b. No AP exist, oh shit! and fuck too! You doomed, breake a window and just jump off, goodbye and never say hi ~~~
2、建立/etc/hostapd.conf,内容如下:
interface=wlan0 # 所用的网卡
driver=nl80211 # 所用的驱动
ssid=hostapd # 热点名称
channel=6 # 也称为频段,wifi共有13个通道,其中1、6、11是最佳频道
hw_mode=g # 可以为a、b、g
ignore_broadcast_ssid=0 # 广播ssid
auth_algs=1 # 1=WPA2,2=WEP
wpa=2 # 1=WPA1, 2=WPA2, 3=BOTH
wpa_passphrase=12345678 # 密码
wpa_key_mgmt=WPA-PSK # 加密方式
wpa_pairwise=TKIP # 802.11g 加密算法
rsn_pairwise=CCMP # 802.11i 加密算法
3、hostapd -d /etc/hostapd.conf
-d 表示debug模式,所以会出来一大片信息,仔细检查有没有发现file not found错误,一般是由于配置错误导致的,有时候也会是驱动的原因。这个时候用手机应该能够看到有一个叫hostapd的热点。。。
4、接下来,配置udhcpd,配置文件样本可以在buildroot/output/build/busybox***/examples/udhcpd/udhcpd.conf中找到,使用 cat udhcpd | grep ^\# -v 命令,查看默认的配置
5、那么,其实呢,这个东东是建立在有线网络的基础上的,并且要作为一个能够上网的路由器使用,而我们只需要互联通信就ok了,所以有很多东西是没有必要的,核心配置,只有如下的几条:
# 确定IP的范围
start 192.168.0.20
end 192.168.0.25
# 选定udhcpd的设备
interface wlan0
option subnet 255.255.255.0 # 子网掩码
option router 192.168.0.1 # 网关(就是本机)
option lease 86400 # 租约时间,其实就是该IP地址的生命周期,单位是秒,86400是一天
设置好了后,保存在/etc/udhcpd.conf;
6、hostapd /etc/hostapd.conf -B
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 # 注意,一定要和udhcpd.conf严格匹配
touch /var/lib/misc/udhcpd.leases
udhcpd -S /etc/udhcpd.conf
7、用手机再找到hostapd热点,连接,连接了之后,查看手机IP;
8、开发板:ping -I wlan0 手机ip, 如果有应答,就成功了。
附一、开源驱动的应用程序配置(仅client)
# 现在的驱动程序已不支持iwconfig,用iwconfig配置任何新版wlan驱动均会报错
1、ifconfig wlan0 up
2、iwconfig wlan0 scan # 得到附近AP的列表
3、iwconfig wlan0 essid "zhd-1" key "123456789"
Wi-Fi?WirelessFidelity,无线保真 技术与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。该技术使用的使 2.4GHz附近的频段,该频段目前尚属没用许可的无线频段。其目前可使用的标准有两个,分别是IEEE802.11a和IEEE802.11b。该技术 由于有着自身的优点,因此受到厂商的青睐。
Wi-Fi技术突出的优势在于:
其一,无线电波的覆盖范围广,基于蓝牙技术的电波覆盖范围非常小,半径大约只有50英尺左右?约合15米 ,而Wi-Fi的半径则可达300英尺左右? 约合100米 ,办公室自不用说,就是在整栋大楼中也可使用。最近,由Vivato公司推出的一款新型交换机。据悉,该款产品能够把目前Wi-Fi无线网 络300英尺?接近100米 的通信距离扩大到4英里?约6.5公里 。
其二,虽然由Wi-Fi技术传输的无线通信质量不是很好,数据安全性能比蓝牙差一些,传输质量也有待改进,但传输速度非常快,可以达到11mbps,符合个人和社会信息化的需求。
其三,厂商进入该领域的门槛比较低。厂商只要在机场、车站、咖啡店、图书馆等人员较密集的地方设置“热点”,并通过高速线路将因特网接入上述场 所。这样,由于“热点”所发射出的电波可以达到距接入点半径数十米至100米的地方,用户只要将支持无线LAN的笔记本电脑或PDA拿到该区域内,即可高 速接入因特网。也就是说,厂商不用耗费资金来进行网络布线接入,从而节省了大量的成本。
在嵌入式产品中,wifi的比重越来越来大,本文只是简略讲下wifi的配置,我们需要如下几个命令: iwlist iwconfig ifconfig route
首先用1:iwlist eth1 scanning 查看无线路由
2:iwconfig eth1 essid "无线路由的名称"
3: ifconfig eth1 IP
4: route add default gw 网关
对于带密码的路由器,设置如下:
1:iwconfig eth1 key s:密码
2:iwconfig eth1 key open
3:ifconfig eth1 essid "名称"
4:ifconfig eth1 IP
5:route add default gw 网关
wifi模块驱动
使用系统wifi功能的第一步是确定设备wifi模块的型号并安装相应的驱动程序。在嵌入式开发中,一般是需要获取到wifi模块的驱动源码,然后进行交叉编译来构建驱动模块并使用insmod命令进行安装。
一般而言,WIFI模块具有两种工作模式:
- Station Mode: 工作站模式,用来接入路由器等AP
- AP Mode: 接入点模式,用来被接入使用
不同模式的wifi驱动代码可能不一样,所以也许会需要安装两个驱动模块,分别来支持这两种模式功能,具体请参考对应wifi模块的手册与指南文档。
主要工具
Linux系统中主要使用的wifi配置工具有两种:
- wireless tools: 包含iwconfig,iwlist,iwspy,iwpriv等工具,主要配置wep加密wifi
- wpa_supplicant:包含wpa_cli,wpa_supplicant等工具,主要配置wpa加密wifi
因为目前常用的wifi网络大部分都是使用的wpa协议进行加密,所以wpa_supplicant工具使用的比较多,但是在wifi接口的管理方面,wireless tools工具依然还是很有用的。
wireless tools
该工具包是Linux Wireless Extensions(LWE)的用户层配置工具之一。LWE是Linux下对无线网络配置的工具,包括内核的支持、用户层配置工具和驱动接口的支持三部分。目前很多无线网卡都支持LWE,而且主流的Linux发布版本,比如Redhat Linux、Ubuntu Linux都已经带了这个配置工具。
编译构建之后会生成命令:iwconfg,iwlist,iwspy,iwpriv等,这些命令的使用依赖于生成的动态库文件:libiw.so.29,因此拷贝这些命令到目标机器上时,记得将该库文件一起拷贝到系统的lib目录下面,否则会提示找不到库文件。
iwconfig是LWE最主要的工具,可以对无线网卡的大部分参数进行配置。具体的命令参数与选项可以通过help命令来查看了解。其中一些参数的解释如下:
-
essid:设置无线网卡的ESSID(Extension Service Set ID)。通过ESSID来区分不同的无线网络,正常情况下只有相同ESSID的无线站点才可以互相通讯,除非想监听无线网络。其后的参数为双引号括起的ESSID字符串,或者是any/on/off,如果ESSID字符串中包含any/no/off,则需要在前面加"--"。
-
mode:设置无线网卡的工作模式,可以是
- Ad-hoc:不带AP的点对点无线网络
- Managed:通过多个AP组成的网络,无线设备可以在这个网络中漫游
- Master:设置该无线网卡为一个AP
- Repeater:设置为无线网络中继设备,可以转发网络包
- Secondary:设置为备份的AP/Repeater
- Monitor:监听模式
- Auto:由无线网卡自动选择工作模式
-
freq/channel:设置无线网卡的工作频率或者频道,小于1000的参数被认为是频道,大于10000的参数被认为是频率。频率单位为Hz,可以在数字后面附带k, M, G来改变数量级,比如2.4G。频道从1开始。使用iwlist工具可以查看无线网卡支持的频率和频道。参数off/auto指示无线网络自动挑选频率。 注意:如果是Managed模式,AP会指示无线网卡的工作频率,因此该设置的参数会被忽略。Ad-hoc模式下只使用该设定的频率初始无线网络,如果加入已经存在的Ad-hoc网络则会忽略该设置的频率参数。
-
ap:连接到指定的AP或者无线网络,后面的参数可以是AP的MAC地址,也可以是iwlist scan出来的标识符。如果是Ad-hoc,则连接到一个已经存在的Ad-hoc网络。使用off参数让无线网卡不改变当前已连接的AP下进入自动模式。any/auto参数,无线网卡自动选择最好的AP。 注意:如果无线信号低到一定程度,无线网络会进入自动选择AP模式。
-
rate/bit:如果无线网卡支持多速率,则可以通过该命令设置工作的速率。小于1000的参数由具体的无线网卡驱动定义,一般是传输速率的索引值,大于1000的为速率,单位bps,可以在数字后面附带k, M, G来指定数量级。auto参数让无线网卡自动选择速率fixed参数让无线网卡不使用自动速率模式。
-
txpower:如果无线网卡支持多发射功率设定,则使用该参数设定发射,单位为dBm,如果指定为W(毫瓦),则转换公式为: dBm=30+log(W)。参数on/off可以打开和关闭发射单元,auto和fixed指定无线是否自动选择发射功率。
-
sens:设置接收灵敏度的下限,在该下限之下,无线网卡认为该无线网络信号太差,不同的网卡会采取不同的措施,一些现代的无线网卡会自动选择新的AP。正的参数为raw data,直接传给无线网卡驱动处理,一般认为是百分比。负值表示dBm值。
-
retry:设置无线网卡的重传机制。limit ‘value’ 指定最大重传次数;lifetime ‘value’指定最长重试时间,单位为秒,可以附带m和u来指定单位为毫秒和微秒。如果无线网卡支持自动模式,则在limit和lifetime之前还可以附加min和max来指定上下限值。
-
rts:指定RTS/CTS握手方式,使用RTS/CTS握手会增加额外开销,但如果无线网络中有隐藏无线节点或者有很多无线节点时可以提高性能。 后面的参数指定一个使用该机制的最小包的大小,如果该值等于最大包大小,则相当于禁止使用该机制。可以使用auto/off/fixed参数。
-
frag:设置发送数据包的分片大小。设置分片会增加额外开销,但在噪声环境下可以提高数据包的到达率。一般情况下该参数小于最大包大小,有些支持Burst模式的无线网卡可以设置大于最大包大小的值来允许Burst模式。还可以使用auto/fixed/off参数。
-
key/enc[ryption]:设置无线网卡使用的加密密钥,此处为设置WEP模式的加密key,如果要使用WPA,需要wpa_supplicant工具包。 密钥参数可以是 XXXX-XXXX-XXXX-XXXX 或者 XXXXXXXX 格式的十六进制数值,也可以是s:xxxxxx的ASCII字符。如果在密钥参数之前加了[index],则只是设置该索引值对应的密钥,并不改变当前的密钥。直接指定[index]值可以设置当前使用哪一个密钥。指定on/off可以控制是否使用加密模式。open/restricted指定加密模式,取决于不同的无线网卡,大多数无线网卡的open模式不使用加密且允许接收没有加密的数据包,restricted模式使用加密。可以使用多个key参数,但只有最后一个生效。 WEP密钥可以是40bit,用10个十六进制数字或者5个ASCII字符表示,也可以是128bit,用26个十六进制数字或者13个ASCII字符表。
-
power:设置无线网卡的电源管理模式。period ‘value’ 指定唤醒的周期,timeout ‘value’指定进入休眠的等待时间,这两个参数之前可以 加min和max修饰,这些值的单位为秒,可以附加m和u来指定毫秒和微秒。off/on参数指定是否允许电源管理,all/unicast/multicast指定允许唤醒的数据包类型。
-
commit:提交所有的参数修改给无线网卡驱动。有些无线网卡驱动会先缓存无线网卡参数修,使用这个命令来让无线网卡的参数修改生效。不过一般不需要使用该命令,因为无线网卡驱动最终都会是参数的修改生效,一般在debug时会用到。
这些工具命令的常用使用示例:
-
扫描可用的无线网络
iwlist [wifi-name] scanning
其中wifi-name为无线网卡的名字,比如网卡eth0就是系统默认的网卡名字, wifi-name可以用ifconfig查看,一般为ra0(无线网卡),不过需要ifconfig ra0 up。
-
扫描网络信息
iwlist ra0 scan ===<rt_ioctl_giwscan.11(11) BSS returned, data-<length = 1427 ra0 Scan completed : Cell 01 - Address:C4:CA:D9:1D:9E:A0 Protocol:802.11b/g/n ESSID:"" Mode:Managed Frequency:2.412 GHz(Channel 1) Quality=7/100 Signal level=-87 dBm Noise level=-82 dBm Encryption key:off Bit Rates:54 Mb/s
如上:ESSID项的值即为无线网络的名字,如上的“TXJ”等。如果值为空,说明在无线路由勾选了隐藏ESSID的选项。ESSID是很关键的,如果被隐藏了,也不是不能连接,而是需要破解,用到其他的工具,非常麻烦。
-
设置要连接的网络类型
iwpriv ra0 set NetworkType=Infra
-
设置要连接的无线网络的安全模式
iwpriv ra0 set AuthMode=WPA2PSK
-
设置网络加密方式:(CCMP即为AES)
iwpriv ra0 set EncrypType=TKIP
-
设置连接时的密码
iwprivra0 set WPAPSK=******* //********为加密网络的密码
-
连接该网络:有两种方式:
iwpriv ra0 set SSID=TXJ iwconfig ra0 essid TXJ
至此,如果密码正确,就可以连接上网络TXJ了。
-
查看状态
iwpriv ra0 connStatus
当然,你也可以用iwconfig命令查看状态。
wpa_supplicant
wpa_supplicant是目前常用的工具之一,但缺点是它不支持所有的驱动。请浏览wpa_supplicant网站获得它所支持的驱动列表。wpa_supplicant目前只能连接到那些你已经配置好ESSID的无线网络。wireless-tools支持几乎所有的无线网卡和驱动,但它不能连接到那些只支持WPA的AP。
经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务端和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。
使用wpa_supplicant来连接wifi的具体步骤主要是:
-
启动wpa_supplicant后台服务程序:
/sbin/wpa_supplicant -d -Dwext -iwlan0 -c /etc/wpa_supplicant.conf
其中:
-d :增加调试信息 -Dwext :wext,驱动名称 -iwlan0 :wlan0,网络接口名称 /etc/wpa_supplicant.conf :配置文件
配置文件的内容大致如下:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheel update_config=1 network={ ssid="test-ap" scan_ssid=1 psk=37bca5cf24a345f514d319211822f568bba28f8f0b74c894e7644 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN }
network里面的内容就是接入AP的配置,wpa_supplicant启动时会以该配置去连接wifi。几个选项的介绍如下,更多的解释可以参考官方的配置文件注释。
- ssid 接入点名称
- scan_ssid=1 如果你的无线接入点是隐藏的,那么这个就是必须的。
- psk=xx 是加密后的密码,用wpa_passphrase自动生成的
- proto=RSN WPA2只是RSN的一个别名,支持WPA和WPA2
关于psk加密的生成,使用wpa_passphrase命令如下:
$ wpa_passphrase TPLINK 12345678 network={ ssid="TPLINK" #psk="12345678" psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb }
这里表示名为TPLINK的接入点,密码是12345678,输出就是该接入点在wpa_supplicant.conf里面的配置内容。
-
执行wpa_cli工具进行搜索和连接
wpa_cli -i wlan0
wlan0是wifi接口名称,以上名列会进入交互模式,然后进行具体的动作。具体支持的命令可以通过help命令来查看,以下进介绍常用的几个命令。
- scan 扫描当前可以的WiFi列表
- scan_result 查看上次scan的扫描结果
- add_network 添加一个AP连接网络
- set_network 设置连接网络的相关参数
- get_network 获取连接网络的参数
- remove_network 删除一个连接网络
- enable_network 连接到指定的AP
- disable_network 禁止一个网络
- disconnet 端口当前的AP连接
- status 查看当前的连接状态信息
- save_config 保存配置
一些交互连接的示例:
-
连接无加密的AP
add_network set_network 0 ssid "ap1" set_network 0 key_mgmt NONE enable_network 0 quit
-
连接WEP加密AP
add_network set_network 1 ssid "ap2" set_network 1 key_mgmt NONE set_network 1 wep_key0 "your ap password" enable_network 1
-
连接WPA-PSK/WPA2-PSK加密的AP
add_network set_network 2 ssid "ap3" set_network 2 psk "your pre-shared key" enable_network 2
最近在开发一个WiFi工具箱,其中了解到挺多的wifi和网络相关的命令,这里简单总结一下:
1.wpa系列
wpa是一个linux自带的WiFi管理工具,一般python或者其他wifi库在底层都是调用wpa的相关的命令,所以了解wpa命令很重要,wpa服务启动(基于conf):
wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
查看当前无线网卡状态:
wpa_cli -iwlan0 status
万一启动报错,可以先把运行中的wpa_supplicant.conf进程杀掉:
sudo pkill -f wpa_supplicant.conf
wifi扫描:
-
wpa_cli -iwlan0 scan
-
wpa_cli -iwlan0 scan_results
2.ifconfig系列:
另外一个实用性很高的命令就是ifconfig,可以用来查看有线、无线网卡和设备网络状态
ifconfig
还有很多其他的功能如启动无线网卡:
ifconfig wlan0 up
另外,简单说下ifconfig的内容,内容中会显示有线网卡(我的名称是eth0),无线网卡是wlan0,所以上面命令出现的是wlan0,另外还有lo,本地的虚拟网卡
3.nc系列:
nc不是脑残,是netcat,这个命令用来检查服务器端口,或者建立tcp、udp等连接很有作用,感兴趣可以自己百度。
4.路由及路由表:
有时候连接不上指定的服务,可能是因为找不到路由,所以查看路由及路由表:
-
route -n
-
ip route
-
iptables -I ufw-user-input -p tcp --dport 3389 -j ACCEPT //有时候远程桌面连接不上的原因,关闭端口的防火墙
5.查看wifi密码系列:
Linux:
-
cd /etc/NetworkManager/system_connections
-
ls // 查看所有连接过的wifi
-
sudo cat 指定wifi名称 //在wifi-security字段内的psk即为密码
Windows:
-
netsh wlan show profiles
-
netsh wlan show profile name=指定WiFi名称 key=clear
安卓手机:
很多安卓手机都有wifi分享功能,会生成一个二维码,其实这个二维码包含了wifi密码,貌似底层就是利用获取wpa的conf文件得到密码的,要解出二维码的密码很简单,可以直接打开微信扫一扫即可看到密码。
6.网卡获取ip:
sudo dhclient wlan0
首先,我假设您们都已经正确安装了无线网卡的驱动程序。没有这前提,后续的一切都如镜花水月。如果您你机器确实没有正确安装上,您应该看看关于您的发布版本的维基和文档。
然后您就可以用如下命令来检查是哪一个接口来支持无线连接的:
$ iwconfig
一般来说,无线接口都叫做 wlan0。当然也有例外的,但在这篇教程中我们将会一直用通用叫法。
以防万一,你得确认下以使此接口服务是启动着的:
$ sudo ip link set wlan0 up
一但确认了无线接口是工作着的,你就可以用如下命令来扫描附近的无线网络了:
$ sudo iw dev wlan0 scan | less
根据扫描出的结果,可以得到网络的名字(它的 SSID),它的信息强度,以及它使用的是哪个安全加密的(如:WEP、WPA/WPA2)。从此时起,将会分成两条路线:情况很好、很容易的以及情况稍微复杂的。
如果您想连接的网络是没有加密的,您可以用下面的命令直接连接:
$ sudo iw dev wlan0 connect [网络 SSID]
如果网络是用 WEP 加密的,也非常容易:
$ sudo iw dev wlan0 connect [网络 SSID] key 0:[WEP 密钥]
但网络使用的是 WPA 或 WPA2 协议的话,事情就不好办了。这种情况,您就得使用叫做 wpasupplicant 的工具,它默认是没有的。然后需要修改 /etc/wpasupplicant/wpa_supplicant.conf 文件,增加如下行:
network={ ssid="[网络 ssid]" psk="[密码]" priority=1}
我建议你在文件的末尾添加它,并确保其他配置都注释掉。要注意 SSID 和密码字串都是大小写敏感的。在技术上您也可以把接入点的名称当做是 SSID,使用 wpa_supplicant 工具的话会有合适的 SSID 来替代这个名字。
一旦配置文件修改完成后,在后台启动此命令:
$ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
最后,无论是连到开放的网络还是加密的安全网络,您都得获取 IP 地址。简单地使用如下命令:
$ sudo dhcpcd wlan0
如果一切顺利的话,您应该已经通过 DHCP 获取到了一个全新的本地 IP,这个过程是在后台自动完成的。如果想确认下是否真正连接上的话,您可以再一次输入如下命令检查:
$ iwconfig
最后,我认为多次重复第一步的检查操作是很有必要的。您永远不会知道什么时候您的图形用户界面挂了,或者是什么时候不能访问无线连接了,所以现在就准备着用命令来检测吧。还有,前面提到过的,有很多种方式(如 NetworkManager、wicd、netcfg、wifi 等等)来管理无线连接。我坚持使用最基本的方式,但在某些情况下,我使用的工具可能您还没有,所以您在之前就得先下载它们。另一方面,有很多高级的应用程序,他们确实是不包含在“默认包”里面的,使用它们会大大简化操作过程。但一般建议是开始的话最好从基本的来。谢谢阅读,希望能帮到大家,请继续关注Linux公社,我们会努力分享更多优秀的文章。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139708.htm