注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

断弦的博客

做有理想的程序猿

 
 
 

日志

 
 
 
 

2011.12.27工作日志  

2011-12-27 18:02:33|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

有几天没写日志了,主要是这两个星期就没干什么活,实在不好意思来写东西。今天总算干了点正事,特此来记录一下。

今天主要研究的是wpa_supplicant的用法。这个工具是Linux上用来控制wifi的主要工具,可能大家所熟悉的是iwconfig和iwlist,这两个工具呢是另外一套叫做wireless tools的工具集中的,就我暂时的研究看来这两套工具集并没有什么联系,只是单纯的两种控制wifi设备的方法而已,而区别在于wireless tools只能使用WEP加密,而这个加密方法现在已经过时,是非常不安全的加密方法。wpa_supplicant则可以使用WPA加密方法,这也是当前使用最多的无线网络加密方法。

WPA 全名为 Wi-Fi Protected Access,是一种保护无线电脑网络(Wi-Fi)安全的系统,它是应研究者在前一代的系统有线等效加密 (WEP) 中找到的几个严重的弱点而产生的。WPA 实作了 IEEE 802.11i 标准的大部分,是在 802.11i 完备之前替代 WEP 的过渡方案。WPA 的设计可以用在所有的无线网卡上,但未必能用在第一代的无线取用点上。WPA2 实作了完整的标准,但不能用在某些古老的网卡上。
WPA 是由 Wi-Fi 联盟这个业界团体建立的,他们拥有 Wi-Fi 这个名词的商标,并且会检验要使用 Wi-Fi 这个名词的设备以核发证书。
对 WPA 实作的检验在2003年4月开始,于2003年11月变成强制性。完整的 802.11i 标准是在2004年6月通过的。
在 WPA 的设计中要用到一个 802.1X 认证服务器来散布不同的钥匙给各个用户;不过它也可以用在较不保险的 "pre-shared key" (PSK) 模式,让每个用户都用同一个密语。Wi-Fi 联盟把这个使用 pre-shared key 的版本叫做 WPA 个人版 或 WPA2 个人版,用 802.1X 认证的版本叫做 WPA 企业版 或 WPA2 企业版。
WPA 的资料是以一把 128 位元的钥匙和一个 48 位元的初向量 (IV) 的 RC4 stream cipher 来加密。WPA 超越 WEP 的主要改进就是在使用中可以动态改变钥匙的“临时钥匙完整性协定”(Temporal Key Integrity Protocol,TKIP),加上更长的初向量,这可以击败知名的针对 WEP 的金钥撷取攻击。
除了认证跟加密外,WPA 对于所载资料的完整性也提供了巨大的改进。WEP 所使用的 CRC(循环冗余校验) 先天就不安全,在不知道 WEP 钥匙的情况下,要篡改所载资料和对应的 CRC 是可能的,而 WPA 使用了称为 "Michael" 的更安全的讯息认证码(在 WPA 中叫做讯息完整性查核,MIC)。进一步地,WPA 使用的 MIC 包含了帧计数器,以避免 WEP 的另一个弱点-replay attack(回放攻击)-的利用。
有两个理由使得 WPA 被定位为到达较安全的 802.11 保全之前的过渡步骤:
  1. 制定 802.11i 的工作比原先预期的久了很多,在大家越来越担心无线安全性之时竟然花了四年之久;
  2. 它包含了与 WEP 兼容的 802.11i 子集合,即使是最早的 802.11b 接口卡也能用。

以上是WPA的简介。就是因为现在的无线网络大多都用WPA加密,我们的无线网络设备才需要使用wpa_supplicant来进行控制,也只有这个工具才能让我们连上路由器。

在android手机上控制无线连接的正是wpa_supplicant,只是我们平常所使用的图形化界面无法看到它是怎么运行的。今天我研究的就是简单的使用wpa_supplicant工具。一开始想在PC上来使用,虚拟机上的Ubuntu已经预装了wpa_supplicant,我还傻乎乎的去apt-get了一下,结果还没找到,估计是名字不对。这个工具想要连接无线网络的话最主要的配置是一个叫做wpa_supplicant.conf的配置文件,文件名是工具说明的例子中所使用的,不知道可不可以更改。这个配置文件中需要写上要连接的AP的SSID,密码(PSK),加密方式等。一个完整的例子如下:

ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=wifi
update_config=1

network={
 ssid="ESEC-2.7"
 psk="esec/.,09_7"
 key_mgmt=WPA-PSK
 priority=1
}

第一行貌似是工具的位置,现在不清楚具体是什么。在network后面的大括号中就是AP的信息。写好这个配置文件后就可以调用命令wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf来连接网络。

-D后面的wext是无线网络设备驱动的名字,在PC上有几个,这是其中一个:

wext = Linux wireless extensions (generic)
nl80211 = Linux nl80211/cfg80211

atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wired = wpa_supplicant wired Ethernet driver

在我们板子上就只有wext这一个驱动。

-i后面的wlan0自然就是无线设备的名字,这个相信大家都很清楚。而最后-c后面跟的就是之前说过的配置文件的路径。

我先是在PC上想连接一下无线网络,结果给我报说没有wlan0。这才发现原来虚拟机没有模拟无线网卡,上网是模拟的有线。这就没办法来试验了。只好在板子上来试验。android自带的这个配置文件在/data/misc/wifi/wpa_supplicant.conf,在初始的时候这个配置文件是一个帮助文档,里面都是注释。但是当我在无线设置中设置了一个SSID的密码后,就出现了上面粘贴过的内容。说明它也是用的这个工具来进行无线连接的。不过我们板子一直连不上网,不知道是什么问题。

  评论这张
 
阅读(41)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018