获取windows mobile 采集器设备的唯一机器号

来源:互联网 发布:浙大冰虫靠谱不知乎 编辑:程序博客网 时间:2024/05/29 04:49

网上找到一个获取windows mobile 系统的机器的唯一机器号的方法,标记在这里,便于查找。

GetDeviceUniqueID:http://blogs.msdn.com/b/windowsmobile/archive/2006/01/09/510997.aspx

 

有一个新的 API 可用于检索在 Windows Mobile 5.0 的设备 id 的掌上电脑和智能手机。第一个问题: 我们为什么需要获取设备的 ID 的一种新方法有什么不对劲,老?回答您需要知道什么设备 ID 是。有一个非常好和详细解释 在这里, 但它本质上是从硬件的特定信息,都是唯一的每个设备的 16 字节代码。此 ID 不是 imei 号码相同,或两者都可以更改,但此代码生活而死与设备基于电话的设备上发现的电话号码。

所以设备 ID 是非常有用的东西的软件的目标只是您的设备,例如复制保护,或提供 web 服务调用的不可变的身份。同样,它是一种资源,应保护,以降低身份信息窃取的风险。

获取设备 id 相对直截了当,但需要一些 c + + 或合理数量的互操作的代码。Api 是像这样的东西:

KernelIoControl (IOCTL_HAL_GET_DEVICEID,0,0 缓冲区 GuidLength,出 bytesReturned) ;

保护设备 ID 一直是目前作为智能手机安全模型的 KernelIoControl API 特权的操作意味着您的代码必须运行将能够访问此 API 的受信任的代码组中。但这两个问题:

1 > 并包括 Pocket PC 2003SE 有没有安全模型,以保护该的 API,因此在 Pocket PC 没有任何保护的设备 id。

2 > 做什么不受信任的应用程序执行时他们要对此 API 的访问吗?

3 > 有很多应用程序读取和使用的设备 id 可能会增加身份信息窃取的受攻击面。

GetDeviceUniqueID 尝试解决这些问题,并减少对贵重的设备 id 的应用程序依赖。首先可以从这些受信任的或不受信任的代码中调用 GetDeviceUniqueID,但返回的代码不是 KernelIoControl,呼吁相同其 20 字节代码不是一个 16 字节代码。GetDeviceUniqueID 附加参数由应用程序定义的 char 数组组成的数组,并使用单向哈希将真正的设备 id 和生成新的 20 字节代码的 char 数组参数结合起来。这意味着应用程序总是会得到相同的 20 字节代码,如果具有相同的 char 数组的相同设备调用 GetDeviceUniqueID。这也意味着没有任何实际的方法的主张从一个应用程序使用的 20 字节密钥的真正的设备 id。

这是一个公开的 coredll.dll,所以在这里是托管的代码片段显示如何通过互操作获取信息的本机 API。标准代码的免责声明

/ *

HRESULT GetDeviceUniqueID(

LPBYTE pbApplicationData

Dword 值 cbApplictionData

Dword 值 dwDeviceIDVersion

LPBYTE pbDeviceIDOutput

Dword 值 * pcbDeviceIDOutput

);

* /

[DllImport ("coredll.dll")]

私人外部 静态 int GetDeviceUniqueID ([中、 外] 字节 [] appdata,

int cbApplictionData

int dwDeviceIDVersion

[中、 外] 字节 [] deviceIDOuput,

uint pcbDeviceIDOutput) ;

 

私人byte [] (字符串 AppString) GetDeviceID

{

    / / 调用,GetDeviceUniqueID

byte [] AppData = 字节 [AppString.Length] ;

(int 计数 = 0; 计数 < AppString.Length ; 数 + +)

AppData [计数] = (字节) AppString [计数] ;

int appDataSize = AppData.Length ;

[DeviceOutput] 字节 = 字节 [20] ;

uint SizeOut = 20 ;

GetDeviceUniqueID (AppData,appDataSize,1,DeviceOutput, SizeOut) ;

返回 DeviceOutput ;

}

 

完整的项目的代码 在这里。

 

马库斯

原创粉丝点击