CTP-GetSystemInfo
获取AES加密和RSA加密的终端信息。该函数来自采集终端信息的动态链接库(安卓版的函数名和使用方法较windows和linux有所区别,请注意阅读API包相关说明文档)。
仅中继模式下的客户端需要调用此函数来采集信息。中继需要将客户端采集到的信息上报给CTP。
直连模式下,登录的时候自动采集并上报终端信息,所以无需调用。
采集库在win、linux、android上不是线程安全的,不要并发调用,ios是线程安全的
采集库暂时不采集IPv6地址
1. 函数原型
int CTP_GetSystemInfo(char* pSystemInfo, int& nLen);
2. 参数
pSystemInfo:空间需要调用者自己分配至少270个字节。
要注意这并不是一个字符串,而是数组,因为多次加密后可能断串,使用memcpy拷贝值而不是strcpy。
nLen:获取到的采集信息的长度。
3. 返回
0 为正确,非0为错误。
具体哪个采集项有问题需要做如下判断:
windows返回值定义:
从低位开始分别标示 终端信息 ->系统盘分区信息
返回值 & (0x01 << 0) 不为0 表示终端类型未采集到
返回值 & (0x01 << 1) 不为0 表示 信息采集时间获取异常
返回值 & (0x01 << 2) 不为0 表示ip 获取失败 (采集多个相同类型信息的场景有一个采集到 即表示采集成功)
返回值 & (0x01 << 3) 不为0 表示mac 获取失败
返回值 & (0x01 << 4) 不为0 表示 设备名 获取失败
返回值 & (0x01 << 5) 不为0 表示 操作系统版本 获取失败
返回值 & (0x01 << 6) 不为0 表示 硬盘序列号 获取失败
返回值 & (0x01 << 7) 不为0 表示 CPU序列号 获取失败
返回值 & (0x01 << 8) 不为0 表示 BIOS 获取失败
返回值 & (0x01 << 9) 不为0 表示 系统盘分区信息 获取失败
Linux返回值定义:
从低位开始分别标示 终端信息 -> BIOS信息
返回值 & (0x01 << 0) 不为0 表示终端类型未采集到
返回值 & (0x01 << 1) 不为0 表示 信息采集时间获取异常
返回值 & (0x01 << 2) 不为0 表示ip 获取失败 (采集多个相同类型信息的场景有一个采集到 即表示采集成功)
返回值 & (0x01 << 3) 不为0 表示mac 获取失败
返回值 & (0x01 << 4) 不为0 表示 设备名 获取失败
返回值 & (0x01 << 5) 不为0 表示 操作系统版本 获取失败
返回值 & (0x01 << 6) 不为0 表示 硬盘序列号 获取失败
返回值 & (0x01 << 7) 不为0 表示 CPU序列号 获取失败
返回值 & (0x01 << 8) 不为0 表示 BIOS 获取失败
4. 调用示例
5. FAQ
终端采集到的信息,保存到数据库里后显示为乱码,怎么办?
|
可以使用BASE64转码成可见字符后再存储。 |
在windows下调用该函数后,控制台窗口打印出一些日志,提示找不到wmic之类的信息,这个有关系吗?
|
有关系,采集函数需要调用相关windows组件来采集设备信息,如果没有对应组件,则会采集不到相应信息,不符合监管要求。 |
在linux下调用该函数后,控制台窗口会输出一些报错日志,提示没有权限之类的错误,这个有关系吗?
|
有关系,采集函数需要调用linux命令来采集设备信息,如果没有对应权限,则会采集不到相应信息,不符合监管要求。 |