zoukankan      html  css  js  c++  java
  • 对于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的支持考虑进去。

  • 相关阅读:
    linux下udp编程
    gitlab和Django实现push自动更新
    gitlab和Django实现push自动更新
    gitlab和Django实现push自动更新
    python通过163邮箱发送邮件
    python通过163邮箱发送邮件
    爬虫的分类
    Webmagic之使用Pipeline保存结果
    Webmagci功能--获取链接
    Webmagic功能--抽取元素
  • 原文地址:https://www.cnblogs.com/tanhangbo/p/4282599.html
Copyright © 2011-2022 走看看