实现IMSI、IMEI查询
手机病毒可能会通过这些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查询相关推荐
- 微信公众平台开发(68)苹果IMEI查询
微信公众平台开发 苹果IMEI查询 苹果序列号查询 iPhone/iPad/iPod/Mac 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/weixin ...
- Symbian OS s60 3rd编程中实现IMSI、IMEI查询
为了方便使用我将IMEI的查询也加入到原作者的的代码中,以方便我们的使用.以下代码来自于诺基亚论坛,代码原作者是chenziteng ,现转载其源代码于下(本人稍作修改): 头文件如下: #ifn ...
- 获取Android手机设备的IMSI / IMEI 信息
IMSI 全称为 International Mobile Subscriber Identity,中文翻译为国际移动用户识别码.它是在公众陆地移动电话网(PLMN)中用于唯一识别移动用户的一个号码. ...
- ICCID IMSI IMEI MEID
IMEI-----与手机相关 俗称:手机的序列号,一般买的手机都有贴着这个东东,或者用暗码查询(*#06#) 学名:国际移动设备识别码 组成:IMEI = TAC+FAC+SNR+SP MEID--- ...
- 获取手机设备的IMSI / IMEI 信息
IMSI 全称为 International Mobile Subscriber Identity,中文翻译为国际移动用户识别码.它是在公众陆地移动电话网(PLMN)中用于唯一识别移动用户的一个号码. ...
- 【鉴别】日版iPhone如何通过IMEI查询运营商
SoftBank.au.docomo是日本的三大运营商,以前日本不同运营商的iPhone在型号上进行区分,但iPhone5s/5c上三个运营商的型号都一致,所以无法在型号上对运营商进行区分,本文介绍通 ...
- iphone imei查询方法
获取IMEI方法: ①设置->通用->关于本机->IMEI ②手机背面或有印IMEI号码 ③SIM卡槽有印IMEI号码 ④在拨号界面,输入[*#06# ]后再按拨号键,即可查看IME ...
- 手机IMEI查询,手机串号查询
http://www.numberingplans.com/?page=analysis&sub=imeinr 我的黑莓8310可以在这里查到信息
- Android系统信息获取 之十一:获取IMEI,IMSI号
对于移动信息的获取本不想再写,只是在开发的过程中还是有同事来讨论,因此就单独再把几个重要的信息获取点给列出来,供查询使用. IMEI号,IMSI号的知识点可参考:IMSI号和IMEI解释 Androi ...
最新文章
- 爬虫python书籍-Python爬虫案例:抓取豆瓣编程类高评分书籍
- SLAM学习--视觉slam学习教材推荐(附相关技术文档下载链接)
- PL/SQL 处理流程
- Java堆外内存:堆外内存溢出问题排查
- C++基础知识(三)—— 常量
- springMVC小记
- 腾讯开源ML-Images,超越谷歌成业内最大多标签图像数据集
- itext-2.1.7.jar
- 贵大计算机在职,贵州大学在职研究生招生信息网
- 如何在Sitecore CMS中打开内容编辑器
- OpenCV的第一个小程序:读取图像并显示
- USB协议(1)USB基础知识
- 自定义 Bean 作用域
- 阿里大数据之路:数据模型篇大总结
- 如何用金山打字通等软件练习准确地打JAVA语言
- html超链接位置居中,html 标题 超链接 居中 换行 图片 新标签页
- 魔兽星期二服务器维护,魔兽世界例行维护,假如我星期一晚上通宵,在星期二凌晨五点维护时我没退出游戏,会被强制退出么?...
- 50.新拟物卡片悬停特效
- 人工智能发展的利与弊
- Android - Broadcast
热门文章
- treeview找到节点并展开_我们从100个经典韩剧中,找到8个「神套路」,这样写抖音剧本个个都是爆款!...
- html 搜索 高亮效果,html5输入框高亮效果
- linux 工业 网络协议,简单了解Linux TCP/IP协议栈
- mysql导入表error 1067_mysql 导入数据error 1067(42000) Invalid default value for 'update'
- java垃圾回收 分代_Java-垃圾回收机制-通用的分代垃圾回收机制
- 反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(pytorch函数)(三)
- 机器学习-Adaboost 算法(集成学习)
- 云计算学习教程,Python自动化运维开发实战
- Linux内核 设备树操作常用API【转】
- JDK1.8之Stream