管理员
无线论坛管理员
- 注册时间
- 2004-10-2
- 金币
- 35084 个
- 威望
- 404 个
- 荣誉
- 114 个
累计签到:119 天 连续签到:3 天 [LV.200]无线新星
|
可怜的Orinoco.....看到这里我自己提出了三个问题:<BR> 1.可怜的Orinoco为什么要用SharedKey?<BR> 2.即使它使用SharedKey,我在AP和NIC双方都使用了相同的WEP密钥!为什么会验证失败?<BR> 3.是不是我可怜的AP坏了...bug...<BR> <BR> 为了解答这三个问题,首先,我把AP设为强制Open System,然后继续用两块卡进行通讯验证。结果全部通过!<BR> 这证明卡是没问题的,但是难道让我以后都在这种没有隐私的环境下生活?不可想象。于是我又把他们全部设为<BR> 强制SharedKey。<BR> <BR> 现在至少解决了第一个问题,在兼容验证方案环境下,Netgear首先尝试使用OpenSystem验证;而Orinoco则<BR> 总是使用SharedKey,结果就导致无数次的碰壁...但是这个答案同样使第二个问题极其难以解答...只好再想<BR> 新办法。<BR> <BR> >>2.3<BR> 说到这里,我有必要讲解一下SharedKey验证算法了。大家都可以看到上面的SharedKey验证过程,分为四个帧。<BR> 首先由STA向AP发起Auth Req过程,然后AP会返回一个State=0(Success)的帧表示许可;但同时在这个序号<BR> 为2的帧中发出了进一步的验证挑战: 128bit 明文Challenge text 。如果STA持有和AP通讯的正确RC4<BR> 密钥,它就应当在第三个帧中把这段明文加密后发送回去,第三个帧将会使用STA方的RC4 Key进行加密;最后,<BR> 如果AP能够用自己的密钥解密这个帧并得到正确的明文对比,那么就代表双方的密钥匹配,验证通过成功结束;<BR> 如果密钥不匹配的话,AP解密得到的将是一对废弃数据,不能和原始的Challenge Text匹配,验证失败。<BR> 这实在是一种很巧妙的验证方法,密钥不需要传输,而在通讯过程中完全由网络连接信息自同步了,这也是WEP<BR> 加密的核心思想。<BR> <BR> Frame ID:1 STA ----------- Auth Req ----------> AP<BR> Frame ID:2 STA <---------- Auth Rsp + (Challenge Text) ----------- AP<BR> Frame ID:3 STA ----------- WEP { encrypt RC4(Challenge) } -------> AP<BR> Frame ID:4 STA <---------- Auth State (1|0) ----------- AP (unWEP Frame3 = Challenge ?)<BR> <BR> 现在第二个问题的答案也快浮出水面了,这个结果的唯一原因只可能是通讯双方的密钥不匹配!我再次检查了<BR> 两端的设置,仍然没有发现什么问题...呜呜呜...<BR> <BR> 好吧,既然我的密钥是正确的,那么这个密钥就必然能够解开STA:Orinoco发往AP的第三个帧。密钥是否正确<BR> 只要在这里检查一下就会真相大白!点击这个Frame,右键选择Airopeek功能: unWEP。 竟然解密失败!<BR> 看来我的密钥真的错了...可这一切都是我亲手设置的...我开始老老实实原原本本的把AP中的密钥拷贝到NIC<BR> 设置中去,尝试了几次,验证还是失败...双方都是128位加密,密钥位数也一点不少,怎么可能出错呢。只好<BR> 换个简单点的密钥试试看,回避简单错误。这下忽然发现了一个大问题: Orinoco Client Manager的WEP<BR> 密钥输入框上方的提示,提示输入0-9,a-z,A-Z(ASCII or HEX)。搞笑,十六进制数怎么可能会有G-Z这些<BR> 字母,最初的几秒钟我还以为这是Lucent犯下的低级错误,几秒钟之后我发现是我自己的低级错误 -- 这个密<BR> 码输入框中只能输入13位字母,为什么?我的卡支持128bit加密,如果是128b应该是26个,如果是40(64)b那<BR> 么应该是10个,怎么会是13个呢?消耗了我大脑中1Byte的加密算法内存后,我判断出这里要输入的并不是一个<BR> 原始密钥,而是某种常规的字符组合... 13 * 8 = 104, 104 + 24 bit的IV刚好就是128位的RC4 WEP密钥!<BR> 这里输入的字符串竟然是原始WEP密钥(十六进制形式)的对应ASCII字符!查遍了互联网也没有查到Lucent的<BR> 密码输入规则...郁闷。那么我就只好用最简单的方式来验证这个问题了,手工做一下ASCII - HEX的转换,<BR> 然后选出一个最好转换的字母,编成两组密码ASCII格式的是Lucent格式(猜测),同等值的HEX数值是Netgear<BR> 和其他的,然后输入,验证,通过!<BR> <BR> 第二个问题终于解决了...Lucent用了一种最傻瓜而又不安全的方式来定义密钥,这种方法用起来既不直观也不<BR> 方便,而且更限制了它的密码选值空间在 0x30-40 0x41-5a 0x61-7a这三个区间之内,这一切本来都没什么<BR> 但关键是给我添加了那么多的麻烦...而且用户手册中没有任何地说明,呜呜呜...<BR> <BR> 得到这个答案之后我开始安慰自己:<BR> 1,各种产品或驱动之间的通讯过程并不是完全遵循协议规范的,或多或少有实现性差异,比如OpenSystem和<BR> SharedKey的优先权。(我的第一个错误犯在这儿)<BR> 2,我的AP没坏,NIC也没坏,还好坏的只是RP。<BR> 3,不是我的错,一切都是Lucent惹的祸...或者说,是一个人依照喜爱的产品养成的使用习惯的错误。<BR> <BR> <BR> >>2.4<BR> 总结完了之后,让我们来看看正确的通讯过程:<BR> http://www.freedemon.org//Network//wifi//wifi1.pkg//802.11_auth_wep_success.jpg<BR> <BR> 通讯过程数据如下:<BR> ==================================================================<BR> **Frame 2: AP -----> STA , Challenge text<BR> <BR> 802.11 Management - Authentication<BR> Auth. Algorithm: 1 Shared Key<BR> Auth. Seq. Num.: 2<BR> Status Code: 0 Successful<BR> Challenge text<BR> Element ID: 16 Challenge text<BR> Length: 128<BR> Value: 0x0515B1A9660CAF8FED8F3FF44F0CFFC4F64808FE87E1693D5CCCAA3209D74927DB283F7C53BB7B2DAEE764495FD85A7B92153584ABFBC4BEC43F4E9A316F1321FE70CB766E0024517D3547845EFB5379FD99E0B17D2B7C45B9283068C6DDFBE26FEF5495B7DCABFB5A79E8A54A74EABD35D20883FD7292D23D87509CCA210169<BR> <BR> ...<BR> <BR> ==================================================================<BR> **Frame 3: STA -----> AP , WEP RC4(Challenge text)<BR> <BR> WEP Data<BR> WEP IV: 0x000000<BR> WEP Key Index: 0 Key ID=1<BR> WEP Data:<BR> .P4....B.....\G 02 50 34 9C 98 AD EE 42 CB 85 A6 E2 F0 5C 47 20<BR> ...cp....E.q3Q.M A1 14 CF 63 70 DF F5 9F 0F 45 A3 71 33 51 96 4D<BR> S.hI.8.'...w... 53 CD 68 49 EA 38 F8 27 0F 0B D6 77 9C E6 86 20<BR> .[..\.....G....C A8 5B 15 A9 5C 87 FB FE 9C 9D 47 0E A8 EC A8 43<BR> .....u..Z./..q=. 09 02 11 FA C4 75 89 C0 5A 04 2F D4 A4 71 3D DF<BR> ,{v.%..........\ 2C 7B 76 0E 25 E8 8A 90 D7 09 B0 FC AC D9 C0 5C<BR> ..yJ=.......I..W BE EA 79 4A 3D DF 0E BF 1A D5 98 80 49 DE FB 57<BR> ..(UlN.2vK.7[.=' B4 85 28 55 6C 4E D0 32 76 4B F0 37 5B E3 3D 27<BR> ...A.0.. 1B 83 A2 41 C5 30 90 F4<BR> WEP ICV: 0x2C96383D<BR> <BR> ...<BR> <BR> ==================================================================<BR> **解密后的Frame 3: 可以看到WEP加密包装中的Challenge text<BR> <BR> 802.11 Management - Authentication<BR> Auth. Algorithm: 1 Shared Key<BR> Auth. Seq. Num.: 3<BR> Status Code: 0 Reserved<BR> Challenge text<BR> Element ID: 16 Challenge text<BR> Length: 128<BR> Value: 0x0515B1A9660CAF8FED8F3FF44F0CFFC4F64808FE87E1693D5CCCAA3209D74927DB283F7C53BB7B2DAEE764495FD85A7B92153584ABFBC4BEC43F4E9A316F1321FE70CB766E0024517D3547845EFB5379FD99E0B17D2B7C45B9283068C6DDFBE26FEF5495B7DCABFB5A79E8A54A74EABD35D20883FD7292D23D87509CCA210169<BR> <BR> ...<BR> <BR> ==================================================================<BR> **Frame 4: AP -----> STA , 返回成功状态。<BR> <BR> 802.11 Management - Authentication<BR> Auth. Algorithm: 1 Shared Key<BR> Auth. Seq. Num.: 4<BR> Status Code: 0 Successful<BR> <BR> ...<BR> ==================================================================<BR> <BR> <BR> >>3.0<BR> 本部分结束了,走了太多的弯路,记下备忘,也希望给后来者们一点思考,少走一些弯路。<BR> 我想现在一定又有很多人在骂我,那么简单的问题搞得那么复杂;不过我也希望大家RP都好一点,少遇到<BR> 我这种变态变态的问题。 <BR> <BR> 最后一点奇怪的,我新的Orinoco Gold卡,竟然每个通讯过程完成后,会多出一个ACK来......而所有<BR> 的驱动和芯片与另一块卡都是一样的。 ^^<BR> <BR> 大家可以自己看这个图啦。<BR> http://www.freedemon.org//Network//wifi//wifi1.pkg//802.11_auth_wep_secuss_agere.jpg<BR> <BR> <BR> <BR> >>其他 所有的包下载:<BR> <BR> 开放系统鉴权(Open System)过程<BR> http://www.freedemon.org//Network//wifi//wifi1.pkg//802.11_auth_open_system.apc<BR> <BR> 失败和成功的预共享密钥(SharedKey)鉴权过程<BR> http://www.freedemon.org//Network//wifi//wifi1.pkg//802.11_auth_wep_failure.apc<BR> http://www.freedemon.org//Network//wifi//wifi1.pkg//802.11_auth_wep_success.apc<BR> <BR> 解密的成功的预共享密钥鉴权过程<BR> http://www.freedemon.org//Network//wifi//wifi1.pkg//802.11_auth_success_unwep.apc<BR> <BR> 奇怪的Agere<BR> http://www.freedemon.org//Network//wifi//wifi1.pkg//802.11_auth_wep_secuss_agere.apc<BR> STA AP<BR> +-------------------------+ +-----------------+ +----------------+<BR> | State 1 | | | | |<BR> | | <------+ | | | |<BR> +--------> Unauthenticated | | | [ RTS ] | --------------> | | -+<BR> | | & Unassociated | | | | | | |- Probe BSS<BR> | | ....................... | | | [ Probe REQ ] | --------------> | | |<BR> | | . | | | | <-------------- | [Probe RESP ] | |<BR> | | ( if ) . | | | | | | |<BR> | | . | | | [ ACK ] | ..............> | | -+<BR> +-------- Auth . | | | | | |<BR> | Successful . | | | [ Auth REQ ] | --------------> | | -+- Authentication<BR> (Class 1) | . ^ | | | | <-------------- | [ Auth RESP] | |<BR> or Auth +----|----------------|---+ | | | | | |<BR> failure | | ^ | [ ACK ] | ..............> | | -+<BR> ...................|................|................................................................................................<BR> V | ^ | | | |<BR> +---------------------|---+ | | | | |<BR> | State 2 | | | | | | |<BR> +-------> Authenticated | | | | [ Assoc REQ ] | --------------> | | -+<BR> | | & Unassociated | | ? |
|