近日一个朋友新入手一部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手机将无法连接到此无线路由器上。

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

iPhone手机连接WAPI调试方法和经验总结相关推荐

  1. android手机连接电脑,安卓手机连接电脑的方法

    安卓手机连接电脑的方法 91助手是最受广大智能手机用户喜爱的中文应用市场,是国内最大.最具影响力的智能终端管理工具,也是全球唯一跨终端.跨平台的内容分发平台.智能贴心的操作体验,最多最安全可靠的资源让 ...

  2. 设置手机与计算机的连接方式,如何设置手机连接电脑的方法

    ‍我们经常使用手机连接电脑来传输文件之类的,那么手机怎么连接电脑呢?下面由学习啦小编为你整理了如何设置手机连接电脑的相关方法,希望对你有帮助! 设置手机连接电脑的方法如下 像以前的版本低点的安卓手机, ...

  3. uni-app使用iPhone手机真机调试(window)

    uni-app使用iPhone手机真机调试(window) 1. 在电脑上下载安装iTunes 下载地址:https://pc.qq.com/search.html#!keyword=itunes 下 ...

  4. 乐视2 usb计算机连接,乐视手机怎么连接电脑?乐视手机连接电脑具体方法

    手机以及电脑这两种电子产品在我们日常生活中应用比较广泛,而且不得不承认,手机与电脑的功能比较强大,给我们带来了很多方便,我们在日常的学习,生活,工作中都离不开它们的使用,有时由于操作的需求,需要将手机 ...

  5. iPhone手机连接wifi网络时的portal认证

    iPhone手机连接open模式(二层不认证)的wifi网络的web认证(三次基于IP的认证)流程与问题. 正规流程 iPhone手机在连接到wifi网路之后,会自动访问苹果自己的captive po ...

  6. iPhone无法连接Wi-Fi解决方法

    些用户在使用iPhone系列机型,或使用已经升级到iOS14的设备时,可能会遇到"无法加入网络"的提示,如下图. 这个情况一般是因为,苹果在iOS14中加入了一个新的选项,无线局域 ...

  7. iphone屏幕录制_无需第三方APP,苹果iPhone手机屏幕录制的方法

    有些小伙伴在使用iPhone手机玩游戏的时候,很想把自己玩的游戏录个高清视频,再添加自己的原声解说,做个教程,分享到网上或发送给朋友,或者看到喜欢的直播需要录制下来,以后欣赏或分享给他人,但不知道怎么 ...

  8. 华为与android连接方法,华为手机怎样与电脑连接?安卓手机连接电脑的方法介绍...

    华为手机怎样与电脑连接?想要让华为手机连接计算机,最快的方法无疑是使用数据线,不用借助第三方工具,可直接连接计算机管理文件,当然,你也可以使用无线网来连接,只不过这类连接首先需要下载连接媒介. 华为手 ...

  9. 仿iphone顶部状态栏_无需第三方APP,苹果iPhone手机屏幕录制的方法

    有些小伙伴在使用iPhone手机玩游戏的时候,很想把自己玩的游戏录个高清视频,再添加自己的原声解说,做个教程,分享到网上或发送给朋友,或者看到喜欢的直播需要录制下来,以后欣赏或分享给他人,但不知道怎么 ...

最新文章

  1. 案例分析:机场运作系统
  2. 世界地板大会姚红鹏的三问
  3. Linux内核:关于中断你需要知道的【转】
  4. Lotus Notes 和 Crystal Report 的整合應用
  5. stm32f407 6个串口dma_stm32之DMA
  6. C/C++ BugPitfalls
  7. c访问excel 密码 api_管理EXCEL的5种服务使用渠道
  8. win10怎么修改计算机桌面存储路径,win10桌面保存位置怎么修改_win10修改桌面存储位置教程...
  9. Wed Jul 22 00:00:00 CST 2020 java转成指定日期格式的字符串
  10. 【爬虫】如何通过爬虫,爬取百度图片?新手小白一看便会,内附超详细代码讲解
  11. 批量取消关注和删除微博
  12. 从修正Adam到理解泛化:概览2017年深度学习优化算法的最新研究进展
  13. 超简单! 一个标签搞定跑马灯,纯css制作跑马灯效果
  14. Hadoop/MapReduce 共同好友解决方案:求大量集合的两两交集
  15. 电脑怎么查看处理器CPU型号、属性以及显卡型号
  16. 华为认证网络工程师考试是中文吗?
  17. uva12657 移动盒子
  18. Java编程——杨辉三角(一)
  19. jupyther_python基础系列 09 第九章 有益的探索
  20. 二维码原理及生成示例

热门文章

  1. ()文献可视化--vosviewer入门
  2. cron表达式解析 获取N条结果集
  3. 结构优化软件SolidThinking Inspire的自学攻略
  4. webservice接口开发详解(附完整流程demo)
  5. c-lightning的代码结构
  6. python中OS的使用
  7. vi设计中产品与包装类设计
  8. 电动力学中**介质极化**时的“非均匀/均匀 各向同性/各向异性 介质”
  9. 国密算法java语言的实现:利用bcprov和hutool库分别实现国密SM4算法工具类,对称密钥
  10. Python实现K折交叉验证