最近从客户那边反应来一个需求,就是我们提交的软件中的PDA程序中的通讯录模块的信息安全方面做得不够,就是在如果PDA丢失时,这里的联系人信息就可能外泄。
所以就提出了以下的解决方案:
正常情况下,丢失后要更换SIM卡,无论是那一方。所以可通过重新注册新的SIM信息来验证是否可用。具体的方案细节就不详细说明了。其中技术方面关键的一环是如何识别唯一SIM卡。
刚开始是读取SIM卡的本机号码,从http://www.microsoft.com/china/msdn/archives/library/dnnetcomp/html/netcfPhoneAPI.asp这篇<<从Microsoft .NET Framework 精简版访问电话API>>文章提供的示例中封装的Sim类中就有提供一个Sim.GetPhoneNumber()方法方便获取本机号码。
但是考虑到这个号码是可修改的且可以有很多个(通过PDA中提供的SIM管理器就可以修改)。所以得找其它的SIM卡信息,在这里用的是SIM卡中IMEI,IMSI(国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。IMEI组成如下图所示,移动终端设备通过键入“*#06#”即可查得。其总长为15位,每位数字仅使用0~9的数字。其中TAC代表型号装配码,由欧洲型号标准中心分配;FAC代表装配厂家号码;SNR为产品序号,用于区别同一个TAC和FAC中的每台移动设备;SP是备用编码。
国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。IMSI组成如下图所示,其总长度不超过15位,同样使用0~9的数字。 其中MCC是移动用户所属国家代号,占3位数字,中国的MCC规定为460;MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网;MSIN是移动用户识别码,用以识别某一移动通信网中的移动用户。)
读取这两个号码用到TAPI的lineGetGeneralInfo()函数。而OpenNetCF提供了对TAPI的封装,正好可以拿来用。
其中的具体的应用可查看