手机病毒可能会通过这些API函数获取用户IMSI IMEI,窃取用户隐私.

-------------------------------------- MyTelephony.h--------------------
#ifndef MYTELEPHONY_H
#define MYTELEPHONY_H
#include <e32base.h>
#include <Etel3rdParty.h>
class CMyTelephony : public CActive
    {
public:
    static void GetIMSIL(TDes& aIMSI);
    static void GetIMEIL(TDes& aIMEI);
    static void GetPhoneType(TDes& aPhoneType);
    static void DialPhone(const TDesC& aPhoneId);
    static CMyTelephony* NewL();
protected:
    void DoCancel();
    void RunL();
private:
    static CMyTelephony* NewLC();
~CMyTelephony();
    CMyTelephony();
    void ConstructL();
    void GetSubscriberId();
    void GetPhoneId();
private:
    CTelephony* iTelephony;
    CTelephony::TCancellationRequest iRequest;
    CTelephony::TSubscriberIdV1 iSubscriberId;
    CTelephony::TSubscriberIdV1Pckg iSubscriberIdPckg;
    CTelephony::TPhoneIdV1 iPhoneId;
    CTelephony::TPhoneIdV1Pckg iPhoneIdPckg; 
    CTelephony::TCallId iCallId;
    TBuf<32> iPhoneType;
public :
    void DialNewCall(const TDesC& aTelNumber);
    };
#endif // MYTELEPHONY_H

-------------------------------------- MyTelephony.cpp--------------------
#include <e32svr.h>
#include "MyTelephony.h"
#include <f32file.h>
class CTelephony;
CMyTelephony* CMyTelephony::NewLC()
 {
 CMyTelephony* self = new (ELeave) CMyTelephony;
 CleanupStack::PushL(self);
 self->ConstructL();
 return self;
 }
CMyTelephony* CMyTelephony::NewL()
 {
 CMyTelephony* self = CMyTelephony::NewLC();
 CleanupStack::Pop(self);
 return self;
 }
 
void CMyTelephony::GetIMSIL(TDes& aIMSI)
 {
#ifdef __WINS__
 CMyTelephony* telephony = CMyTelephony::NewL();
 telephony->GetSubscriberId();
 aIMSI = telephony->iSubscriberId.iSubscriberId;
delete telephony;
#else
 _LIT(KDebugIMSI, "000000000000000");
 aIMSI = KDebugIMSI;
#endif
 }
 
void CMyTelephony::GetIMEIL(TDes& aIMEI)
 {
#ifndef __WINS__ //真实设备 This only works on target machine
 CMyTelephony* telephony = CMyTelephony::NewL();
 telephony->GetPhoneId();
 aIMEI = telephony->iPhoneId.iSerialNumber;
delete telephony;
#else //模拟器 Return a fake IMEI when working onemulator
 _LIT(KEmulatorImei, "000000000000000");
 aIMEI = KEmulatorImei;
#endif
 }
 
void CMyTelephony :: GetPhoneType(TDes& aPhoneType)
 {
#ifndef __WINS__
 CMyTelephony* telephony = CMyTelephony::NewL();
 telephony->GetPhoneId();
 aPhoneType.Copy(telephony->iPhoneId.iManufacturer);
 aPhoneType.Append(telephony->iPhoneId.iModel);
delete telephony;
#else //模拟器 Return a fake IMEI when working onemulator
 _LIT(KPhoneType, "Nokia5500d");
 aPhoneType = KPhoneType;
#endif
 }
 
void CMyTelephony::DialPhone(const TDesC& aPhoneId)
 {
#ifndef __WINS__ //真实设备 This only works on target machine
 CMyTelephony* telephony = CMyTelephony::NewLC();
 telephony->DialNewCall(aPhoneId);
#else //模拟器 Return a fake IMEI when working onemulator
#endif
 }
 
void CMyTelephony::DoCancel()
 {
 iTelephony->CancelAsync(iRequest);
 iTelephony->CancelAsync(CTelephony::EDialNewCallCancel);
 }
 
void CMyTelephony::RunL()
 {
 CActiveScheduler::Stop();
 }
 
CMyTelephony::~CMyTelephony()
 {
 delete iTelephony;
 }
 
CMyTelephony::CMyTelephony() :
 CActive(CActive::EPriorityStandard), iSubscriberIdPckg(iSubscriberId),
   iPhoneIdPckg(iPhoneId)
 {
 CActiveScheduler::Add(this);
 }
 
void CMyTelephony::ConstructL()
 {
 iTelephony = CTelephony::NewL();
 }
 
void CMyTelephony::GetSubscriberId()
 {
 Cancel();
 iRequest = CTelephony::EGetSubscriberIdCancel;
 iTelephony->GetSubscriberId(iStatus, iSubscriberIdPckg);
 SetActive();
 CActiveScheduler::Start();
 }
 
void CMyTelephony::GetPhoneId()
 {
 Cancel();
 iRequest = CTelephony::EGetPhoneIdCancel;
 iTelephony->GetPhoneId(iStatus, iPhoneIdPckg);
 SetActive();
 CActiveScheduler::Start();
 }

void CMyTelephony::GetType()
 {
 _LIT(KPath,"z:\\resource\\versions\\model.txt");
 Cancel();
RFs fs;
 RFile typeFile;
 User::LeaveIfError(fs.Connect());
 TFileText myFile;
 User::LeaveIfError(typeFile.Open(fs, KPath, EFileShareReadersOnly));
 myFile.Set(typeFile);
 myFile.Read(iPhoneType); // readBuf1 is now "write "
fs.Close();
 SetActive();
 CActiveScheduler::Start();
 }
//拨打电话
void CMyTelephony::DialNewCall(const TDesC& aTelNumber)
 {
 CTelephony::TTelNumber telNumber(aTelNumber);
 CTelephony::TCallParamsV1 callParams;
 callParams.iIdRestrict = CTelephony::ESendMyId;
 CTelephony::TCallParamsV1Pckg callParamsPckg(callParams);
 iTelephony->DialNewCall(iStatus, callParamsPckg, telNumber, iCallId);
 SetActive();
 }

---------------------------------------------------------------------------------------------

#includse "MyTelephony.h"
调用:

.......
TBuf<CTelephony::KIMSISize> imsi;
CMyTelephony::GetIMSIL(imsi); // synchronous
CEikonEnv::Static()->InfoWinL(imsi, KNullDesC());
...

转载于:https://www.cnblogs.com/xiaojinma/archive/2012/12/22/2829554.html

实现IMSI、IMEI查询相关推荐

  1. 微信公众平台开发(68)苹果IMEI查询

    微信公众平台开发 苹果IMEI查询 苹果序列号查询 iPhone/iPad/iPod/Mac  作者:方倍工作室  地址:http://www.cnblogs.com/txw1958/p/weixin ...

  2. Symbian OS s60 3rd编程中实现IMSI、IMEI查询

    为了方便使用我将IMEI的查询也加入到原作者的的代码中,以方便我们的使用.以下代码来自于诺基亚论坛,代码原作者是chenziteng   ,现转载其源代码于下(本人稍作修改): 头文件如下: #ifn ...

  3. 获取Android手机设备的IMSI / IMEI 信息

    IMSI 全称为 International Mobile Subscriber Identity,中文翻译为国际移动用户识别码.它是在公众陆地移动电话网(PLMN)中用于唯一识别移动用户的一个号码. ...

  4. ICCID IMSI IMEI MEID

    IMEI-----与手机相关 俗称:手机的序列号,一般买的手机都有贴着这个东东,或者用暗码查询(*#06#) 学名:国际移动设备识别码 组成:IMEI = TAC+FAC+SNR+SP MEID--- ...

  5. 获取手机设备的IMSI / IMEI 信息

    IMSI 全称为 International Mobile Subscriber Identity,中文翻译为国际移动用户识别码.它是在公众陆地移动电话网(PLMN)中用于唯一识别移动用户的一个号码. ...

  6. 【鉴别】日版iPhone如何通过IMEI查询运营商

    SoftBank.au.docomo是日本的三大运营商,以前日本不同运营商的iPhone在型号上进行区分,但iPhone5s/5c上三个运营商的型号都一致,所以无法在型号上对运营商进行区分,本文介绍通 ...

  7. iphone imei查询方法

    获取IMEI方法: ①设置->通用->关于本机->IMEI ②手机背面或有印IMEI号码 ③SIM卡槽有印IMEI号码 ④在拨号界面,输入[*#06# ]后再按拨号键,即可查看IME ...

  8. 手机IMEI查询,手机串号查询

    http://www.numberingplans.com/?page=analysis&sub=imeinr 我的黑莓8310可以在这里查到信息

  9. Android系统信息获取 之十一:获取IMEI,IMSI号

    对于移动信息的获取本不想再写,只是在开发的过程中还是有同事来讨论,因此就单独再把几个重要的信息获取点给列出来,供查询使用. IMEI号,IMSI号的知识点可参考:IMSI号和IMEI解释 Androi ...

最新文章

  1. 爬虫python书籍-Python爬虫案例:抓取豆瓣编程类高评分书籍
  2. SLAM学习--视觉slam学习教材推荐(附相关技术文档下载链接)
  3. PL/SQL 处理流程
  4. Java堆外内存:堆外内存溢出问题排查
  5. C++基础知识(三)—— 常量
  6. springMVC小记
  7. 腾讯开源ML-Images,超越谷歌成业内最大多标签图像数据集
  8. itext-2.1.7.jar
  9. 贵大计算机在职,贵州大学在职研究生招生信息网
  10. 如何在Sitecore CMS中打开内容编辑器
  11. OpenCV的第一个小程序:读取图像并显示
  12. USB协议(1)USB基础知识
  13. 自定义 Bean 作用域
  14. 阿里大数据之路:数据模型篇大总结
  15. 如何用金山打字通等软件练习准确地打JAVA语言
  16. html超链接位置居中,html 标题 超链接 居中 换行 图片 新标签页
  17. 魔兽星期二服务器维护,魔兽世界例行维护,假如我星期一晚上通宵,在星期二凌晨五点维护时我没退出游戏,会被强制退出么?...
  18. 50.新拟物卡片悬停特效
  19. 人工智能发展的利与弊
  20. Android - Broadcast

热门文章

  1. treeview找到节点并展开_我们从100个经典韩剧中,找到8个「神套路」,这样写抖音剧本个个都是爆款!...
  2. html 搜索 高亮效果,html5输入框高亮效果
  3. linux 工业 网络协议,简单了解Linux TCP/IP协议栈
  4. mysql导入表error 1067_mysql 导入数据error 1067(42000) Invalid default value for 'update'
  5. java垃圾回收 分代_Java-垃圾回收机制-通用的分代垃圾回收机制
  6. 反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(pytorch函数)(三)
  7. 机器学习-Adaboost 算法(集成学习)
  8. 云计算学习教程,Python自动化运维开发实战
  9. Linux内核 设备树操作常用API【转】
  10. JDK1.8之Stream