手机SIM卡信息.doc_第1页
手机SIM卡信息.doc_第2页
手机SIM卡信息.doc_第3页
手机SIM卡信息.doc_第4页
手机SIM卡信息.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows mobile 下读取手机SIM卡信息收藏最近在忙一个移动警务的项目,需要获取SIM卡的信息,来做身份的验证。考虑到获取:国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)和国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number),读取这两个号码用到TAPI的lineGetGeneralInfo()函。在新版的OpenNetCF里没有发现对这个函数的封装(也许我没找到),于是到网上找了找,找到一个以前版本OpenNetCF里的:TapiLib.dll,包含对Windows ce phoneapi 的封装(TAPI),综合网上的一些资料,实现代码如下:public struct GeneralInfo public string Manufacturer; public string Model; public string Revision; public string SerialNumber; public string SubscriberNumber; / / Tapi控制类 / public class ControlTapi DllImport(cellcore.dll) private static extern int lineGetGeneralInfo(IntPtr hLigne,bytelpLineGeneralInfo ); / / 调用cellcore.dll获取sim卡的综合信息 / / / private GeneralInfo GetGeneralInfo(Line l) GeneralInfo lgi = new GeneralInfo(); byte buffer = new byte512; BitConverter.GetBytes(512).CopyTo(buffer, 0); if (lineGetGeneralInfo(l.hLine, buffer) != 0) throw new System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error(), TAPI Error: + System.Runtime.InteropServices.Marshal.GetLastWin32Error().ToString(X); int subscsize = BitConverter.ToInt32(buffer, 44); int subscoffset = BitConverter.ToInt32(buffer, 48); lgi.SubscriberNumber = System.Text.Encoding.Unicode.GetString(buffer, subscoffset, subscsize).ToString(); lgi.SubscriberNumber = lgi.SubscriberNumber.Replace(0, ); return lgi; / / 获取sim卡的IMSI / / public static string GetIMSINumber() string result = ; try Tapi t = new Tapi(); t.Initialize(); Line l = t.CreateLine(0, LINEMEDIAMODE.INTERACTIVEVOICE, OpenNETCF.Tapi.LINECALLPRIVILEGE.MONITOR); ControlTapi ctapi = new ControlTapi(); GeneralInfo gi = ctapi.GetGeneralInfo(l); result = gi.SubscriberNumber; l.Dispose(); t.Shutdown(); catch/ (Exception ex) result = ; return result; / / 获取IMEI的号码 / / public static string GetIMEINumber() string result = ; try Tapi t = new Tapi(); t.Initialize(); Line l = t.CreateLine(0, LINEMEDIAMODE.INTERACTIVEVOICE, OpenNETCF.Tapi.LINECALLPRIVILEGE.MONITOR); ControlTapi ctapi = new ControlTapi(); GeneralInfo gi = ctapi.GetGeneralInfo(l); result = gi.SerialNumber; l.Dispose(); t.Shutdown(); catch/ (Exception ex) result = ; return result; vb 的代码你可以去看看这里:/RetrieveIMEIThroughTAPI.aspx另:1、环境:在vs2005+windows mobile 5.0 多普达818测试通过。2、关于获取SIM卡的本机号码,你可以用:/china/msdn/archives/library/dnnetcomp/html/netcfPhoneAPI.asp,这里 提供的方法,不过这个方法需要安全认证,比较麻烦,具体认证的方式见:/china/MSDN/library/Mobility/pocketpc/2k3smartphonesecurity.mspx?pf=true。3、TapiLib.dll的下载地址:/Files/xjb/TapiLib.rar4、参考资料:/3328836.html读取SIM卡的一些信息用于PDA软件注册及安全使用最近从客户那边反应来一个需求,就是我们提交的软件中的PDA程序中的通讯录模块的信息安全方面做得不够,就是在如果PDA丢失时,这里的联系人信息就可能外泄。所以就提出了以下的解决方案:正常情况下,丢失后要更换SIM卡,无论是那一方。所以可通过重新注册新的SIM信息来验证是否可用。具体的方案细节就不详细说明了。其中技术方面关键的一环是如何识别唯一SIM卡。刚开始是读取SIM卡的本机号码,从/china/msdn/archives/library/dnnetcomp/html/netcfPhoneAPI.asp这篇文章提供的示例中封装的Sim类中就有提供一个Sim.GetPhoneNumber()方法方便获取本机号码。但是考虑到这个号码是可修改的且可以有很多个(通过PDA中提供的SIM管理器就可以修改)。所以得找其它的SIM卡信息,在这里用的是SIM卡中IMEI,IMSI(国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。IMEI组成如下图所示,移动终端设备通过键入“*#06#”即可查得。其总长为15位,每位数字仅使用09的数字。其中TAC代表型号装配码,由欧洲型号标准中心分配;FAC代表装配厂家号码;SNR为产品序号,用于区别同一个TAC和FAC中的每台移动设备;SP是备用编码。国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。IMSI组成如下图所示,其总长度不超过15位,同样使用09的数字。 其中MCC是移动用户所属国家代号,占3位数字,中国的MCC规定为460;MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网;MSIN是移动用户识别码,用以识别某一移动通信网中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论