很多公司内部的无线网络会用到LEAP认证机制,需要通过输入用户名和密码来登陆到无线网络。如果你使用的是iOS设备,系统只会会提示你输入用户名和密码,你完全可以不必理会和无限网络技术相关的任何东西,而很遗憾的是,如果你手头上是一个Android设备,当你选择公司WiFi的时候系统弹出框会有几个项目需要自行选择,其中并没有出现LEAP字样(会有PEAP,EAP-TLS等),所以即便输入了用户名和密码也无法登陆。
事实上,Android本身是支持LEAP的,只是没有在图形界面中加入这一选项。这个问题早在2009年初就有人在Android的Google Project讨论区提出,跟帖很多,但是似乎并没有引起Android团队足够的重视,据我所知,直到Android 2.3 LEAP依然没有加入到WiFi的设定选项里,原因不明。
解决方案有两个:
- 手动修改wpa_supplicant配置文件,加入LEAP无线网络配置信息
- 安装第三方APP
方案一:手动修改wpa_supplicant配置文件,要 Root 权限
Android将所有连接过的WiFi热点信息都保存在/data/misc/wifi/wpa_supplicant.conf这个配置文件下,包括SSID,加密方式,WiFi密码等等,所以我们只要手动加入LEAP无线网络的完整信息,然后重启WiFi,系统就会重新获取配置文件中的信息,我们就能够登入新加入的LEAP无线网络了。
网上有wpa_supplicant.conf的完整说明文件和范例,大家可以参考。关于LEAP无线网络的范例如下:
network={
ssid=“无限网络名称“
key_mgmt=你的无线网络使用的加密方式
eap=LEAP
identity=“用户名“
password=“密码“
}
关于key_mgmt,如果不设置,默认为最常见的WPA-PSK WPA-EAP。具体列表如下:
# key_mgmt: list of accepted authenticated key management protocols
# WPA-PSK = WPA pre-shared key (this requires 'psk' field)
# WPA-EAP = WPA using EAP authentication
# IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically
# generated WEP keys
# NONE = WPA is not used; plaintext or static WEP could be used
# WPA-PSK-SHA256 = Like WPA-PSK but using stronger SHA256-based algorithms
# WPA-EAP-SHA256 = Like WPA-EAP but using stronger SHA256-based algorithms
# If not set, this defaults to: WPA-PSK WPA-EAP
所以,对于一个SSID为digglife,使用WPA-EAP加密的LEAP无线网络,我们以用户名momojie和密码123456登陆,可以写成下面这样:
network={
ssid=“digglife“
key_mgmt=WPA-EAP
eap=LEAP
identity=“momojie“
password=“123456“
}
将以上几行添加到wpa_supplicant.conf文件中即可。至于修改方法,我想就不必赘述了,用惯终端(或命令提示符)+ADB interface的朋友应该很熟悉。不习惯命令行的利用Root Explorer修改也可以。
注意,如果你在本地修改后上传到手机端,注意最后修改一下文件的权限、文件Owner和Group,否则在机器重启之后,系统可能无法读写这个配置文件,导致WiFi会提示错误。原始文件的权限设定如下:
-rw-rw---- 1 system wifi 444 Apr 7 19:49 wpa_supplicant.conf
方案二,安装第三方WiFi配置APP
下面介绍的这些APP只是将以上步骤UI化了而已,原理都是一致的,另外也不需要Root权限。
- Full WiFi 支持LEAP WiFi, PEAP, TKIP, CCMP等等,设定选项也很全面。
- LEAP WiFi Free 只针对LEAP WiFi的Android App,设定简单,输入SSID、用户名和密码,保存之后就可以在系统的WiFi设置里连接了。
如果你手机已经获得Root权限,我还是建议使用第一种方法,不安装APP就能解决,何乐而不为?