Wi-Fi EAP网络验证过程与Android平台拓展实例(一)

本文深入探讨了EAP(可扩展认证协议)在网络验证过程中的应用,特别是在Android和iOS设备上的不同。通过分析EAP-TTLS的连接设置和抓包数据,揭示了iOS设备在无需指定EAP方法的情况下能够成功连接EAP网络,而Android设备因指定错误的EAP方法导致认证失败。关键在于iOS设备在初始请求中包含了多种EAP选项,而Android仅指定一种不受支持的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章参考的是Android 7.1的源码
本文主要研究EAP类型网络的身份验证过程,从而简化Android平台EAP类型网络的身份验证过程。


1. 什么是EAP

  Extensible Authentication Protocol,简称EAP,是一种支持多种验证方式的协议框架,EAP通常运行在链路层例如PPP和IEEE 802。EAP协议是IEEE 802.1x认证机制的核心,它将实现细节交由附属的EAP Method协议完成,如何选取EAP method由认证系统特征决定,这样实现了EAP的扩展性及灵活性(摘自”百度百科”)。这篇文章主要描述的场景是基于Radius服务器的EAP身份认证方式。
  了解本文前,如果您的身边没有EAP网络环境,可以通过路由器和Radius进行搭建。

2. IOS和Android对EAP支持的区别

  下图分别是IOS(左图)和Android(右图)连接EAP-TTLS加密方式网络的设置界面:
  这里写图片描述
  从上图看,IOS系统中,只需要用户输入用户名和密码,但是在Android系统上,则需要用户指定具体的EAP方法(默认使用PEAP),如果选择的EAP方法与AP认证服务器指定的不对应,则无论用户名和密码正确与否都会验证失败。
  我们知道,在未开始连接前,设备是只知道这个AP是EAP加密方式,但不知道具体的EAP方法。那为什么IOS都没有选择具体EAP方法就可以连上这个TTLS加密方式的网络呢?而且,将AP的EAP方法改为PEAP,IOS同样可以连上,这点很奇怪!需要刨根问题追究缘由,则需要抓出认证过程中,IOS与认证服务器的交互包。
  
3. IOS EAP认证过程探究

  设定Radius EAP方法为TTLS,开启Radius服务:

xyzc@xyzc-ul:~$ sudo radiusd -X
FreeRADIUS Version 3.0.16
Copyright (C) 1999-2017 The FreeRADIUS server project and contributors
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
...
Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 43060
Listening on proxy address :: port 48623
Ready to process requests

  在搭建了Radius服务的主机上开始抓取tcpdump,并使用IPhone开始连接

xyzc@xyzc-ul:~/ulangch/eap$ sudo tcpdump -i any -w tcpdump-ios.pcap
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes

  实验完成后使用wireshark分析IPhone连接过程中抓取Radius服务所在主机的tcpdump。
  如下为tcpdump抓取的Radius协议数据包,这部分即代表了认证过程,192.168.1.1192.168.1.100分别代表了路由器网关IP和Radius服务主机IP。

179 2018-05-14 15:43:19.055587  192.168.1.1 192.168.1.100   RADIUS  201 Access-Request(1) (id=0, l=157)
180 2018-05-14 15:43:19.056882  192.168.1.100   192.168.1.1 RADIUS  124 Access-Challenge(11) (id=0, l=80)
192 2018-05-14 15:43:19.155723  192.168.1.1 192.168.1.100   RADIUS  215 Access-Request(1) (id=1, l=171)
193 2018-05-14 15:43:19.157221  192.168.1.100   192.168.1.1 RADIUS  108 Access-Challenge(11) (id=1, l=64)
195 
连接树莓派到需要邮箱和密码验证Wi-Fi网络,通常是通过设置WPA2 Enterprise(也称为802.1x或EAP-TLS)安全类型。以下是基本步骤: 1. **确保必要软件安装**: - 在树莓派上,首先确保已经安装了`wpa_supplicant`和`hostapd`(如果你计划作为热点提供)。如果没有,你可以使用`apt-get install wpa_supplicant hostapd`进行安装。 2. **创建配置文件**: - 创建或编辑`/etc/wpa_supplicant/wpa_supplicant.conf`,在其中添加个新的网络配置段落,包括SSID(网络名),EAP方法(如TLS),身份提供者(Identity Provider,比如你的电子邮件地址)以及密码: ```bash network={ ssid="Your Wi-Fi SSID" key_mgmt=WPA-EAP eap=TTLS identity="your_email@example.com" password="your_wpa_password" } ``` 3. **启用802.1X**: - 如果你想让树莓派作为个接入点(Access Point),而不是客户端,需要配置`hostapd`。编辑`/etc/hostapd/hostapd.conf`,加入类似下面的内容: ```bash interface=wlan0 driver=nl80211 country_code=XX #替换为你的国家代码 ap_scan=1 ctrl_interface=/var/run/hostapd eapol_version=1 ieee80211w=2 wpa=2 wpasupplicant=/usr/bin/wpasupplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf ``` 4. **启动服务**: - 重启树莓派的无线服务:`sudo systemctl restart hostapd wpa_supplicant`. 5. **测试连接**: - 等待树莓派完成启动过程后,试着用笔记本或其他设备尝试连接。首次连接时可能需要输入邮箱验证码,根据网络的具体设置,这可能是短信或邮件中的次性密码。 注意:这个过程可能因网络提供商的不同而略有差异,网络可能需要特定的设置或证书。如果遇到问题,查阅网络供应商提供的文档或在线寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值