По инструкции с ютуба Decrypt ZTE router configuration backup file (Type 2)
Раскопал следующее в cspd файле f670.
Только в моём случае есть отличие, на сколько я могу понять тут два ключа и всё немного сложней.
undefined4 CspDBInitPdtInterface(undefined4 *param_1)
{
dbAddCfgItem(0xffff,0,"/userconfig/cfg/db_user_cfg.xml");
dbAddCfgItem(0xffff,1,"/userconfig/cfg/db_default_cfg.xml");
dbAddCfgItem(0xffff,2,"/userconfig/cfg/db_backup_cfg.xml");
param_1[2] = 1;
param_1[3] = CspDBSetBackupItem;
param_1[7] = dbPdtTransferCfg;
*param_1 = 0;
strncpy((char *)((int)param_1 + 0x117),"L04&Product@5A238dc79b15726d5c05",0x20);
strncpy((char *)(param_1 + 0x4e),"ZTE%FN$GponNJ025678b02a85c63c705",0x20);
PdtDBSetUserCfgAESCBCEncryKey((int)param_1 + 0xd5,(int)param_1 + 0xf6,0x21,0x21);
return 0;
}
void PdtDBSetUserCfgAESCBCEncryKey(char *param_1,char *param_2,size_t param_3,size_t param_4)
{
int iVar1;
undefined auStack_74 [64];
uint local_34;
local_34 = (uint)(param_2 == (char *)0x0 || param_1 == (char *)0x0);
if (param_2 != (char *)0x0 && param_1 != (char *)0x0) {
memset(auStack_74,local_34,0x40);
iVar1 = GetTagParam(0x200,auStack_74,0x40);
if (iVar1 == 0) {
snprintf(param_1,param_3,"8dc79b15726d5c46%s",auStack_74);
snprintf(param_2,param_4,"678b02a85c63c786%s",auStack_74);
}
else {
strncpy(param_1,"8dc79b15726d5c46d412af8cbed65aad",param_3 - 1);
strncpy(param_2,"678b02a85c63c786def4523b061265e8",param_4 - 1);
}
}
return;
}
Дальше непонятно как это применить.