集成海康威视Sadp SDK实现重置密码

您所在的位置:网站首页 海康威视ipc激活密码忘记 集成海康威视Sadp SDK实现重置密码

集成海康威视Sadp SDK实现重置密码

2024-07-10 08:43| 来源: 网络整理| 查看: 265

下面将介绍集成SadpSDK的接口调用流程,以及使用到的接口功能说明。如有疑问欢迎留言探讨。

 

 图中橘黄色部分为程序外部操作。

 

判断设备支持的重置方式

       导出导入文件重置密码,设备基本上都支持 重置密码 或者 重置密码方式2 ,由于重置密码方式2方案更安全所以如果支持的话优先选择使用重置密码方式2

                 SADP_DEVICE_INFO结构体中

                          (bySupport & 0x40 ) == 1,表示支持重置密码

                          (bySupport1 & 0x01 ) == 1,表示支持重置密码方式2

 

获取设备码

       获取接口 SADP_GetDeviceConfig, 命令码为SADP_GET_DEVICE_CODE。获取到设备码后将字符串保存到一个本地文件中(例如:Device.xml)。然后将这个文件发送给海康技术支持,他们会返回一个设备重置口令文件给你,该文件中的字符串将作为重置密码接口的一个输入参数

 

 

获取解密串

       获取接口 SADP_GetDeviceConfig, 命令码为 SADP_GET_ENCRYPT_STRING。获取到加密串后将字符串保存到一个本地文件中(例如:Device.xml)。然后将这个文件发送给海康技术支持,他们会返回一个设备重置口令文件给你,该文件中的字符串将作为重置密码接口的一个输入参数

 

重置密码

       重置接口 SADP_ResetPasswd_V40。该接口最重要的就是需要 设备重置口令。

 

 

 示例代码

 

#include #include #include "Sadp.h" //设备信息回调函数 void CALLBACK SadpDataCallBack(const SADP_DEVICE_INFO_V40 *lpDeviceInfoV40, void* pUserData) { printf("\r\n----------------------------------------\r\n"); printf(" IP %s\r\n", lpDeviceInfoV40->struSadpDeviceInfo.szIPv4Address); //设备ip printf(" Mac %s\r\n", lpDeviceInfoV40->struSadpDeviceInfo.szMAC); //设备Mac地址 printf("SerialNO %s\r\n", lpDeviceInfoV40->struSadpDeviceInfo.szSerialNO); //设备序列号 printf(" Result %d\r\n", lpDeviceInfoV40->struSadpDeviceInfo.iResult); //消息类型: 1.设备上线, 2.设备更新, 3.设备下线 printf("\r\n----------------------------------------\r\n"); } //导出导入文件重置密码 int main(void) { //开启sadp日志 3(打印所以日志) "C:\\SadpLog"(日志目录) false(保留所有日志文件) SADP_SetLogToFile(3, "C:\\SadpLog", false); //开启sadp服务 int iRet = SADP_Start_V40(SadpDataCallBack); if (iRet == 0) { //开启失败,获取错误码 int iError = SADP_GetLastError(); printf("SADP_Start_V40 Failed! Err(%d)\r\n", iError); } //等待一会,修改网络参数前需要SDK搜索到被修改设备才行 Sleep(10000); //这里以重置密码方式2为例 SADP_ENCRYPT_STRING struEncryptString; iRet = SADP_GetDeviceConfig("DS-2CD2622FWD-IZS20180312BBWR681619114", SADP_GET_ENCRYPT_STRING, NULL, 0, &struEncryptString, sizeof(struEncryptString)); if (iRet == 0) { int iError = SADP_GetLastError(); char szTemp[100] = { 0 }; if (iError == SADP_NOT_ACTIVATED) { printf("设备未激活!"); } else if (iError == SADP_TIMEOUT) { printf("获取超时!"); } else if (iError == SADP_DEVICE_DENY) { printf("设备拒绝处理!"); } else { printf("Get device code failed, Error code%d", iError); } //释放资源 SADP_Stop(); return 0; } printf("Get device code succ, [%s]", struEncryptString.szEncryptString); //将加密串写入本地文件 FILE *pFile = fopen("C:\\Device.xml", "wb"); if (NULL == pFile) { printf("Open File failed"); //释放资源 SADP_Stop(); return 0; } int iWriteLen = fwrite(struEncryptString.szEncryptString, sizeof(BYTE), strlen(struEncryptString.szEncryptString), pFile); if (0 == iWriteLen) { printf("Write 0 Byte Data"); //释放资源 SADP_Stop(); return 0; } else { if (NULL != pFile) { fclose(pFile); pFile = NULL; } } //---------------------------------------------------------------------------------------------------------------------------------------- //待拿到设备重置口令后,执行下面代码流程 //---------------------------------------------------------------------------------------------------------------------------------------- SADP_RESET_PARAM_V40 struResetParamV40 = { 0 }; struResetParamV40.dwSize = sizeof(struResetParamV40); struResetParamV40.byResetType = 2; //导出导入文件方式 strcpy(struResetParamV40.szPassword, "hik12345"); strcpy(struResetParamV40.szAuthFile, "C:\\Encrypt_681619114_o2.xml"); //设备重置口令文件 SADP_RET_RESET_PARAM_V40 struRetResetParamV40 = { 0 }; //导出导入文件重置密码 参数1:设备序列号 参数2:重置密码参数结构体 参数3:锁定信息结构体 iRet = SADP_ResetPasswd_V40("DS-2CD2622FWD-IZS20180312BBWR681619114", &struResetParamV40, &struRetResetParamV40); if (iRet == 0) { //开启失败,获取错误码 int iError = SADP_GetLastError(); printf("SADP_ResetPasswd_V40 Failed! Err(%d)\r\n", iError); if (iError == SADP_LOCKED) { printf("设备已锁定,锁定时间:%d 分钟.", struRetResetParamV40.bySurplusLockTime); } else if (iError == SADP_PASSWORD_ERROR) { printf("密码错误,剩余尝试修改次数:%d 次.", struRetResetParamV40.byRetryGUIDTime); } else if (iError == SADP_NOT_ACTIVATED) { printf("设备未激活"); } } else { printf("SADP_ResetPasswd_V40 Succ!\r\n"); } //释放资源 SADP_Stop(); }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3