把自定义字符串写入设备作为软件加密狗功能示例代码
1. 修改写入字符串权限密码 [设备出厂默认为空]
Json::Value json_param;
json_param["cmd"] = "modify_write_pwd";
json_param["old_pwd"] = (char*)(LPCTSTR)m_strOld_Write_Pwd;
json_param["new_pwd"] = (char*)(LPCTSTR)m_strNew_Write_Pwd;
int ret = agi_ub_action_param("", AGI_UB_JSON_ACTION_VALUE_FLASH_DATA, json_param.toFastString_().c_str(), nullptr, 0);
if (ret != ERR_NO)
{
std::string s_err = "";
if (ret == -41) s_err = "[老密码错误!]";
else if (ret == -42) s_err = "[读取FLASH信息失败]";
else s_err = "[其它错误!]";
CString s;
s.Format("更新写入密码失败:%d %s", ret, s_err.c_str());
MessageBox(s, "警告", MB_OK | MB_ICONWARNING);
}
else
{
MessageBox("修改写入密码成功 !!!\r\n\r\n 请牢记密码,忘记密码只能联系商务复位设备!!!", "警告", MB_OK | MB_ICONWARNING);
}
2. 修改读取字符串权限密码 [设备出厂默认为空]
Json::Value json_param;
json_param["cmd"] = "modify_read_pwd";
json_param["old_pwd"] = (char*)(LPCTSTR)m_strOld_Read_Pwd;
json_param["new_pwd"] = (char*)(LPCTSTR)m_strNew_Read_Pwd;
int ret = agi_ub_action_param("", AGI_UB_JSON_ACTION_VALUE_FLASH_DATA, json_param.toFastString_().c_str(), nullptr, 0);
if (ret != ERR_NO)
{
std::string s_err = "";
if (ret == -41) s_err = "[老密码错误!]";
else if(ret == -42) s_err = "[读取FLASH信息失败]";
else s_err = "[其它错误!]";
CString s;
s.Format("更新读取密码失败:%d %s", ret, s_err.c_str());
MessageBox(s, "警告", MB_OK | MB_ICONWARNING);
}
else
{
MessageBox("修改读取密码成功 !!!\r\n\r\n 请牢记密码,忘记密码只能联系商务复位设备!!!", "警告", MB_OK | MB_ICONWARNING);
}
3. 写入标记字符串 [最多64字节]
Json::Value json_param;
json_param["cmd"] = "write_data";
json_param["write_pwd"] = (char*)(LPCTSTR)m_strWrite_Pwd;
//用在软件加密功能时可以用 设备guid + 私钥 + 软件型号 后进行MD5,读取后进行校验是否为本软件的设备
json_param["data"] = (char*)(LPCTSTR)m_strWrite_Data;
int ret = agi_ub_action_param("", AGI_UB_JSON_ACTION_VALUE_FLASH_DATA, json_param.toFastString_().c_str(), nullptr, 0);
if (ret != ERR_NO)
{
std::string s_err = "";
if (ret == -41) s_err = "[密码错误!]";
else if (ret == -42) s_err = "[读取FLASH信息失败]";
else s_err = "[其它错误!]";
CString s;
s.Format("写入数据失败:%d %s", ret, s_err.c_str());
MessageBox(s, "警告", MB_OK | MB_ICONWARNING);
}
else
{
MessageBox("写入数据完成 !!!", "警告", MB_OK | MB_ICONWARNING);
}
4. 读取标记字符串
Json::Value json_param;
json_param["cmd"] = "read_data";
json_param["read_pwd"] = (char*)(LPCTSTR)m_strRead_Pwd;
char out_json[4096] = { 0 };
int ret = agi_ub_action_param("", AGI_UB_JSON_ACTION_VALUE_FLASH_DATA, json_param.toFastString_().c_str(), out_json, 4096);
if (ret != ERR_NO)
{
std::string s_err = "";
if (ret == -41) s_err = "[密码错误!]";
else if (ret == -42) s_err = "[读取FLASH信息失败]";
else s_err = "[其它错误!]";
CString s;
s.Format("读取数据失败:%d %s", ret, s_err.c_str());
MessageBox(s, "警告", MB_OK | MB_ICONWARNING);
}
else
{
Json::Value json_out_data;
Json::Reader r;
r.parse(out_json, out_json + strlen(out_json), json_out_data);
m_strRead_Data = json_out_data["data"].asString().c_str();
}