转载

iPhone手机连接WAPI调试方法和经验总结

       近日一个朋友新入手一部iPhone 7,却一脸苦恼地跑来找我,说他的iPhone手机无法连接上家里的WAPI网络,他老婆的iPhone 6S也发生同样的问题,请我帮忙给看看。于是我这个半桶水专家就有模有样地带着抓包工具开始分析起问题。

  现象描述

  仔细研究发现,朋友家的无线路由器是国内某品牌,使用的是WAPI-Cert安全模式的WLAN网络。用iPhone手机尝试连接该网络, iPhone手机提示:无法加入网络“WAPI-Cert”,如下图1所示:

图1 iPhone手机连接WAPI网络失败

  然后用我换成Android手机试着连接,结果居然成功连接。

图2 Android手机连接WAPI网络成功

  到底问题出在哪里了?让iPhone没法连接,我决定用带来的抓包工具具体分析一下症结所在。

  问题分析

  第一步,先对iPhone手机连接失败的过程进行无线抓包,其结果显示如下:

图3 iPhone手机连接WAPI网络失败过程的无线抓包结果

  第二步,作为对比,对我的Android手机的连接成功过程进行无线抓包,其结果显示如下:

图4 Android手机连接WAPI网络成功过程的无线抓包结果

  对比图3和图4,可以看到,iPhone手机的WAPI报文只有一个,而Android手机WAPI报文则有很多。

  这是什么情况?在这之前需要先科普一下WAPI安全技术的相关知识了。

  WAPI,全称为无线局域网鉴别与保密基础结构(WLAN Authentication and Privacy Infrastructure),是我国自主创新的无线局域网安全技术,它采用虎符TePA三元对等安全架构,实现终端与接入点(AP)之间的双向身份鉴别和密钥管理,保障“合法用户访问合法网络”,抵御了中间人攻击和伪造接入点(假AP)等安全威胁,已在国家标准GB 15629.11系列中进行规范。WAPI由WAI和WPI两部分组成,分别实现对身份认证和数据安全传输。

图5 WAPI安全技术示意图

  第三步,对WAPI有所了解后,再来分析iPhone手机连接不上的原因,根据我的判断,应该是iPhone手机在执行图5所示的WAI过程时出问题了,这相当于WAPI的鉴别和密钥协商过程没有完成,所以导致本次连接失败。那么正常情况下,WAI过程的报文协议交互流程是怎样的了?待我一一分解,如下图6所示:

图6 WAI过程的报文协议交互流程图

  第四步,将WAPI协议交互的流程分别与Android手机成功连接过程及iPhone手机连接失败过程的抓包数据三者一一对应起来,如下图7所示(只分析STA与AP之间的无线协议交互报文):

图7 Android手机成功连接WAPI网络时的报文与协议对照示意图

图8 iPhone手机连接WAPI网络失败时的报文与协议对照示意图

  再与iPhone手机连接过程的抓包数据进行对比,分析出什么问题没有?

  没错,最关键的问题原来是因为缺少“接入鉴别请求分组”。iPhone手机没有发出这个报文,导致后面的流程走不下去,所以当然连接不上喽。

  显而易见,iPhone手机产品实现方面还是有问题的。

  本来打算让朋友把这个问题反馈给苹果售后客服,这事就算交差了,奈何我这半桶水专家却意犹未尽,还想继续深挖一下,看看能不能找到问题的根源,也算给苹果做点贡献吧。

  于是我找来另一台无线路由器,配置成一模一样的WAPI网络,然后用iPhone手机尝试连接,居然连接成功了。

图9 iPhone手机连接WAPI网络成功

  莫非是先前的那台无线路由器有问题?也不对啊,况且Android手机能成功连接。看来问题有点棘手。

  没关系,用我带来的抓包工具对iPhone手机连接成功的情景进行抓包分析:

图10 iPhone手机连接WAPI网络成功过程的无线抓包结果

  可以看到,WAI协议中的空口报文都抓全了,与之前连接失败时的抓包情况完全不一样。看来只要找到两种情况下的不同之处,就能找到问题的根源。谜底就快要揭晓了,激动ing。

  经过细致的对比,终于发现了两种情况下的不同之处,如下图11所示:

图11 iPhone手机连接WAPI网络成功和失败过程的无线抓包对比

  可以看到,连接失败时只有一个“鉴别激活分组”报文,而能连接成功时则有超时重发的“鉴别激活分组”报文。保险起见,我又尝试了多次,结果完全相同。

  看来问题的根源找到了,可以断定的是iPhone手机有意为之,“故意”不处理无线路由器第一次发来的报文,必须要等无线路由器超时重发之后,它才会响应,也就是说iPhone手机只能连接具备超时重发机制的无线路由器!这是什么道理?在考验路由器么?

  问题分析到这里,一切都清楚了,个人认为iPhone手机产品实现方面有问题,iPhone手机不处理无线路由器第一次发来的WAI鉴别激活分组报文,必须等到无线路由器重发此帧才进行响应,并开始后续的动作。但是事实上往往不是所有的无线路由器都会重传此帧,这时iPhone手机将无法连接到此无线路由器上。

  当我满心欢喜地从朋友家出来时,却不禁想到一个严肃的问题:以苹果的研发测试能力以及对于产品一丝不苟的态度,怎么会犯这种低级错误呢?要知道这问题可是连我都能分析出来啊!莫非我比苹果那帮老外研发人员还牛?或者苹果公司是故意歧视中国人发明的安全技术,有意为之?真是百思不得其解啊。

展开阅读全文

没有更多推荐了,返回首页

博客模板©2019 由CSDN提供 模版主题为:skin3-template by CSDN官方博客 设计