对于AP中为什么有4个WEP KEY的分析


这篇文章简要分析一下为什么有4个WEP KEY,及其中的一些原因。


SPEC

用过AP的都知道,AP中有4个WEP KEY,但是为什么要设置4个呢,这个是WEP帧的格式决定的:



图中的keyid是2个比特,可以代表4个keyid,也就是对应AP中的4个keyid,若是AP和STA设置的不一样,就会连不上。


抓个包来看下吧(用一块便宜的网卡):

根据AP的设定:

下面是所抓的包:

这里可以对应起来了。



AP

有兴趣的话可以看下TPLINK写的文档:

http://service.tp-link.com.cn/detail_article_12.html

从图中可以看到AP中的四个栏位。



 这里为什么有16进制和ASCII码呢,


WEP的密钥模式有 

WEP64(KEY为40bit,即10位HEX或者5位ASCII) 例:12345ABABA 或者 Xpass
WEP128 (KEY为104bit, 即26位HEX或者13位ASCII) 例:12300000000000000000000000 或者 apppppppppppp

换算关系
1位HEX = 4bit
1位ASCII = 8bit


总的来说有两种模式:

 Standard -    24 + 40 = 64 bit RC4 key
 Vendors -   24 + 104 = 128 bit RC4 key

24bit是key的IV


STA

下面是win7下面的截图,说明选择key index是不可避免的:




下面以linux为例,解析一下linux里面是怎么做的

先给出wpa_supplicant 的配置文件:

# Shared WEP key connection (no WPA, no IEEE 802.1X) using Shared Key
# IEEE 802.11 authentication
#network={
#	ssid="static-wep-test2"
#	key_mgmt=NONE
#	wep_key0="abcde"
#	wep_key1=0102030405
#	wep_key2="1234567890123"
#	wep_tx_keyidx=0
#	priority=5
#	auth_alg=SHARED
#}


这里的wep_tx_keyidx就是KeyID,然后里面有分别三个wep key。


以mac80211的linux driver为例,若这里只填一个wep_key0的时候,上层调用的set_key接口会分别set 4个key

分别是wep_key0,0,0,0  为什么有三个都是0呢,因为这里没有填其他3个,默认是空的key。当你四个都自己填好之后,set_key就会将

4个key分别传递到driver,同时,也会将key的index告诉driver,让driver将key放到对应的硬件的四个栏位里面。


这里有这样一个现象,当你的keyindex和密码填错时,有时候会一直尝试重连,有时候虽然连接成功了,但是dhcp包会一直TX不出去。


当然了,这里不推荐使用WEP,但是厂商为了做兼容性也只能每次都将WEP的支持考虑进去。

posted @ 2014-12-06 11:29  crazy_thb  阅读(2113)  评论(0编辑  收藏  举报