平台参数: 内核: Linux 3.6 文件系统:Busybox-1.20.2 硬件参数:S3C2416
三、工具准备、知识准备
曾经一个山民说过,磨刀不误砍柴工。捣鼓WiFi,,那么WiFi相关的知识总要了解些吧,比如该无线网络的标准、涉及到的名词、加密术语等等,这些在附录里面提及。
现在要说的是,调试无线网卡需要的几个工具。
所有需要的工具都在源码包里,即wireless_tools/wireless_tools.30.rtl.tar.gz。解压之,修改Makefile:
## Compiler to use (modify this for cross compile). #CC = gcc CC = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc ## Other tools you need to modify for cross compile (static lib only). #AR = ar AR = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ar #RANLIB = ranlib RANLIB = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ranlib
编译即可,然后把它们传到文件系统里:ifrename、iwconfig、iwevent、iwgetid、iwlist、iwpriv、iwspy
每个工具怎么用,可以先稍稍了解下,完了在详细记载。
四、调试
关键时刻来了,也是奇迹再现的时分!
1、执行ifconfig命令,并没有出现无线网卡对应的节点,那么我们UP一下:
/sbin/ifconfig wlan0 up
为什么是wlan0,你可以问问自己为什么有线连接是eth0。
为了方便,这句也加到启动脚本里。
之后看到:
wlan0 Link encap:Ethernet HWaddr 6C:E8:73:C7:6F:92 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
网络环境已经准备好了,接下来就需要在PUSH一下。你不是没东风吗,我给你。
2、搜索我们身边的可用WiFi网络:
[[email protected] /]# iwlist wlan0 scan
iwlist会把存在的网络全部罗列出来,剪切部分出来:
Cell 09 - Address: F0:29:29:A9:CE:B0 ESSID:"BDXT" Protocol:IEEE 802.11bgn Mode:Master Frequency:2.437 GHz (Channel 6) Encryption key:off Bit Rates:144 Mb/s Quality:20 Signal level:0 Noise level:0 Cell 10 - Address: F0:29:29:A9:CE:B1 ESSID:"BDXT-GUEST" Protocol:IEEE 802.11bgn Mode:Master Frequency:2.437 GHz (Channel 6) Encryption key:on Bit Rates:144 Mb/s Extra:wpa_ie=dd1c0050f20101000050f20202000050f2020050f20401000050f2020000 IE: WPA Version 1 Group Cipher : TKIP Pairwise Ciphers (2) : TKIP CCMP Authentication Suites (1) : PSK Extra:rsn_ie=30180100000fac020200000fac02000fac040100000fac022800 IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : TKIP Pairwise Ciphers (2) : TKIP CCMP Authentication Suites (1) : PSK Quality:68 Signal level:0 Noise level:0 Cell 11 - Address: F0:29:29:A9:CE:B3 ESSID:"XXJSB" Protocol:IEEE 802.11bgn Mode:Master Frequency:2.437 GHz (Channel 6) Encryption key:on Bit Rates:144 Mb/s Extra:wpa_ie=dd1c0050f20101000050f20202000050f2020050f20401000050f2010000 IE: WPA Version 1 Group Cipher : TKIP Pairwise Ciphers (2) : TKIP CCMP Authentication Suites (1) : 802.1x Extra:rsn_ie=30180100000fac020200000fac02000fac040100000fac012800 IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : TKIP Pairwise Ciphers (2) : TKIP CCMP Authentication Suites (1) : 802.1x Quality:0 Signal level:0 Noise level:0
其中,ESSID是Wifi的名字,我们使用名为”BDXT“的测试,它不需要密码,Cell 09: ESSID:"BDXT"
3、连接到Wifi网络:
[[email protected] /]# iwconfig wlan0 essid BDXT
然后执行iwconfig wlan0查看连接情况,出现ESSID:"BDXT"即说明我们已经连接到名为”BDXT“的网络
[[email protected] /]# iwconfig wlan0 wlan0 IEEE 802.11bgn ESSID:"BDXT" Nickname:"<[email protected]>" Mode:Managed Frequency:2.412 GHz Access Point: F0:29:29:A9:CA:60 Bit Rate:72.2 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=97/100 Signal level=53/100 Noise level=0/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
此时网络是不能用的,IP、GW、NETMASK都没有呢!
4、配置网络:
a、手动配置
查询”BDXT“的网络使用的网段和网关,如下配置:
[[email protected] /]# ifconfig wlan0 10.209.0.83 [[email protected] /]# ifcofnig wlan0 Link encap:Ethernet HWaddr 6C:E8:73:C7:6F:92 inet addr:10.209.0.83 Bcast:10.255.255.255 Mask:255.0.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:41 errors:0 dropped:44 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7634 (7.4 KiB) TX bytes:0 (0.0 B)
添加网关,ping下外网IP:
[[email protected] /]# route add default gw 10.209.0.1 [[email protected] /]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.209.0.1 0.0.0.0 UG 0 0 0 wlan0 10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 wlan0 [[email protected] /]# ping 114.242.203.140 PING 114.242.203.140 (114.242.203.140): 56 data bytes 64 bytes from 114.242.203.140: seq=0 ttl=63 time=15.100 ms 64 bytes from 114.242.203.140: seq=1 ttl=63 time=4.644 ms 64 bytes from 114.242.203.140: seq=2 ttl=63 time=6.732 ms 64 bytes from 114.242.203.140: seq=3 ttl=63 time=10.670 ms 64 bytes from 114.242.203.140: seq=4 ttl=63 time=7.753 ms 64 bytes from 114.242.203.140: seq=5 ttl=63 time=7.774 ms 64 bytes from 114.242.203.140: seq=6 ttl=63 time=7.763 ms 64 bytes from 114.242.203.140: seq=7 ttl=63 time=7.785 ms
ping域名的话,需要在/etc/resolv.conf添加DNS服务器:
cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 202.96.128.86
试下baidu.com:
[[email protected] /]# ping www.baidu.com PING www.baidu.com (220.181.111.188): 56 data bytes 64 bytes from 220.181.111.188: seq=0 ttl=56 time=7.406 ms 64 bytes from 220.181.111.188: seq=1 ttl=56 time=15.358 ms 64 bytes from 220.181.111.188: seq=2 ttl=56 time=7.254 ms 64 bytes from 220.181.111.188: seq=3 ttl=56 time=11.262 ms 64 bytes from 220.181.111.188: seq=4 ttl=56 time=13.297 ms 64 bytes from 220.181.111.188: seq=5 ttl=56 time=12.235 ms 64 bytes from 220.181.111.188: seq=6 ttl=56 time=7.273 ms 64 bytes from 220.181.111.188: seq=7 ttl=56 time=7.298 ms 64 bytes from 220.181.111.188: seq=8 ttl=56 time=10.413 ms
b、动态分配IP
这需要我们在配置busybox的时候,启用它的DHCP功能,这样,在文件系统中就会有一个命令:
udhcpc
该命令默认是配置eth0网络,配置我们的wlan0的话需要带-i选项:
udhcpc -i wlan0
关于该命令,参见Busybox附带文档,该命令需要 /usr/share/udhcpc/default.script 脚本存在。
五、暂时打住
这种连接是不安全的,没有采用任何加密措施,更好的联网方式在document/wpa_cli_with_wpa_supplicant.pdf有说明。
PS:WiFi名词解释
WiFi基本名词 AP:无线接入点,即无线路由器。 信道:不同的传输频率点。 P2P:点对点无线网模式。 WiFi是由AP(Access Point)和无线网卡组成的无线网络。AP称为网络桥接器或接入点,它是当作传统的有线局域网络与无线局域网络之间的桥梁,因此任何一台装有无线网卡的PC均可透过AP去分享有线局域网络甚至广域网络的资源,其工作原理相当于一个内置无线发射器的HUB或者是路由,而无线网卡则是负责接收由AP所发射信号的CLIENT端设备。 WiFi在IEEE中的定义是 802.11,802.11a/b/g/n其实是802.11通用标准的补充协议: 1、802.11a,1999年,物理层补充(54Mbit/s,5GHz频道); 2、802.11b,1999年,物理层补充(11Mbit/s,2.4GHz频道); 3、802.11g,物理层补充(54Mbit/s,2.4GHz频道); 4、802.11i,2004年,无线网络的安全方面的补充。(与安全有关与网速改进无关); 5、802.11n,导入多重输入输出(MIMO)和40Mbit信道宽度(HT40)技术,基本上是802.11a/g的延伸版。 无线认证相关名词有:WEP、WPA、WPA2、WPA/WPA2 MIXEDMODE、WPA-PSK、WPA2-PSK、WPS 信息加密的相关名词有:AES、TKIP、AES-CCMP 名词解释: WEP(Wired Equivalent Privacy):有线等效加密 WEP使用一个静态的密钥来加密所有的通信,已证明易被攻击。 WPA(Wi-Fi Protected Access):WPA 实现了802.11i标准的大部分,是在802.11i完备之前替代 WEP 的过渡方案。 WPA2(Wi-Fi Protected Access 2):WPA2完整的实现了802.11i标准,但不能用在某些旧的网卡上。 WPA/WPA2 MIXEDMODE(WPA/WPA2共混模式):主要为了使仅支持WPA的老网卡和WPA/WPA2都支持的新网卡都能够同时连接到访问点而开发的。当家里无线设备种类很多 且新旧都有时,可以选用共混模式。 WPA-PSK(Wi-Fi Protected Access pre-sharedkey):对应于WPA认证 WPA2-PSK(Wi-Fi Protected Access 2pre-shared key):对应于WPA2认证 WPA/WPA-PSK,WPA2/WPA2-PSK的区别:: 使用WPA和WPA2认证时需要一台Radius(Remote Authentication Dial In UserService)服务器的配合,对大企业而言是非常安全的。 使用WPA-PSK/WPA2-PSK认证时,只需要一个共有的key就可以了,8位以上(可以理解为密码),不需要验证服务器,对中小企业及机场等公共场合非常的方便。 WPS( Wi-Fi Protected Setup )不是金山办公软件,2007年初才发布的认证,目的是可以更简单方式来设定无线网络装置,并且保证有一定的安全性。 信息加密相关词汇: AES(Advanced Encryption Standard):高级加密标准 对称密钥加密中最流行的算法之一,也是目前最成熟的。 TKIP(Temporal Key Integrity Protocol):暂时密钥集成协议TKIP是包裹在已有WEP密码外围的一层"外壳"。他解决了WEP的密钥过短和重放攻击(replay attacks) AES-CCMP(Counter Mode with Cipher Block Chaining Message Authentication CodeProtocol)计数器模式密码块链接消息认证码协议,CCMP是一个协议,它是使用了AES算法又加了一些东西,AES仅是算法,CCMP是加密的协议。