Android Wi-Fi EAP-SIM代码解析

本文详细介绍了在EAP-SIM认证过程中wpa_supplicant的工作流程,包括发送APDU-Command:"SELECT"到ApduService进行SIM卡文件系统中的文件选择,并解释了正确的APDU-Response及其含义。同时,文章还概述了ApduService如何通过Unix套接字监听并处理来自wpa_supplicant的请求。

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

1. wpa_supplicant

During the process of EAP-SIM Authentication, wpa_supplicant will send APDU-Command:"SELECT" to ApduService.

  1. The "SELECT" Command means to select one file from the file system of SIM Card

  2. The right APDU-Response is 0x61, or 0x6c, or 0x9f, which means the APDU-Command executed successfully;

  3. The wrong APDU-Response is 0x6a82, which means "Selected file not found", according to the protocol: ETSI GSM 11.11

    scard_get_imsi()
         |-->scard_select_file()
               |-->_scard_select_file()
                    |-->scard_transmit()
                         |-->SCardTransmit()
                              |-->(1)socket_local_client()-->open socket and connect
                              |      |-->socket()
                              |      |-->socket_local_client_connect()
                              |           |-->connect()
                              |-->(2)send()
                              |-->(3)select()
                              |-->(4)recv()

2. ApduService

The ApduService is responsible for setting up a Unix socket when Wifi starts and listening for incoming connections.
Data read from the socket will be parsed and transmitted as a APDU Command to Telephony.
The response will be sent back over the socket. The socket's name is sent to the wpa supplicant.

frameworks/opt/net/wifi/service/java/com/android/server/wifi/ApduService.java 
 

    runService()
     |-->(1)waitForConnection()
     |        |-->ServerSocket.accept()
     |-->(2)communicationWithClient()
              |-->ConnectionSocket.getInputStream()
              |-->ConnectionSocket.getOutputStream()
              |-->phone.iccTransmitApduBasicChannel()

3. PhoneInterfaceManager 

/packages/services/Telephony/src/com/android/phone/PhoneInterfaceManager.java

(1) important events:
	EVENT_TRANSMIT_APDU_LOGIC_CHANNEL_DONE   
	EVENT_TRANSMIT_APDU_BASIC_CHANNEL_DONE   
(2) important commands:   
	CMD_TRANSMIT_APDU_LOGIC_CHANNEL   
	CMD_TRANSMIT_APDU_BASIC_CHANNEL   
(3) important methods:   
	iccTransmitApduLogicalChannel()   
	iccTransmitApduBasicChannel()   
(4) related System Property:   
	[gsm.sim.operator.numeric] 

为了确保Wi-Fi网络的安全性,EAP-SIM认证提供了一种利用SIM卡进行用户认证的方式。EAP-SIM认证机制通过用户SIM卡中的密钥和网络侧的认证服务器进行交互,保证了认证过程的安全性。要配置EAP-SIM认证,首先需要理解其工作原理和必要的配置步骤。你可以参考《基于Hostapd完成EAP-SIM方式Wifi连接》这份文档,它详细介绍了EAP-SIM的基本概念和配置流程,特别适合想要在Linux环境下使用Hostapd配置EAP-SIM认证的用户。 参考资源链接:[基于Hostapd完成EAP-SIM方式Wifi连接](https://wenku.youkuaiyun.com/doc/6412b55bbe7fbd1778d42daf?spm=1055.2569.3001.10343) 具体操作步骤如下:首先,在你的Linux服务器上安装Hostapd软件包,确保安装的版本支持EAP-SIM。然后,你需要准备一个支持EAP-SIMWi-Fi网卡,并配置相关的网络接口。接下来,编辑Hostapd的配置文件,设置SSID(网络名称)、加密方式(比如WPA2)、EAP类型为EAP-SIM以及其他必要的参数。配置文件中还需要指定认证服务器的相关信息,比如认证服务器的地址、密钥等。完成配置后,重启Hostapd服务以使新的配置生效。 配置EAP-SIM认证时,确保理解SIM卡中的认证数据如何与认证服务器进行交互,并正确处理SIM卡认证过程中的各种消息。此外,网络管理员应当确保认证服务器是安全的,并且配置了正确的用户数据和权限,以保证整个认证过程的安全性。 如果你已经成功完成了EAP-SIM的配置,用户就可以通过其SIM卡来进行Wi-Fi网络的认证和连接。这样,不仅可以提高网络安全水平,还可以为用户提供更便利的接入方式。为了深入理解和掌握EAP-SIM在Hostapd环境下的配置方法,建议详细阅读《基于Hostapd完成EAP-SIM方式Wifi连接》,文档中包含了实验所需的所有细节和步骤,能够帮助你更全面地理解和掌握这一技术。 参考资源链接:[基于Hostapd完成EAP-SIM方式Wifi连接](https://wenku.youkuaiyun.com/doc/6412b55bbe7fbd1778d42daf?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值