mirror of
https://github.com/DarkStore-3DS/Project_CTR.git
synced 2026-07-02 16:59:03 +00:00
makerom v0.8
This commit is contained in:
@@ -15,13 +15,13 @@ YAML_OBJS = libyaml/api.o libyaml/dumper.o libyaml/emitter.o libyaml/loader.o li
|
||||
# Compiler Settings
|
||||
LIBS = -static-libgcc -static-libstdc++
|
||||
CXXFLAGS = -I.
|
||||
CFLAGS = --std=c99 -Wall -I. -DMAKEROM_VER_MAJOR=$(VER_MAJOR) -DMAKEROM_VER_MINOR=$(VER_MINOR) $(MAKEROM_BUILD_FLAGS) -m64
|
||||
CFLAGS = --std=c99 -Wall -I. -DMAKEROM_VER_MAJOR=$(VER_MAJOR) -DMAKEROM_VER_MINOR=$(VER_MINOR) $(MAKEROM_BUILD_FLAGS)
|
||||
CC = gcc
|
||||
|
||||
# MAKEROM Build Settings
|
||||
MAKEROM_BUILD_FLAGS = #-DDEBUG #-DPUBLIC_BUILD
|
||||
VER_MAJOR = 0
|
||||
VER_MINOR = 7
|
||||
VER_MINOR = 8
|
||||
OUTPUT = makerom
|
||||
|
||||
main: build
|
||||
@@ -29,7 +29,7 @@ main: build
|
||||
rebuild: clean build
|
||||
|
||||
build: $(OBJS) $(POLAR_OBJS) $(YAML_OBJS)
|
||||
g++ -o $(OUTPUT) $(LIBS) $(OBJS) $(POLAR_OBJS) $(YAML_OBJS) -m64
|
||||
g++ -o $(OUTPUT) $(LIBS) $(OBJS) $(POLAR_OBJS) $(YAML_OBJS)
|
||||
|
||||
clean:
|
||||
rm -rf $(OUTPUT) $(OBJS) $(POLAR_OBJS) $(YAML_OBJS) *.cci *.cia *.cxi *.cfa
|
||||
|
||||
+185
-161
@@ -29,8 +29,9 @@ void b64_strcpy(char *dst, char *src);
|
||||
|
||||
int set_AccessDesc(exheader_settings *exhdrset, ncch_settings *ncchset)
|
||||
{
|
||||
if(ncchset->keys->accessDescSign.presetType == not_preset){
|
||||
if(ncchset->rsfSet->CommonHeaderKey.Found) // Keydata exists in RSF
|
||||
if(exhdrset->useAccessDescPreset)
|
||||
return accessdesc_GetSignFromPreset(exhdrset,ncchset);
|
||||
else if(ncchset->rsfSet->CommonHeaderKey.Found) // Keydata exists in RSF
|
||||
return accessdesc_GetSignFromRsf(exhdrset,ncchset);
|
||||
else if(!ncchset->keys->rsa.requiresPresignedDesc) // Else if The AccessDesc can be signed with key
|
||||
return accessdesc_SignWithKey(exhdrset,ncchset);
|
||||
@@ -38,8 +39,6 @@ int set_AccessDesc(exheader_settings *exhdrset, ncch_settings *ncchset)
|
||||
fprintf(stderr,"[EXHEADER ERROR] Current keyset cannot sign AccessDesc, please appropriatly setup RSF, or specify a preset with -accessdesc\n");
|
||||
return CANNOT_SIGN_ACCESSDESC;
|
||||
}
|
||||
}
|
||||
return accessdesc_GetSignFromPreset(exhdrset,ncchset);
|
||||
}
|
||||
|
||||
int accessdesc_SignWithKey(exheader_settings *exhdrset, ncch_settings *ncchset)
|
||||
@@ -48,8 +47,13 @@ int accessdesc_SignWithKey(exheader_settings *exhdrset, ncch_settings *ncchset)
|
||||
memcpy(exhdrset->keys->rsa.cxiHdrPvt,exhdrset->keys->rsa.cciCfaPvt,0x100);
|
||||
memcpy(exhdrset->keys->rsa.cxiHdrPub,exhdrset->keys->rsa.cciCfaPub,0x100);
|
||||
memcpy(&exhdrset->exHdr->accessDescriptor.ncchRsaPubKey,exhdrset->keys->rsa.cxiHdrPub,0x100);
|
||||
|
||||
/* Copy Data From ExHeader */
|
||||
memcpy(&exhdrset->exHdr->accessDescriptor.arm11SystemLocalCapabilities,&exhdrset->exHdr->arm11SystemLocalCapabilities,sizeof(exhdr_ARM11SystemLocalCapabilities));
|
||||
memcpy(&exhdrset->exHdr->accessDescriptor.arm11KernelCapabilities,&exhdrset->exHdr->arm11KernelCapabilities,sizeof(exhdr_ARM11KernelCapabilities));
|
||||
memcpy(&exhdrset->exHdr->accessDescriptor.arm9AccessControlInfo,&exhdrset->exHdr->arm9AccessControlInfo,sizeof(exhdr_ARM9AccessControlInfo));
|
||||
|
||||
/* Adjust Data */
|
||||
u8 *flag = &exhdrset->exHdr->accessDescriptor.arm11SystemLocalCapabilities.flag;
|
||||
u8 SystemMode = (*flag>>4)&0xF;
|
||||
u8 AffinityMask = (*flag>>2)&0x3;
|
||||
@@ -57,8 +61,6 @@ int accessdesc_SignWithKey(exheader_settings *exhdrset, ncch_settings *ncchset)
|
||||
*flag = (u8)(SystemMode << 4 | AffinityMask << 2 | IdealProcessor);
|
||||
exhdrset->exHdr->accessDescriptor.arm11SystemLocalCapabilities.priority /= 2;
|
||||
|
||||
memcpy(&exhdrset->exHdr->accessDescriptor.arm11KernelCapabilities,&exhdrset->exHdr->arm11KernelCapabilities,sizeof(exhdr_ARM11KernelCapabilities));
|
||||
memcpy(&exhdrset->exHdr->accessDescriptor.arm9AccessControlInfo,&exhdrset->exHdr->arm9AccessControlInfo,sizeof(exhdr_ARM9AccessControlInfo));
|
||||
/* Sign AccessDesc */
|
||||
return SignAccessDesc(exhdrset->exHdr,exhdrset->keys);
|
||||
}
|
||||
@@ -156,12 +158,12 @@ int accessdesc_GetSignFromPreset(exheader_settings *exhdrset, ncch_settings *ncc
|
||||
#endif
|
||||
|
||||
// Error Checking
|
||||
if(!accessDesc || !depList){
|
||||
if(!desc || !depList){
|
||||
fprintf(stderr,"[EXHEADER ERROR] AccessDesc preset is unavailable, please configure RSF file\n");
|
||||
return CANNOT_SIGN_ACCESSDESC;
|
||||
}
|
||||
|
||||
if((!cxiPubk || !cxiPvtk || !accessDescSig) && ncchset->keys->rsa.requiresPresignedDesc){
|
||||
if((!cxiPubk || !cxiPvtk || !accessDesc || !accessDescSig) && ncchset->keys->rsa.requiresPresignedDesc){
|
||||
fprintf(stderr,"[EXHEADER ERROR] This AccessDesc preset needs to be signed, the current keyset is incapable of doing so. Please configure RSF file with the appropriate signature data.\n");
|
||||
return CANNOT_SIGN_ACCESSDESC;
|
||||
}
|
||||
@@ -170,36 +172,22 @@ int accessdesc_GetSignFromPreset(exheader_settings *exhdrset, ncch_settings *ncc
|
||||
// Dependency List
|
||||
memcpy(exhdrset->exHdr->dependencyList,depList,0x180);
|
||||
|
||||
// ARM11 Local Capabilities
|
||||
exhdr_ARM11SystemLocalCapabilities *arm11local = (exhdr_ARM11SystemLocalCapabilities*)(accessDesc);
|
||||
// Backing Up Non Preset Details
|
||||
// Backing Up Non Preset Data
|
||||
u8 ProgramID[8];
|
||||
exhdr_StorageInfo StorageInfoBackup;
|
||||
exhdr_ARM9AccessControlInfo Arm9Desc;
|
||||
memcpy(ProgramID,exhdrset->exHdr->arm11SystemLocalCapabilities.programId,8);
|
||||
memcpy(&StorageInfoBackup,&exhdrset->exHdr->arm11SystemLocalCapabilities.storageInfo,sizeof(exhdr_StorageInfo));
|
||||
memcpy(&Arm9Desc,&exhdrset->exHdr->arm9AccessControlInfo,sizeof(exhdr_ARM9AccessControlInfo));
|
||||
|
||||
// Setting Preset Data
|
||||
memcpy(&exhdrset->exHdr->arm11SystemLocalCapabilities,arm11local,sizeof(exhdr_ARM11SystemLocalCapabilities));
|
||||
memcpy(&exhdrset->exHdr->arm11SystemLocalCapabilities,desc,0x200);
|
||||
|
||||
// Restoring Non Preset Data
|
||||
memcpy(exhdrset->exHdr->arm11SystemLocalCapabilities.programId,ProgramID,8);
|
||||
memcpy(&exhdrset->exHdr->arm11SystemLocalCapabilities.storageInfo,&StorageInfoBackup,sizeof(exhdr_StorageInfo));
|
||||
memcpy(&exhdrset->exHdr->arm9AccessControlInfo,&Arm9Desc,sizeof(exhdr_ARM9AccessControlInfo));
|
||||
|
||||
// Adjusting flags to prevent errors
|
||||
u8 *flag = &exhdrset->exHdr->arm11SystemLocalCapabilities.flag;
|
||||
u8 SystemMode = (*flag>>4)&0xF;
|
||||
u8 AffinityMask = (*flag>>2)&0x3;
|
||||
u8 IdealProcessor = ((*flag>>0)&0x3)>>1;
|
||||
*flag = (u8)(SystemMode << 4 | AffinityMask << 2 | IdealProcessor);
|
||||
exhdrset->exHdr->arm11SystemLocalCapabilities.priority *= 2;
|
||||
|
||||
// ARM11 Kernel Capabilities
|
||||
exhdr_ARM11KernelCapabilities *arm11kernel = (exhdr_ARM11KernelCapabilities*)(accessDesc+sizeof(exhdr_ARM11SystemLocalCapabilities));
|
||||
memcpy(&exhdrset->exHdr->arm11KernelCapabilities,arm11kernel,(sizeof(exhdr_ARM11KernelCapabilities)));
|
||||
|
||||
// ARM9 Access Control
|
||||
exhdr_ARM9AccessControlInfo *arm9 = (exhdr_ARM9AccessControlInfo*)(accessDesc+sizeof(exhdr_ARM11SystemLocalCapabilities)+sizeof(exhdr_ARM11KernelCapabilities));
|
||||
memcpy(&exhdrset->exHdr->arm9AccessControlInfo,arm9,(sizeof(exhdr_ARM9AccessControlInfo)));
|
||||
|
||||
// Setting AccessDesc Area
|
||||
// Signing normally if possible
|
||||
@@ -218,85 +206,101 @@ int accessdesc_GetSignFromPreset(exheader_settings *exhdrset, ncch_settings *ncc
|
||||
|
||||
void accessdesc_GetPresetData(u8 **desc, u8 **accessDesc, u8 **depList, ncch_settings *ncchset)
|
||||
{
|
||||
if(ncchset->keys->accessDescSign.presetType == app){
|
||||
if(ncchset->keys->accessDescSign.presetType == desc_preset_APP){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 1:
|
||||
*desc = (u8*)app_1_desc_data;
|
||||
*accessDesc = (u8*)app_1_acex_data;
|
||||
*depList = (u8*)sdk1_dep_list;
|
||||
case 0x1B:
|
||||
case 0x1C:
|
||||
*desc = (u8*)app_fw1B_desc_data;
|
||||
*accessDesc = (u8*)app_fw1B_acex_data;
|
||||
*depList = (u8*)fw1B_dep_list;
|
||||
break;
|
||||
case 2:
|
||||
*desc = (u8*)app_2_desc_data;
|
||||
*accessDesc = (u8*)app_2_acex_data;
|
||||
*depList = (u8*)sdk2_dep_list;
|
||||
case 0x1D:
|
||||
*desc = (u8*)app_fw1D_desc_data;
|
||||
*accessDesc = (u8*)app_fw1D_acex_data;
|
||||
*depList = (u8*)fw1D_dep_list;
|
||||
break;
|
||||
case 3:
|
||||
*desc = (u8*)app_3_desc_data;
|
||||
*accessDesc = (u8*)app_3_acex_data;
|
||||
*depList = (u8*)sdk3_dep_list;
|
||||
case 0x1E:
|
||||
*desc = (u8*)app_fw1E_desc_data;
|
||||
*accessDesc = (u8*)app_fw1E_acex_data;
|
||||
*depList = (u8*)fw1D_dep_list;
|
||||
break;
|
||||
case 4:
|
||||
*desc = (u8*)app_4_desc_data;
|
||||
*accessDesc = (u8*)app_4_acex_data;
|
||||
*depList = (u8*)sdk4_dep_list;
|
||||
case 0x20:
|
||||
*desc = (u8*)app_fw20_desc_data;
|
||||
*accessDesc = (u8*)app_fw20_acex_data;
|
||||
*depList = (u8*)fw20_dep_list;
|
||||
break;
|
||||
case 5:
|
||||
*desc = (u8*)app_5_desc_data;
|
||||
*accessDesc = (u8*)app_5_acex_data;
|
||||
*depList = (u8*)sdk5_dep_list;
|
||||
case 0x21:
|
||||
*desc = (u8*)app_fw21_desc_data;
|
||||
*accessDesc = (u8*)app_fw21_acex_data;
|
||||
*depList = (u8*)fw21_dep_list;
|
||||
break;
|
||||
case 7:
|
||||
*desc = (u8*)app_7_desc_data;
|
||||
*accessDesc = (u8*)app_7_acex_data;
|
||||
*depList = (u8*)sdk7_dep_list;
|
||||
case 0x23:
|
||||
*desc = (u8*)app_fw23_desc_data;
|
||||
*accessDesc = (u8*)app_fw23_acex_data;
|
||||
*depList = (u8*)fw23_dep_list;
|
||||
break;
|
||||
case 0x27:
|
||||
*desc = (u8*)app_fw27_desc_data;
|
||||
*accessDesc = (u8*)app_fw27_acex_data;
|
||||
*depList = (u8*)fw27_dep_list;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else if(ncchset->keys->accessDescSign.presetType == ec_app){
|
||||
else if(ncchset->keys->accessDescSign.presetType == desc_preset_EC_APP){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 4:
|
||||
*desc = (u8*)ecapp_4_desc_data;
|
||||
*accessDesc = (u8*)ecapp_4_acex_data;
|
||||
*depList = (u8*)sdk4_dep_list;
|
||||
case 0x20:
|
||||
*desc = (u8*)ecapp_fw20_desc_data;
|
||||
*accessDesc = (u8*)ecapp_fw20_acex_data;
|
||||
*depList = (u8*)fw20_dep_list;
|
||||
break;
|
||||
case 5:
|
||||
*desc = (u8*)ecapp_5_desc_data;
|
||||
*accessDesc = (u8*)ecapp_5_acex_data;
|
||||
*depList = (u8*)sdk5_dep_list;
|
||||
case 0x23:
|
||||
*desc = (u8*)ecapp_fw23_desc_data;
|
||||
*accessDesc = (u8*)ecapp_fw23_acex_data;
|
||||
*depList = (u8*)fw23_dep_list;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(ncchset->keys->accessDescSign.presetType == dlp){
|
||||
else if(ncchset->keys->accessDescSign.presetType == desc_preset_DLP){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 1:
|
||||
*desc = (u8*)dlp_1_desc_data;
|
||||
*accessDesc = (u8*)dlp_1_acex_data;
|
||||
*depList = (u8*)sdk1_dep_list;
|
||||
case 0x1B:
|
||||
case 0x1C:
|
||||
*desc = (u8*)dlp_fw1B_desc_data;
|
||||
*accessDesc = (u8*)dlp_fw1B_acex_data;
|
||||
*depList = (u8*)fw1B_dep_list;
|
||||
break;
|
||||
case 2:
|
||||
*desc = (u8*)dlp_2_desc_data;
|
||||
*accessDesc = (u8*)dlp_2_acex_data;
|
||||
*depList = (u8*)sdk2_dep_list;
|
||||
case 0x1D:
|
||||
*desc = (u8*)dlp_fw1D_desc_data;
|
||||
*accessDesc = (u8*)dlp_fw1D_acex_data;
|
||||
*depList = (u8*)fw1D_dep_list;
|
||||
break;
|
||||
case 4:
|
||||
*desc = (u8*)dlp_4_desc_data;
|
||||
*accessDesc = (u8*)dlp_4_acex_data;
|
||||
*depList = (u8*)sdk4_dep_list;
|
||||
case 0x21:
|
||||
*desc = (u8*)dlp_fw21_desc_data;
|
||||
*accessDesc = (u8*)dlp_fw21_acex_data;
|
||||
*depList = (u8*)fw21_dep_list;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(ncchset->keys->accessDescSign.presetType == demo){
|
||||
else if(ncchset->keys->accessDescSign.presetType == desc_preset_DEMO){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 2:
|
||||
*desc = (u8*)demo_2_desc_data;
|
||||
*accessDesc = (u8*)demo_2_acex_data;
|
||||
*depList = (u8*)sdk2_dep_list;
|
||||
case 0x1E:
|
||||
*desc = (u8*)demo_fw1E_desc_data;
|
||||
*accessDesc = (u8*)demo_fw1E_acex_data;
|
||||
*depList = (u8*)fw1D_dep_list;
|
||||
break;
|
||||
case 4:
|
||||
*desc = (u8*)demo_4_desc_data;
|
||||
*accessDesc = (u8*)demo_4_acex_data;
|
||||
*depList = (u8*)sdk4_dep_list;
|
||||
case 0x21:
|
||||
*desc = (u8*)demo_fw21_desc_data;
|
||||
*accessDesc = (u8*)demo_fw21_acex_data;
|
||||
*depList = (u8*)fw21_dep_list;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(ncchset->keys->accessDescSign.presetType == desc_preset_FIRM){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
default:
|
||||
*desc = (u8*)firm_fw26_desc_data;
|
||||
*accessDesc = (u8*)firm_fw26_acex_data;
|
||||
*depList = (u8*)firm_fwXX_dep_list;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -305,130 +309,150 @@ void accessdesc_GetPresetData(u8 **desc, u8 **accessDesc, u8 **depList, ncch_set
|
||||
#ifndef PUBLIC_BUILD
|
||||
void accessdesc_GetPresetSigData(u8 **accessDescSig, u8 **cxiPubk, u8 **cxiPvtk, ncch_settings *ncchset)
|
||||
{
|
||||
if(ncchset->keys->accessDescSign.presetType == app){
|
||||
if(ncchset->keys->accessDescSign.presetType == desc_preset_APP){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 1:
|
||||
case 0x1B:
|
||||
case 0x1C:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)app_1_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_1_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)app_1_dev_hdrpvt;
|
||||
*accessDescSig = (u8*)app_fw1B_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_fw1B_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)app_fw1B_dev_hdrpvt;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 0x1D:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)app_2_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_2_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)app_2_dev_hdrpvt;
|
||||
*accessDescSig = (u8*)app_fw1D_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_fw1D_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)app_fw1D_dev_hdrpvt;
|
||||
}
|
||||
if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_2_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_2_prod_hdrpub;
|
||||
*accessDescSig = (u8*)app_fw1D_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_fw1D_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)app_3_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_3_dev_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
else if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_3_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_3_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)app_4_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_4_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)app_4_dev_hdrpvt;
|
||||
}
|
||||
else if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_4_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_4_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)app_5_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_5_dev_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
else if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_5_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_5_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
case 0x1E:
|
||||
if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_7_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_7_prod_hdrpub;
|
||||
*accessDescSig = (u8*)app_fw1E_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_fw1E_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 0x20:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)app_fw20_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_fw20_dev_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
else if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_fw20_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_fw20_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 0x21:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)app_fw21_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_fw21_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)app_fw21_dev_hdrpvt;
|
||||
}
|
||||
else if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_fw21_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_fw21_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 0x23:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)app_fw23_dev_acexsig;
|
||||
*cxiPubk = (u8*)app_fw23_dev_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
else if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_fw23_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_fw23_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 0x27:
|
||||
if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)app_fw27_prod_acexsig;
|
||||
*cxiPubk = (u8*)app_fw27_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else if(ncchset->keys->accessDescSign.presetType == ec_app){
|
||||
else if(ncchset->keys->accessDescSign.presetType == desc_preset_EC_APP){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 4:
|
||||
case 0x20:
|
||||
if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)ecapp_4_prod_acexsig;
|
||||
*cxiPubk = (u8*)ecapp_4_prod_hdrpub;
|
||||
*accessDescSig = (u8*)ecapp_fw20_prod_acexsig;
|
||||
*cxiPubk = (u8*)ecapp_fw20_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case 0x23:
|
||||
if(ncchset->keys->keyset == pki_PRODUCTION){
|
||||
*accessDescSig = (u8*)ecapp_5_prod_acexsig;
|
||||
*cxiPubk = (u8*)ecapp_5_prod_hdrpub;
|
||||
*accessDescSig = (u8*)ecapp_fw23_prod_acexsig;
|
||||
*cxiPubk = (u8*)ecapp_fw23_prod_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(ncchset->keys->accessDescSign.presetType == dlp){
|
||||
else if(ncchset->keys->accessDescSign.presetType == desc_preset_DLP){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 1:
|
||||
case 0x1B:
|
||||
case 0x1C:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)dlp_1_dev_acexsig;
|
||||
*cxiPubk = (u8*)dlp_1_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)dlp_1_dev_hdrpvt;
|
||||
*accessDescSig = (u8*)dlp_fw1B_dev_acexsig;
|
||||
*cxiPubk = (u8*)dlp_fw1B_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)dlp_fw1B_dev_hdrpvt;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 0x1D:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)dlp_2_dev_acexsig;
|
||||
*cxiPubk = (u8*)dlp_2_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)dlp_2_dev_hdrpvt;
|
||||
*accessDescSig = (u8*)dlp_fw1D_dev_acexsig;
|
||||
*cxiPubk = (u8*)dlp_fw1D_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)dlp_fw1D_dev_hdrpvt;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case 0x21:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)dlp_4_dev_acexsig;
|
||||
*cxiPubk = (u8*)dlp_4_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)dlp_4_dev_hdrpvt;
|
||||
*accessDescSig = (u8*)dlp_fw21_dev_acexsig;
|
||||
*cxiPubk = (u8*)dlp_fw21_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)dlp_fw21_dev_hdrpvt;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(ncchset->keys->accessDescSign.presetType == demo){
|
||||
else if(ncchset->keys->accessDescSign.presetType == desc_preset_DEMO){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 2:
|
||||
case 0x1E:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)demo_2_dev_acexsig;
|
||||
*cxiPubk = (u8*)demo_2_dev_hdrpub;
|
||||
*accessDescSig = (u8*)demo_fw1E_dev_acexsig;
|
||||
*cxiPubk = (u8*)demo_fw1E_dev_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case 0x21:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)demo_4_dev_acexsig;
|
||||
*cxiPubk = (u8*)demo_4_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)demo_4_dev_hdrpvt;
|
||||
*accessDescSig = (u8*)demo_fw21_dev_acexsig;
|
||||
*cxiPubk = (u8*)demo_fw21_dev_hdrpub;
|
||||
*cxiPvtk = (u8*)demo_fw21_dev_hdrpvt;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(ncchset->keys->accessDescSign.presetType == desc_preset_FIRM){
|
||||
switch(ncchset->keys->accessDescSign.targetFirmware){
|
||||
case 0x26:
|
||||
if(ncchset->keys->keyset == pki_DEVELOPMENT){
|
||||
*accessDescSig = (u8*)firm_fw26_dev_acexsig;
|
||||
*cxiPubk = (u8*)firm_fw26_dev_hdrpub;
|
||||
*cxiPvtk = NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -87,15 +87,21 @@ u8 *GetCertName(u8 *cert)
|
||||
|
||||
int GenCertChildIssuer(u8 *dest, u8 *cert)
|
||||
{
|
||||
u8 *Issuer = GetCertIssuer(cert);
|
||||
u8 *Name = GetCertName(cert);
|
||||
u8 *issuer = GetCertIssuer(cert);
|
||||
u8 *name = GetCertName(cert);
|
||||
|
||||
u32 out_size = strlen((char*)Issuer) + strlen((char*)Name) + 1;
|
||||
/*
|
||||
u32 out_size = strlen((char*)issuer) + strlen((char*)name) + 1;
|
||||
if(out_size > 0x40) return MEM_ERROR;
|
||||
*/
|
||||
|
||||
memcpy(dest,Issuer,strlen((char*)Issuer));
|
||||
dest[strlen((char*)Issuer)] = '-';
|
||||
memcpy((dest+strlen((char*)Issuer)+1),Name,strlen((char*)Name));
|
||||
snprintf((char*)dest,0x40,"%s-%s",issuer,name);
|
||||
|
||||
/*
|
||||
strcat((char*)dest,(char*)issuer);
|
||||
strcat((char*)dest,"-");
|
||||
strcat((char*)dest,(char*)name);
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -100,11 +100,11 @@ void init_CIASettings(cia_settings *set)
|
||||
|
||||
void free_CIASettings(cia_settings *set)
|
||||
{
|
||||
if(set->content.contentFilePtrs){
|
||||
for(u32 i = 1; i < set->content.contentCount; i++){
|
||||
fclose(set->content.contentFilePtrs[i]);
|
||||
if(set->content.filePtrs){
|
||||
for(u32 i = 1; i < set->content.count; i++){
|
||||
fclose(set->content.filePtrs[i]);
|
||||
}
|
||||
free(set->content.contentFilePtrs);
|
||||
free(set->content.filePtrs);
|
||||
}
|
||||
free(set->ciaSections.certChain.buffer);
|
||||
free(set->ciaSections.tik.buffer);
|
||||
@@ -166,7 +166,7 @@ int GetSettingsFromUsrset(cia_settings *ciaset, user_settings *usrset)
|
||||
ciaset->ciaSections.content.size = 0;
|
||||
|
||||
u32_to_u8(ciaset->tmd.titleType,TYPE_CTR,BE);
|
||||
ciaset->content.encryptCia = usrset->cia.encryptCia;
|
||||
ciaset->content.encryptCia = usrset->common.rsfSet.Option.EnableCrypt;
|
||||
ciaset->content.IsDlc = usrset->cia.DlcContent;
|
||||
if(ciaset->keys->aes.commonKey[ciaset->keys->aes.currentCommonKey] == NULL && ciaset->content.encryptCia){
|
||||
fprintf(stderr,"[CIA WARNING] Common Key could not be loaded, CIA will not be encrypted\n");
|
||||
@@ -182,17 +182,13 @@ int GetSettingsFromUsrset(cia_settings *ciaset, user_settings *usrset)
|
||||
|
||||
ciaset->content.overrideSaveDataSize = usrset->cia.overideSaveDataSize;
|
||||
|
||||
// Random Number generator
|
||||
u8 hash[0x20];
|
||||
if(usrset->common.rsfPath)
|
||||
ctr_sha(usrset->common.rsfPath,strlen(usrset->common.rsfPath),hash,CTR_SHA_256);
|
||||
else
|
||||
ctr_sha(ciaset->ciaSections.content.buffer,(rand() % 0x200),hash,CTR_SHA_256);
|
||||
|
||||
// Ticket Data
|
||||
memcpy(ciaset->tik.ticketId,(hash+0x8),8);
|
||||
u64_to_u8(ciaset->tik.ticketId,u64GetRand(),BE);
|
||||
if(usrset->cia.randomTitleKey)
|
||||
memcpy(ciaset->common.titleKey,(hash+0x10),16);
|
||||
{
|
||||
u64_to_u8(ciaset->common.titleKey,u64GetRand(),BE);
|
||||
u64_to_u8((ciaset->common.titleKey+8),u64GetRand(),BE);
|
||||
}
|
||||
else
|
||||
memset(ciaset->common.titleKey,0,16);
|
||||
|
||||
@@ -202,11 +198,11 @@ int GetSettingsFromUsrset(cia_settings *ciaset, user_settings *usrset)
|
||||
if(result) return result;
|
||||
|
||||
// Tmd Stuff
|
||||
if(usrset->cia.contentId[0] > 0xffffffff){
|
||||
ciaset->content.contentId[0] = u8_to_u32(hash,BE);
|
||||
}
|
||||
if(usrset->cia.contentId[0] > 0xffffffff)
|
||||
ciaset->content.id[0] = u32GetRand();
|
||||
else
|
||||
ciaset->content.contentId[0] = usrset->cia.contentId[0];
|
||||
ciaset->content.id[0] = usrset->cia.contentId[0];
|
||||
|
||||
ciaset->tmd.formatVersion = 1;
|
||||
result = GenCertChildIssuer(ciaset->tmd.issuer,ciaset->keys->certs.cpCert);
|
||||
return 0;
|
||||
@@ -232,9 +228,9 @@ int GetSettingsFromNcch0(cia_settings *ciaset, u32 ncch0_offset)
|
||||
ciaset->content.IsCfa = true;
|
||||
}
|
||||
|
||||
ciaset->content.contentOffset[0] = 0;
|
||||
ciaset->content.contentSize[0] = GetNCCH_MediaSize(hdr)*GetNCCH_MediaUnitSize(hdr);
|
||||
ciaset->content.totalContentSize = ciaset->content.contentSize[0];
|
||||
ciaset->content.offset[0] = 0;
|
||||
ciaset->content.size[0] = align(GetNCCH_MediaSize(hdr)*GetNCCH_MediaUnitSize(hdr),0x10);
|
||||
ciaset->content.totalSize = ciaset->content.size[0];
|
||||
|
||||
/* Get Ncch0 Import Context */
|
||||
ncch_struct *ncch_ctx = malloc(sizeof(ncch_struct));
|
||||
@@ -297,7 +293,7 @@ int GetCIADataFromNcch(cia_settings *ciaset, u8 *ncch, ncch_struct *ncch_ctx, u8
|
||||
else u32_to_u8(ciaset->tmd.savedataSize,(u32)GetSaveDataSize_frm_exhdr(exhdr),LE);
|
||||
if(ciaset->content.overrideSaveDataSize){
|
||||
u64 size = 0;
|
||||
GetSaveDataSizeFromString(&size,ciaset->content.overrideSaveDataSize);
|
||||
GetSaveDataSizeFromString(&size,ciaset->content.overrideSaveDataSize,"CIA");
|
||||
u32_to_u8(ciaset->tmd.savedataSize,(u32)size,LE);
|
||||
}
|
||||
|
||||
@@ -377,38 +373,44 @@ int GetMetaRegion(cia_settings *ciaset, u8 *ncch, ncch_struct *ncch_ctx, u8 *key
|
||||
|
||||
int GetContentFilePtrs(cia_settings *ciaset, user_settings *usrset)
|
||||
{
|
||||
ciaset->content.contentFilePtrs = malloc(sizeof(FILE*)*CIA_MAX_CONTENT);
|
||||
if(!ciaset->content.contentFilePtrs){
|
||||
ciaset->content.filePtrs = malloc(sizeof(FILE*)*CIA_MAX_CONTENT);
|
||||
if(!ciaset->content.filePtrs){
|
||||
fprintf(stderr,"[CIA ERROR] Not enough memory\n");
|
||||
return MEM_ERROR;
|
||||
}
|
||||
memset(ciaset->content.contentFilePtrs,0,sizeof(FILE*)*CIA_MAX_CONTENT);
|
||||
memset(ciaset->content.filePtrs,0,sizeof(FILE*)*CIA_MAX_CONTENT);
|
||||
int j = 1;
|
||||
ncch_hdr *hdr = malloc(sizeof(ncch_hdr));
|
||||
for(int i = 1; i < CIA_MAX_CONTENT; i++){
|
||||
if(usrset->common.contentPath[i]){
|
||||
ciaset->content.contentFilePtrs[j] = fopen(usrset->common.contentPath[i],"rb");
|
||||
if(!ciaset->content.contentFilePtrs[j]){
|
||||
if(!AssertFile(usrset->common.contentPath[i])){
|
||||
fprintf(stderr,"[CIA ERROR] Failed to open \"%s\"\n",usrset->common.contentPath[i]);
|
||||
return FAILED_TO_OPEN_FILE;
|
||||
}
|
||||
if(usrset->cia.contentId[i] == 0x100000000){
|
||||
u8 hash[0x20];
|
||||
ctr_sha(usrset->common.contentPath[i],strlen(usrset->common.contentPath[i]),hash,CTR_SHA_256);
|
||||
ciaset->content.contentId[j] = u8_to_u32(hash,BE);
|
||||
}
|
||||
ciaset->content.fileSize[j] = GetFileSize_u64(usrset->common.contentPath[i]);
|
||||
ciaset->content.filePtrs[j] = fopen(usrset->common.contentPath[i],"rb");
|
||||
|
||||
if(usrset->cia.contentId[i] == 0x100000000)
|
||||
ciaset->content.id[j] = u32GetRand();
|
||||
else
|
||||
ciaset->content.contentId[j] = (u32)usrset->cia.contentId[i];
|
||||
ciaset->content.contentIndex[j] = (u16)i;
|
||||
ciaset->content.id[j] = (u32)usrset->cia.contentId[i];
|
||||
|
||||
ciaset->content.index[j] = (u16)i;
|
||||
|
||||
// Get Data from ncch HDR
|
||||
GetNCCH_CommonHDR(hdr,ciaset->content.contentFilePtrs[j],NULL);
|
||||
GetNCCH_CommonHDR(hdr,ciaset->content.filePtrs[j],NULL);
|
||||
|
||||
// Get Size
|
||||
ciaset->content.contentSize[j] = GetNCCH_MediaSize(hdr)*GetNCCH_MediaUnitSize(hdr);
|
||||
ciaset->content.contentOffset[j] = ciaset->content.totalContentSize,0x40;
|
||||
u64 calcSize = (u64)GetNCCH_MediaSize(hdr) * (u64)GetNCCH_MediaUnitSize(hdr);
|
||||
if(calcSize != ciaset->content.fileSize[j]){
|
||||
fprintf(stderr,"[CIA ERROR] \"%s\" is corrupt\n",usrset->common.contentPath[i]);
|
||||
return FAILED_TO_OPEN_FILE;
|
||||
}
|
||||
|
||||
ciaset->content.totalContentSize += ciaset->content.contentSize[j];
|
||||
ciaset->content.size[j] = align(calcSize,0x10);
|
||||
ciaset->content.offset[j] = ciaset->content.totalSize;
|
||||
|
||||
ciaset->content.totalSize += ciaset->content.size[j];
|
||||
|
||||
|
||||
// Finish get next content
|
||||
@@ -416,13 +418,13 @@ int GetContentFilePtrs(cia_settings *ciaset, user_settings *usrset)
|
||||
}
|
||||
}
|
||||
free(hdr);
|
||||
ciaset->content.contentCount = j;
|
||||
ciaset->content.count = j;
|
||||
|
||||
// Check Conflicting IDs
|
||||
for(int i = 0; i < ciaset->content.contentCount; i++){
|
||||
for(j = i+1; j < ciaset->content.contentCount; j++){
|
||||
if(ciaset->content.contentId[j] == ciaset->content.contentId[i]){
|
||||
fprintf(stderr,"[CIA ERROR] CIA Content %d and %d, have conflicting IDs\n",ciaset->content.contentIndex[j],ciaset->content.contentIndex[i]);
|
||||
for(int i = 0; i < ciaset->content.count; i++){
|
||||
for(j = i+1; j < ciaset->content.count; j++){
|
||||
if(ciaset->content.id[j] == ciaset->content.id[i]){
|
||||
fprintf(stderr,"[CIA ERROR] CIA Content %d and %d, have conflicting IDs\n",ciaset->content.index[j],ciaset->content.index[i]);
|
||||
return CIA_CONFILCTING_CONTENT_IDS;
|
||||
}
|
||||
}
|
||||
@@ -432,30 +434,30 @@ int GetContentFilePtrs(cia_settings *ciaset, user_settings *usrset)
|
||||
|
||||
int ImportNcchContent(cia_settings *ciaset)
|
||||
{
|
||||
ciaset->ciaSections.content.buffer = realloc(ciaset->ciaSections.content.buffer,ciaset->content.totalContentSize);
|
||||
ciaset->ciaSections.content.buffer = realloc(ciaset->ciaSections.content.buffer,ciaset->content.totalSize);
|
||||
if(!ciaset->ciaSections.content.buffer){
|
||||
fprintf(stderr,"[CIA ERROR] Not enough memory\n");
|
||||
return MEM_ERROR;
|
||||
}
|
||||
|
||||
ncch_hdr *ncch0hdr = (ncch_hdr*)(ciaset->ciaSections.content.buffer+0x100);
|
||||
for(int i = 1; i < ciaset->content.contentCount; i++){
|
||||
for(int i = 1; i < ciaset->content.count; i++){
|
||||
// Import
|
||||
u8 *ncchpos = (u8*)(ciaset->ciaSections.content.buffer+ciaset->content.contentOffset[i]);
|
||||
u8 *ncchpos = (u8*)(ciaset->ciaSections.content.buffer+ciaset->content.offset[i]);
|
||||
|
||||
ReadFile_64(ncchpos, ciaset->content.contentSize[i], 0, ciaset->content.contentFilePtrs[i]);
|
||||
ReadFile_64(ncchpos, ciaset->content.fileSize[i], 0, ciaset->content.filePtrs[i]);
|
||||
if(ModifyNcchIds(ncchpos, NULL, ncch0hdr->programId, ciaset->keys) != 0)
|
||||
return -1;
|
||||
|
||||
// Set Additional Flags
|
||||
if(ciaset->content.IsDlc)
|
||||
ciaset->content.contentFlags[i] |= content_Optional;
|
||||
ciaset->content.flags[i] |= content_Optional;
|
||||
|
||||
//if(unknown condition)
|
||||
// ciaset->content.contentFlags[i] |= content_Shared;
|
||||
// ciaset->content.flags[i] |= content_Shared;
|
||||
}
|
||||
|
||||
ciaset->ciaSections.content.size = ciaset->content.totalContentSize;
|
||||
ciaset->ciaSections.content.size = ciaset->content.totalSize;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -490,10 +492,10 @@ int GetSettingsFromSrl(cia_settings *ciaset)
|
||||
memcpy(ciaset->tmd.privSavedataSize,hdr->privSaveDataSize,4);
|
||||
|
||||
// Setting CIA Content Settings
|
||||
ciaset->content.contentCount = 1;
|
||||
ciaset->content.contentOffset[0] = 0;
|
||||
ciaset->content.contentSize[0] = ciaset->ciaSections.content.size;
|
||||
ciaset->content.totalContentSize = ciaset->ciaSections.content.size;
|
||||
ciaset->content.count = 1;
|
||||
ciaset->content.offset[0] = 0;
|
||||
ciaset->content.size[0] = ciaset->ciaSections.content.size;
|
||||
ciaset->content.totalSize = ciaset->ciaSections.content.size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -532,31 +534,31 @@ int GetSettingsFromCci(cia_settings *ciaset)
|
||||
hdr = (ncch_hdr*)(ciaset->ciaSections.content.buffer + cciContentOffsets[j] + 0x100);
|
||||
|
||||
// Get Size
|
||||
ciaset->content.contentSize[j] = GetPartitionSize(ciaset->ciaSections.content.buffer,i);
|
||||
ciaset->content.contentOffset[j] = ciaset->content.totalContentSize;
|
||||
ciaset->content.size[j] = GetPartitionSize(ciaset->ciaSections.content.buffer,i);
|
||||
ciaset->content.offset[j] = ciaset->content.totalSize;
|
||||
|
||||
ciaset->content.totalContentSize += ciaset->content.contentSize[j];
|
||||
ciaset->content.totalSize += ciaset->content.size[j];
|
||||
|
||||
// Get ID
|
||||
u8 hash[0x20];
|
||||
ctr_sha((u8*)hdr,0x200,hash,CTR_SHA_256);
|
||||
ciaset->content.contentId[j] = u8_to_u32(hash,BE);
|
||||
ciaset->content.id[j] = u8_to_u32(hash,BE);
|
||||
|
||||
// Get Index
|
||||
ciaset->content.contentIndex[j] = i;
|
||||
ciaset->content.index[j] = i;
|
||||
|
||||
// Increment Content Count
|
||||
j++;
|
||||
}
|
||||
}
|
||||
ciaset->content.contentCount = j;
|
||||
ciaset->content.count = j;
|
||||
|
||||
for(int i = 0; i < ciaset->content.contentCount; i++){ // Re-organising content positions in memory
|
||||
for(int i = 0; i < ciaset->content.count; i++){ // Re-organising content positions in memory
|
||||
u8 *cci_pos = (ciaset->ciaSections.content.buffer + cciContentOffsets[i]);
|
||||
u8 *cia_pos = (ciaset->ciaSections.content.buffer + ciaset->content.contentOffset[i]);
|
||||
memcpy(cia_pos,cci_pos,ciaset->content.contentSize[i]);
|
||||
u8 *cia_pos = (ciaset->ciaSections.content.buffer + ciaset->content.offset[i]);
|
||||
memcpy(cia_pos,cci_pos,ciaset->content.size[i]);
|
||||
}
|
||||
ciaset->ciaSections.content.size = ciaset->content.totalContentSize;
|
||||
ciaset->ciaSections.content.size = ciaset->content.totalSize;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -567,16 +569,16 @@ u16 SetupVersion(u16 Major, u16 Minor, u16 Micro)
|
||||
|
||||
void GetContentHashes(cia_settings *ciaset)
|
||||
{
|
||||
for(int i = 0; i < ciaset->content.contentCount; i++)
|
||||
ctr_sha(ciaset->ciaSections.content.buffer+ciaset->content.contentOffset[i],ciaset->content.contentSize[i],ciaset->content.contentHash[i],CTR_SHA_256);
|
||||
for(int i = 0; i < ciaset->content.count; i++)
|
||||
ctr_sha(ciaset->ciaSections.content.buffer+ciaset->content.offset[i],ciaset->content.size[i],ciaset->content.hash[i],CTR_SHA_256);
|
||||
}
|
||||
|
||||
void EncryptContent(cia_settings *ciaset)
|
||||
{
|
||||
for(int i = 0; i < ciaset->content.contentCount; i++){
|
||||
ciaset->content.contentFlags[i] |= content_Encrypted;
|
||||
u8 *content = ciaset->ciaSections.content.buffer+ciaset->content.contentOffset[i];
|
||||
CryptContent(content, content, ciaset->content.contentSize[i], ciaset->common.titleKey, i, ENC);
|
||||
for(int i = 0; i < ciaset->content.count; i++){
|
||||
ciaset->content.flags[i] |= content_Encrypted;
|
||||
u8 *content = ciaset->ciaSections.content.buffer+ciaset->content.offset[i];
|
||||
CryptContent(content, content, ciaset->content.size[i], ciaset->common.titleKey, i, ENC);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -617,23 +619,23 @@ int BuildCIA_Header(cia_settings *ciaset)
|
||||
u32_to_u8(hdr->tikSize,ciaset->ciaSections.tik.size,LE);
|
||||
u32_to_u8(hdr->tmdSize,ciaset->ciaSections.tmd.size,LE);
|
||||
u32_to_u8(hdr->metaSize,ciaset->ciaSections.meta.size,LE);
|
||||
u64_to_u8(hdr->contentSize,ciaset->content.totalContentSize,LE);
|
||||
u64_to_u8(hdr->contentSize,ciaset->content.totalSize,LE);
|
||||
|
||||
// Recording Offsets
|
||||
ciaset->ciaSections.certChainOffset = align(sizeof(cia_hdr),0x40);
|
||||
ciaset->ciaSections.tikOffset = align(ciaset->ciaSections.certChainOffset+ciaset->ciaSections.certChain.size,0x40);
|
||||
ciaset->ciaSections.tmdOffset = align(ciaset->ciaSections.tikOffset+ciaset->ciaSections.tik.size,0x40);
|
||||
ciaset->ciaSections.contentOffset = align(ciaset->ciaSections.tmdOffset+ciaset->ciaSections.tmd.size,0x40);
|
||||
ciaset->ciaSections.metaOffset = align(ciaset->ciaSections.contentOffset+ciaset->content.totalContentSize,0x40);
|
||||
ciaset->ciaSections.metaOffset = align(ciaset->ciaSections.contentOffset+ciaset->content.totalSize,0x40);
|
||||
|
||||
for(int i = 0; i < ciaset->content.contentCount; i++){
|
||||
for(int i = 0; i < ciaset->content.count; i++){
|
||||
// This works by treating the 0x2000 byte index array as an array of 2048 u32 values
|
||||
|
||||
// Used for determining which u32 chunk to write the value to
|
||||
u16 section = ciaset->content.contentIndex[i]/32;
|
||||
u16 section = ciaset->content.index[i]/32;
|
||||
|
||||
// Calculating the value added to the u32
|
||||
u32 value = 1 << (0x1F-ciaset->content.contentIndex[i]);
|
||||
u32 value = 1 << (0x1F-ciaset->content.index[i]);
|
||||
|
||||
// Retrieving current u32 block
|
||||
u32 cur_content_index_section = u8_to_u32(hdr->contentIndex+(sizeof(u32)*section),BE);
|
||||
|
||||
@@ -87,19 +87,20 @@ typedef struct
|
||||
|
||||
bool keyNotFound;
|
||||
|
||||
FILE **contentFilePtrs;
|
||||
FILE **filePtrs;
|
||||
u64 fileSize[CIA_MAX_CONTENT];
|
||||
|
||||
/* Misc Records */
|
||||
u16 contentCount;
|
||||
u64 contentOffset[CIA_MAX_CONTENT];
|
||||
u64 totalContentSize;
|
||||
u16 count;
|
||||
u64 offset[CIA_MAX_CONTENT];
|
||||
u64 totalSize;
|
||||
|
||||
/* Content Chunk Records */
|
||||
u64 contentSize[CIA_MAX_CONTENT];
|
||||
u16 contentIndex[CIA_MAX_CONTENT];
|
||||
u16 contentFlags[CIA_MAX_CONTENT];
|
||||
u32 contentId[CIA_MAX_CONTENT];
|
||||
u8 contentHash[CIA_MAX_CONTENT][0x20];
|
||||
u64 size[CIA_MAX_CONTENT];
|
||||
u16 index[CIA_MAX_CONTENT];
|
||||
u16 flags[CIA_MAX_CONTENT];
|
||||
u32 id[CIA_MAX_CONTENT];
|
||||
u8 hash[CIA_MAX_CONTENT][0x20];
|
||||
} content;
|
||||
|
||||
struct{
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "lib.h"
|
||||
#include "crypto.h"
|
||||
|
||||
// API for polarssl adapted/copied from CTRTOOL by neimod
|
||||
void ctr_sha(void *data, u64 size, u8 *hash, int mode)
|
||||
{
|
||||
switch(mode){
|
||||
@@ -12,39 +11,19 @@ void ctr_sha(void *data, u64 size, u8 *hash, int mode)
|
||||
|
||||
u8* AesKeyScrambler(u8 *Key, u8 *KeyX, u8 *KeyY)
|
||||
{
|
||||
u32 *KeyX_u32 = (u32*) KeyX;
|
||||
u32 *KeyY_u32 = (u32*) KeyY;
|
||||
u32 *Key_u32 = (u32*) Key;
|
||||
// Process KeyX/KeyY to get raw normal key
|
||||
for(int i = 0; i < 16; i++)
|
||||
Key[i] = KeyX[i] ^ ((KeyY[i] >> 2) | ((KeyY[i < 15 ? i+1 : 0] & 3) << 6));
|
||||
|
||||
for(int i = 0,j; i < 4; i++)
|
||||
{
|
||||
switch(i)
|
||||
{
|
||||
///* Type 1
|
||||
case 0 : j = 2; break;
|
||||
case 1 : j = 3; break;
|
||||
case 2 : j = 0; break;
|
||||
case 3 : j = 1; break;
|
||||
//*/
|
||||
/* Type 2
|
||||
case 0 : j = 3; break;
|
||||
case 1 : j = 2; break;
|
||||
case 2 : j = 1; break;
|
||||
case 3 : j = 0; break;
|
||||
//*/
|
||||
/* Type 3
|
||||
case 0 : j = 1; break;
|
||||
case 1 : j = 0; break;
|
||||
case 2 : j = 3; break;
|
||||
case 3 : j = 2; break;
|
||||
//*/
|
||||
}
|
||||
#ifndef PUBLIC_BUILD
|
||||
const u8 SCRAMBLE_SECRET[16] = {0x51, 0xD7, 0x5D, 0xBE, 0xFD, 0x07, 0x57, 0x6A, 0x1C, 0xFC, 0x2A, 0xF0, 0x94, 0x4B, 0xD5, 0x6C};
|
||||
|
||||
Key_u32[j] = KeyX_u32[i] ^ KeyY_u32[i];
|
||||
}
|
||||
// Apply Secret to get final normal key
|
||||
for(int i = 0; i < 16; i++)
|
||||
Key[i] = Key[i] ^ SCRAMBLE_SECRET[i];
|
||||
#endif
|
||||
|
||||
// Done Stuff
|
||||
return (u8*)Key_u32;
|
||||
return Key;
|
||||
}
|
||||
|
||||
void ctr_add_counter(ctr_aes_context* ctx, u32 carry)
|
||||
|
||||
+79
-27
@@ -2,150 +2,202 @@
|
||||
|
||||
/* CTR_SDK 1 (1.2.0) */
|
||||
// APP
|
||||
static const unsigned char app_1_dev_hdrpub[0x100] =
|
||||
static const unsigned char app_fw1B_dev_hdrpub[0x100] =
|
||||
{
|
||||
0x9B, 0x82, 0x9C, 0x19, 0x01, 0x73, 0x23, 0x50, 0x89, 0xE3, 0x0B, 0xC8, 0x8F, 0xFB, 0xA5, 0xE4, 0xFD, 0x44, 0xAE, 0x49, 0x32, 0xC7, 0xEF, 0x0A, 0x7E, 0x93, 0x95, 0xBA, 0xA2, 0x48, 0x4D, 0x8E, 0x18, 0x82, 0x34, 0x66, 0xFE, 0xDA, 0x7A, 0x45, 0x4A, 0x7D, 0xD5, 0x3C, 0xC6, 0x5C, 0xE0, 0x71, 0xFC, 0xD0, 0x82, 0xCC, 0xB2, 0xCF, 0x77, 0x0E, 0xAD, 0xCD, 0xD2, 0xAC, 0x1D, 0x66, 0x1B, 0xC1, 0xEA, 0xAC, 0x39, 0x96, 0x2C, 0x52, 0xDE, 0xFF, 0xF2, 0x74, 0xF6, 0xC5, 0xCA, 0x99, 0x31, 0x95, 0x13, 0xBB, 0x3F, 0xED, 0x30, 0xAE, 0x0A, 0xD3, 0x86, 0x0D, 0x0B, 0xF5, 0x56, 0x7D, 0x33, 0xBA, 0xA1, 0x39, 0xA2, 0xF5, 0xB6, 0x47, 0x78, 0x1F, 0xFD, 0x04, 0xA3, 0x49, 0xA9, 0x10, 0xD3, 0x41, 0x2E, 0x92, 0x7D, 0xE1, 0xA4, 0xA8, 0x02, 0x18, 0x01, 0x2C, 0xC2, 0x61, 0xB1, 0xAC, 0xCB, 0xB3, 0x7A, 0x64, 0xB1, 0xC3, 0xE6, 0x3B, 0x50, 0xAD, 0xDD, 0x55, 0xAB, 0x28, 0xDA, 0x59, 0xE7, 0x57, 0x6A, 0x76, 0x4F, 0x6B, 0x08, 0xD1, 0x61, 0x7D, 0x28, 0xD5, 0x88, 0x7B, 0x8E, 0x80, 0x78, 0xF3, 0xFF, 0x50, 0x00, 0xBD, 0x73, 0xFB, 0x62, 0xB3, 0xCA, 0xA8, 0x05, 0x48, 0xE6, 0xE6, 0x71, 0xB5, 0xAC, 0xDA, 0xE9, 0xC6, 0x1F, 0x9B, 0x72, 0x98, 0x2E, 0xFF, 0xB2, 0x9C, 0x36, 0x9F, 0x7E, 0x7D, 0x25, 0x65, 0x6F, 0xB0, 0x60, 0xB1, 0xB5, 0x5F, 0xCF, 0x74, 0x29, 0x91, 0x9D, 0xAB, 0x84, 0x97, 0x1A, 0x27, 0x5D, 0x69, 0x49, 0x16, 0xF8, 0x77, 0x31, 0x26, 0x3E, 0x6F, 0x97, 0x41, 0x4A, 0x26, 0xFD, 0x5B, 0xAB, 0x65, 0x77, 0x45, 0x1C, 0x76, 0x15, 0xDC, 0x1A, 0x63, 0x0F, 0x51, 0x2D, 0xA0, 0x07, 0x6E, 0xE5, 0x29, 0xD3, 0x37, 0x4B, 0xE5, 0x7F, 0xBB, 0x23, 0xD0, 0x2B, 0xB9, 0x76, 0x1F
|
||||
};
|
||||
|
||||
static const unsigned char app_1_dev_hdrpvt[0x100] =
|
||||
static const unsigned char app_fw1B_dev_hdrpvt[0x100] =
|
||||
{
|
||||
0x66, 0x9F, 0xB5, 0xC5, 0xA6, 0xB8, 0x45, 0xD8, 0xD3, 0x75, 0xFB, 0x03, 0xBB, 0x48, 0xF5, 0x7C, 0x7D, 0x4B, 0x02, 0xBD, 0x19, 0x7E, 0xE9, 0x98, 0x02, 0x5A, 0x00, 0xD8, 0x6E, 0x59, 0xCA, 0x9C, 0x78, 0x3E, 0x0C, 0xB8, 0xDF, 0x7C, 0x6C, 0x6E, 0x27, 0xAF, 0x8C, 0xB6, 0x13, 0xAD, 0x9D, 0x0C, 0x7C, 0x2B, 0x59, 0xF6, 0x1E, 0x16, 0x5D, 0x5A, 0x59, 0x86, 0x57, 0x7D, 0xEF, 0xD4, 0xBF, 0x82, 0xA4, 0x0C, 0x4D, 0xE0, 0x75, 0x95, 0xA6, 0xC6, 0x3F, 0x49, 0xC2, 0xC4, 0x5A, 0x63, 0xE8, 0x5D, 0x99, 0xEC, 0xDB, 0x4D, 0xFA, 0xEF, 0x10, 0x03, 0xF1, 0x15, 0xD1, 0x0B, 0x71, 0xAD, 0x24, 0x23, 0x08, 0x5C, 0x91, 0xD7, 0x17, 0x18, 0x69, 0x04, 0xAB, 0x23, 0x91, 0x62, 0x7D, 0xE8, 0xB5, 0x90, 0xF1, 0x5C, 0x09, 0x28, 0x8C, 0x51, 0xB7, 0x38, 0x02, 0x26, 0x78, 0x8C, 0xA2, 0x05, 0x07, 0x53, 0x7D, 0x99, 0x46, 0xFD, 0x12, 0x77, 0x32, 0x0E, 0xA8, 0x54, 0xE3, 0x32, 0x0E, 0x93, 0x05, 0x10, 0xFA, 0x59, 0x7A, 0x5D, 0x2E, 0xDE, 0x32, 0xE8, 0xE9, 0xF0, 0x27, 0x4E, 0x08, 0x83, 0x08, 0xD4, 0x92, 0x58, 0x4D, 0x6D, 0x34, 0x9F, 0xD9, 0xAF, 0xA9, 0x01, 0x62, 0xB5, 0x1A, 0x1D, 0x7E, 0x8D, 0xBB, 0x8A, 0x58, 0xBA, 0xFF, 0xB4, 0xD3, 0x75, 0xF3, 0x44, 0xE7, 0x13, 0x05, 0xC6, 0xC5, 0xA4, 0xD2, 0x6B, 0x18, 0x31, 0x9F, 0xBE, 0x42, 0x45, 0x82, 0x2E, 0x47, 0x9B, 0x26, 0x73, 0x28, 0xD7, 0x9A, 0x64, 0xA6, 0x3D, 0x38, 0x9C, 0x11, 0x36, 0x01, 0x5B, 0x82, 0x2F, 0x7E, 0xA8, 0xC4, 0x82, 0x15, 0x6C, 0x0B, 0xBA, 0x1C, 0x58, 0xF5, 0x81, 0xF9, 0x45, 0xA9, 0xC6, 0x05, 0x6A, 0x2C, 0xA6, 0xCF, 0xF5, 0xDF, 0xEB, 0xBB, 0xC0, 0x92, 0xE3, 0xA6, 0x9D, 0x23, 0x09, 0x09, 0x0E, 0x98, 0x39
|
||||
};
|
||||
|
||||
static const unsigned char app_1_dev_acexsig[0x100] =
|
||||
static const unsigned char app_fw1B_dev_acexsig[0x100] =
|
||||
{
|
||||
0x05, 0x90, 0xAF, 0x65, 0x16, 0x9F, 0x18, 0x2C, 0x17, 0x78, 0x9F, 0xDF, 0xB6, 0x37, 0xCF, 0x26, 0x9B, 0x1B, 0x75, 0x51, 0xB8, 0x57, 0xA3, 0x8F, 0xD7, 0x93, 0x19, 0x61, 0x81, 0x0D, 0x3D, 0xBC, 0x36, 0x50, 0x53, 0xDA, 0x7D, 0xA9, 0x7F, 0xAA, 0x3E, 0x51, 0x2C, 0x75, 0xA1, 0xB9, 0xB1, 0x56, 0xEB, 0x2A, 0x46, 0x21, 0xEC, 0x4F, 0xA7, 0x0C, 0xA1, 0xA8, 0xFD, 0xEE, 0xA3, 0x4A, 0xFD, 0x54, 0xB0, 0x3A, 0x49, 0x5C, 0x8F, 0x8D, 0xB2, 0xBC, 0x32, 0x50, 0x7E, 0x2C, 0x50, 0xD2, 0x1A, 0x6B, 0x61, 0xCB, 0x2A, 0xC9, 0x7E, 0x6E, 0x6A, 0xC8, 0xD6, 0x9B, 0x21, 0xE7, 0x3B, 0xB8, 0x39, 0x1C, 0xD7, 0xEB, 0x69, 0x35, 0xF5, 0xBC, 0xB5, 0x23, 0x54, 0x81, 0x4F, 0x73, 0xAB, 0x9C, 0x55, 0xF0, 0x04, 0x0B, 0x4A, 0xEA, 0x54, 0x08, 0xBF, 0x36, 0x28, 0x12, 0x5E, 0x44, 0x41, 0xF5, 0x3D, 0xFE, 0xA7, 0x6B, 0x35, 0xF2, 0x9A, 0xF2, 0x88, 0xCD, 0xD6, 0x2E, 0x7B, 0xF3, 0xF5, 0x0D, 0x06, 0x2E, 0x13, 0x4F, 0x78, 0xEE, 0x27, 0xAB, 0x31, 0x06, 0x62, 0xE9, 0xB2, 0x3E, 0xC6, 0x99, 0xD7, 0xA9, 0xCC, 0x21, 0x70, 0xD7, 0xCD, 0x9F, 0x03, 0x66, 0x91, 0x7E, 0xBD, 0x3E, 0x83, 0xC4, 0xFF, 0xC9, 0xAA, 0x7E, 0x27, 0xAE, 0x5C, 0x37, 0x7D, 0x93, 0x57, 0x60, 0xB9, 0x0B, 0x71, 0x43, 0x8A, 0x2F, 0x43, 0x50, 0x94, 0xF8, 0x0D, 0x40, 0xCC, 0x64, 0x16, 0x09, 0x70, 0xCD, 0x03, 0xCA, 0x95, 0x30, 0x20, 0xE2, 0x85, 0x2F, 0x2A, 0xCF, 0x65, 0xAA, 0xE9, 0xCF, 0x1F, 0x57, 0xC1, 0x8F, 0xD5, 0x46, 0x51, 0x5A, 0x99, 0x60, 0x65, 0x93, 0xA9, 0xBB, 0xEA, 0x5F, 0xA0, 0x47, 0xD7, 0x11, 0x04, 0xC7, 0xB4, 0x82, 0x66, 0x24, 0x17, 0x17, 0x5E, 0x9D, 0xC8, 0x50, 0x80, 0x63, 0x28, 0xB3, 0xF8, 0xE3
|
||||
};
|
||||
|
||||
// DLP
|
||||
static const unsigned char dlp_1_dev_hdrpub[0x100] =
|
||||
static const unsigned char dlp_fw1B_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xD9, 0xF0, 0xC9, 0x35, 0x1E, 0x55, 0xD8, 0x7E, 0x96, 0x53, 0x33, 0x34, 0xBB, 0x8A, 0xAE, 0x03, 0x92, 0x35, 0xE2, 0x05, 0x58, 0x7C, 0xCC, 0x08, 0xB2, 0xDF, 0x43, 0x41, 0xB7, 0x7A, 0xB5, 0x29, 0xEE, 0x4E, 0xF3, 0xC7, 0x35, 0x3B, 0x7E, 0xC5, 0xEE, 0x74, 0xF0, 0xAA, 0x7E, 0x60, 0xF1, 0x28, 0x35, 0x17, 0xD6, 0xC9, 0x9A, 0xF2, 0x84, 0xFE, 0xC8, 0x93, 0x86, 0xF7, 0xA7, 0x36, 0xA6, 0xB0, 0x28, 0xDC, 0xE8, 0x38, 0x0B, 0x54, 0x42, 0x8D, 0x4E, 0x4B, 0x55, 0x0F, 0x4A, 0x0D, 0x72, 0xA0, 0x23, 0xC9, 0x68, 0x22, 0x37, 0x31, 0x88, 0x2C, 0x05, 0x49, 0x86, 0x80, 0x9A, 0xFC, 0x1D, 0x02, 0xE3, 0x20, 0x15, 0x0C, 0x7E, 0x28, 0x40, 0x57, 0xEF, 0xA7, 0xBC, 0xAA, 0xC5, 0xD6, 0xD7, 0x6F, 0xF9, 0x26, 0x9A, 0x32, 0xB2, 0x9E, 0x10, 0x5F, 0x93, 0xE6, 0xB2, 0xC6, 0xB2, 0x62, 0x34, 0x6A, 0xB0, 0xD9, 0x71, 0x3B, 0x0F, 0x34, 0x6C, 0xB1, 0xFE, 0x3A, 0x39, 0xDE, 0x3D, 0x6A, 0xCB, 0x32, 0x95, 0xFA, 0x18, 0x4F, 0xF4, 0xEB, 0x5F, 0x20, 0xE4, 0xEF, 0x64, 0xC5, 0x06, 0x27, 0xC3, 0x44, 0x2A, 0x39, 0x35, 0xD8, 0x00, 0xDF, 0x00, 0xAD, 0xC4, 0x98, 0x06, 0x52, 0xD8, 0x4A, 0xC5, 0x2A, 0x7F, 0x77, 0x50, 0x62, 0x7E, 0x05, 0x3E, 0x8C, 0x28, 0x0A, 0x26, 0xD2, 0x6C, 0x9B, 0x27, 0x65, 0xE9, 0x77, 0x68, 0xE9, 0xE6, 0xAA, 0xBA, 0xF5, 0x85, 0xFC, 0x75, 0x07, 0x84, 0xB2, 0xCA, 0x35, 0x85, 0x52, 0x10, 0x08, 0xEF, 0x85, 0xD3, 0x70, 0x17, 0x31, 0xE1, 0x44, 0xF6, 0x34, 0xDF, 0x7C, 0x42, 0xF7, 0x74, 0xAA, 0xFC, 0xC3, 0xE4, 0x84, 0x2D, 0xBF, 0x15, 0x1E, 0x84, 0x00, 0xE3, 0x80, 0xD7, 0x89, 0x56, 0xEE, 0x60, 0x09, 0x1F, 0xD3, 0xBF, 0xBF, 0x50, 0x8F, 0xA3, 0x0C, 0x72, 0x3F
|
||||
};
|
||||
|
||||
static const unsigned char dlp_1_dev_hdrpvt[0x100] =
|
||||
static const unsigned char dlp_fw1B_dev_hdrpvt[0x100] =
|
||||
{
|
||||
0x10, 0x19, 0x3A, 0x33, 0xA3, 0x47, 0x02, 0x13, 0xEF, 0xB4, 0xBB, 0x9E, 0x94, 0x8F, 0xDC, 0xE4, 0xC4, 0xA3, 0x18, 0x4B, 0xFE, 0xCA, 0x51, 0x23, 0xFF, 0x5A, 0x80, 0x94, 0x55, 0x22, 0x4A, 0x49, 0x8B, 0xA1, 0xE7, 0x5D, 0xFA, 0xAF, 0xA7, 0x60, 0xA5, 0x89, 0x9B, 0xD1, 0x6C, 0x3E, 0x6A, 0xF1, 0xE6, 0x62, 0x19, 0x6A, 0x90, 0xF8, 0x83, 0x1C, 0x72, 0xE2, 0x7A, 0xE0, 0xC6, 0x48, 0x42, 0x2D, 0xD7, 0x06, 0xE2, 0x5C, 0x69, 0x71, 0xD2, 0xEC, 0xAF, 0x30, 0xDF, 0x5A, 0x9E, 0xC4, 0xB9, 0x87, 0xDC, 0xBC, 0xDE, 0xE5, 0x50, 0x20, 0x67, 0x87, 0xA0, 0xE8, 0x5A, 0x78, 0x1B, 0x7A, 0xAE, 0x05, 0xED, 0x93, 0x0C, 0x1A, 0xFD, 0x22, 0xAA, 0x06, 0x14, 0xDC, 0xD6, 0x11, 0xE3, 0x45, 0x48, 0x6A, 0xAC, 0x03, 0xCE, 0xF6, 0x19, 0xBD, 0x95, 0x46, 0x0A, 0x1D, 0xCB, 0x6C, 0xE3, 0xF6, 0x5F, 0x1A, 0xB3, 0x81, 0xC7, 0xE2, 0xAB, 0xFE, 0xEF, 0xFB, 0xEC, 0xFE, 0x88, 0x36, 0x26, 0x60, 0x47, 0x43, 0x78, 0x36, 0xA7, 0xC8, 0xC9, 0x40, 0x98, 0x2E, 0xF2, 0x7E, 0xE4, 0x0D, 0x6C, 0x45, 0x88, 0x2A, 0x32, 0x9B, 0xA2, 0x7C, 0x39, 0x20, 0xAA, 0x6B, 0x64, 0x35, 0xC6, 0xA9, 0x20, 0x71, 0x4A, 0x78, 0x6E, 0x55, 0x3C, 0x9B, 0xEA, 0x10, 0x73, 0xBB, 0xA7, 0xD8, 0xFE, 0x69, 0x42, 0xB8, 0xE7, 0xA1, 0xE5, 0xDF, 0x8A, 0xDE, 0x4C, 0x2B, 0x3A, 0x92, 0xB8, 0x3E, 0x5E, 0x2C, 0x29, 0x0D, 0xC1, 0x3D, 0x10, 0x65, 0x1E, 0xF1, 0x95, 0xE5, 0xF6, 0x45, 0x15, 0xBF, 0xE2, 0x30, 0xA6, 0x70, 0x19, 0xA4, 0x11, 0x57, 0x12, 0x1C, 0x81, 0x4B, 0x54, 0x04, 0xBE, 0x67, 0xF5, 0x00, 0x22, 0x06, 0xDA, 0x6B, 0xCE, 0x23, 0x3F, 0x86, 0xE4, 0x70, 0x6A, 0xD1, 0x3E, 0xE5, 0x74, 0x44, 0x86, 0xDA, 0xBE, 0x79
|
||||
};
|
||||
|
||||
static const unsigned char dlp_1_dev_acexsig[0x100] =
|
||||
static const unsigned char dlp_fw1B_dev_acexsig[0x100] =
|
||||
{
|
||||
0x13, 0xB2, 0xF4, 0x89, 0xBB, 0xB4, 0xFF, 0x55, 0x7E, 0x3E, 0x9B, 0x90, 0x44, 0x45, 0xC6, 0x8A, 0x17, 0x32, 0x91, 0x77, 0x7D, 0xCB, 0x4A, 0x26, 0x3D, 0xCA, 0xD8, 0x6E, 0x72, 0x27, 0x93, 0x9C, 0xE4, 0x27, 0xFE, 0x54, 0xDC, 0xE7, 0xDC, 0x02, 0x17, 0x9C, 0x82, 0xA8, 0xB0, 0xE8, 0x69, 0x07, 0xE3, 0x34, 0x0E, 0xBF, 0x17, 0x05, 0x58, 0x23, 0x5F, 0x6D, 0xDA, 0xE8, 0xC6, 0xEE, 0x49, 0x29, 0xEF, 0xD7, 0x48, 0x48, 0x41, 0xE2, 0x2A, 0x57, 0x2B, 0x21, 0x13, 0x64, 0xD4, 0x79, 0x5A, 0xE3, 0x84, 0xDA, 0x63, 0x9A, 0x07, 0x39, 0xE2, 0x7E, 0xA7, 0x56, 0x34, 0x1C, 0xE2, 0xAF, 0xCD, 0x65, 0xD1, 0xC0, 0x1B, 0x72, 0xB1, 0x1D, 0xFC, 0xE2, 0x6E, 0x0F, 0xC7, 0xB0, 0xF5, 0x84, 0x0F, 0xA5, 0x2B, 0xDF, 0x3A, 0xCF, 0x43, 0xE8, 0xE4, 0x07, 0x29, 0xC6, 0x41, 0x0E, 0x7B, 0xEE, 0x35, 0xF9, 0xFC, 0xE7, 0x15, 0xF3, 0x8C, 0x3A, 0xB4, 0x77, 0xBD, 0x88, 0x70, 0x83, 0x4A, 0x03, 0x9E, 0x01, 0x9B, 0xBB, 0xD2, 0xE4, 0xA5, 0xBE, 0xF7, 0x80, 0x92, 0x5A, 0x9F, 0x14, 0x9B, 0x49, 0x5D, 0x3D, 0xDC, 0x32, 0x34, 0x7E, 0xC0, 0xD4, 0xAC, 0xDA, 0x8C, 0xF7, 0xA1, 0xE1, 0xCA, 0x29, 0xF5, 0x58, 0x5E, 0xEB, 0x02, 0xB6, 0x67, 0x42, 0x89, 0x46, 0x4C, 0xA6, 0xA8, 0xBD, 0xEB, 0xEB, 0xDD, 0x8F, 0x2E, 0x72, 0x26, 0x49, 0x70, 0x01, 0x7D, 0x5B, 0x03, 0x06, 0x2C, 0x92, 0x1E, 0x55, 0xB2, 0xDA, 0xD7, 0x0D, 0x70, 0x74, 0x42, 0xD5, 0x62, 0x42, 0x3C, 0xC1, 0x70, 0x8E, 0x67, 0xB1, 0xD9, 0xF3, 0x7E, 0xB2, 0xBA, 0x6D, 0x0F, 0x42, 0x65, 0x24, 0x79, 0xE8, 0x8F, 0xB4, 0x4B, 0x32, 0x35, 0xCA, 0x39, 0x70, 0xFE, 0x8E, 0x81, 0x49, 0x73, 0x8D, 0x3C, 0xCD, 0x60, 0xAF, 0xA3, 0x52, 0x45, 0xEE
|
||||
};
|
||||
|
||||
/* CTR_SDK 2 (2.3.4) */
|
||||
// APP
|
||||
static const unsigned char app_2_dev_hdrpub[0x100] =
|
||||
static const unsigned char app_fw1D_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xE9, 0x45, 0xF0, 0xC6, 0x96, 0xD5, 0x6F, 0x7E, 0xAE, 0x03, 0x92, 0x2E, 0xEA, 0xCB, 0xFD, 0xEA, 0xA4, 0x7A, 0x9F, 0x12, 0xDA, 0x4C, 0x10, 0x0A, 0xBE, 0x08, 0x9D, 0x87, 0xE0, 0x14, 0xAC, 0x7F, 0x39, 0xD2, 0xFE, 0x9D, 0x88, 0xB2, 0x81, 0xF6, 0x1A, 0x9E, 0x15, 0x57, 0xD4, 0xE2, 0x31, 0x08, 0x07, 0xEC, 0x4F, 0x10, 0x00, 0xDE, 0xEF, 0x8B, 0x6F, 0xCF, 0x84, 0xE7, 0x3B, 0x41, 0x08, 0x64, 0x3B, 0x1C, 0x00, 0x7C, 0x73, 0xBB, 0x59, 0x4D, 0xD8, 0xD6, 0xE7, 0x7B, 0xBE, 0xDD, 0x50, 0x98, 0xA1, 0x1A, 0xD5, 0xAA, 0x37, 0x69, 0xB8, 0x25, 0xCB, 0x7B, 0x03, 0x00, 0x90, 0x25, 0xF3, 0x7E, 0x9A, 0x0F, 0xA3, 0xAA, 0xC4, 0xB9, 0x3B, 0x3A, 0x18, 0x2B, 0xBC, 0x9C, 0x11, 0x04, 0x92, 0x16, 0x6E, 0xC3, 0xFA, 0x01, 0xD3, 0x00, 0x02, 0xF3, 0x2E, 0xD5, 0x60, 0xA8, 0xAF, 0xAB, 0xEE, 0x2F, 0x9D, 0x30, 0x3E, 0x0E, 0xDC, 0xB8, 0xEC, 0x87, 0x9E, 0x4A, 0xA9, 0x01, 0x34, 0x69, 0x2C, 0x4C, 0x34, 0xB7, 0x7D, 0xB9, 0x7A, 0x17, 0x74, 0x31, 0xB0, 0x29, 0xC4, 0x7D, 0x27, 0x1F, 0xBA, 0xBA, 0x3F, 0x5B, 0x62, 0xF6, 0x90, 0xB8, 0x37, 0x33, 0xFC, 0x73, 0xD6, 0x19, 0x11, 0xCA, 0x83, 0x2A, 0x58, 0x62, 0x9C, 0xB1, 0x83, 0x43, 0x1D, 0x2C, 0x00, 0xA2, 0xE5, 0x87, 0x97, 0x12, 0x63, 0x31, 0x83, 0x0E, 0xB1, 0x1E, 0x69, 0x99, 0x02, 0xAF, 0xDF, 0xFF, 0x0F, 0xA9, 0x7C, 0x1B, 0x33, 0x9E, 0xFF, 0x9C, 0x14, 0x19, 0xA6, 0xCA, 0xFD, 0xB9, 0x17, 0xE0, 0x22, 0xCF, 0xB5, 0x00, 0x77, 0x2E, 0x31, 0xAD, 0xF7, 0xE5, 0xAD, 0x98, 0x14, 0xDF, 0x19, 0xF0, 0xC9, 0xBE, 0x37, 0xF6, 0xF0, 0x23, 0x66, 0xCF, 0x34, 0xE3, 0xD5, 0x8F, 0xD4, 0x07, 0xBA, 0x06, 0x56, 0x00, 0x66, 0x9A, 0xEB, 0x93
|
||||
};
|
||||
|
||||
static const unsigned char app_2_dev_hdrpvt[0x100] =
|
||||
static const unsigned char app_fw1D_dev_hdrpvt[0x100] =
|
||||
{
|
||||
0xBC, 0x49, 0x29, 0xB9, 0x01, 0x52, 0x31, 0x76, 0x4C, 0xBA, 0xB1, 0x29, 0x91, 0x77, 0x29, 0xF2, 0x54, 0xE4, 0x6C, 0xB5, 0x68, 0xE1, 0xF0, 0x28, 0xDB, 0x8E, 0x54, 0xA8, 0xB1, 0xA3, 0xBE, 0x3F, 0xCA, 0xCA, 0x95, 0x9D, 0x4E, 0x12, 0xD7, 0x77, 0x6F, 0xB0, 0x9D, 0x85, 0x91, 0x5D, 0x29, 0x3A, 0x54, 0x3A, 0xD6, 0xEE, 0x11, 0xE5, 0xDF, 0xEF, 0xEA, 0x45, 0xD3, 0xFE, 0x58, 0x03, 0x7B, 0xE4, 0x7B, 0x19, 0x75, 0x02, 0xFE, 0xDE, 0xFF, 0x8C, 0x28, 0x33, 0xFE, 0x10, 0x11, 0xD4, 0xCD, 0x13, 0x05, 0x26, 0x85, 0xC3, 0xA8, 0x8A, 0x7A, 0x8A, 0x77, 0x1D, 0x49, 0x25, 0x11, 0x34, 0xB0, 0xBF, 0x45, 0x56, 0xCE, 0x42, 0x2E, 0x1B, 0x5C, 0xC4, 0xDD, 0x71, 0xA0, 0x01, 0x50, 0x73, 0x21, 0xFF, 0x5D, 0x54, 0x6D, 0xDD, 0x3F, 0x14, 0x49, 0x4D, 0x44, 0x46, 0x12, 0x88, 0xD5, 0x92, 0xAE, 0xE2, 0xD0, 0xF6, 0x2C, 0x10, 0xD5, 0x67, 0x61, 0x87, 0x7F, 0x2A, 0x17, 0x9D, 0x4F, 0xC6, 0x79, 0xC3, 0xAF, 0x4D, 0x6F, 0xFB, 0x0F, 0x3B, 0x48, 0x5D, 0x46, 0x9A, 0xE8, 0x53, 0xB7, 0xC5, 0x69, 0xEC, 0x31, 0x25, 0xD1, 0xDC, 0x93, 0xAB, 0x2E, 0x53, 0x3B, 0x8E, 0x96, 0x27, 0x59, 0xD4, 0xF7, 0xB3, 0xAB, 0x51, 0x59, 0xAE, 0x6E, 0x26, 0x4F, 0xC2, 0x95, 0xCE, 0x42, 0xC6, 0xAF, 0x46, 0xC6, 0x2E, 0x32, 0x09, 0x7B, 0xAF, 0x67, 0x4E, 0x57, 0xC8, 0x93, 0x5F, 0x8C, 0xD5, 0x66, 0x7B, 0xCC, 0xE9, 0xBE, 0x86, 0xB9, 0xBB, 0xD0, 0xC8, 0xD2, 0xDC, 0x5F, 0x95, 0x83, 0x28, 0x55, 0x21, 0x1E, 0xEE, 0xCF, 0x23, 0xB7, 0x6D, 0xE0, 0x9A, 0x87, 0x99, 0xFB, 0x82, 0x50, 0xD0, 0x2D, 0xC4, 0xFB, 0xA0, 0x11, 0x2F, 0xDD, 0x05, 0x7E, 0x1C, 0xE3, 0xFB, 0x98, 0x69, 0xD4, 0x49, 0x2F, 0x0D, 0xF6, 0x61
|
||||
};
|
||||
|
||||
static const unsigned char app_2_dev_acexsig[0x100] =
|
||||
static const unsigned char app_fw1D_dev_acexsig[0x100] =
|
||||
{
|
||||
0x62, 0xFE, 0xD9, 0x12, 0x3D, 0x99, 0x53, 0xC4, 0x20, 0x25, 0xDE, 0x59, 0xEA, 0x6E, 0xF3, 0x16, 0x5B, 0x36, 0xBA, 0x1C, 0xB3, 0xB5, 0x48, 0x37, 0xD2, 0xA4, 0x04, 0xE5, 0x14, 0xC6, 0xE7, 0x22, 0x14, 0x40, 0x6F, 0x92, 0x6A, 0x9B, 0xDF, 0xDE, 0xFA, 0xCE, 0x3C, 0xBB, 0x4B, 0xC4, 0x66, 0xA8, 0x86, 0x58, 0xAC, 0xEB, 0x2F, 0xB7, 0xA3, 0xEC, 0xEA, 0x31, 0x23, 0x61, 0xF6, 0x72, 0x1E, 0x26, 0x8A, 0x1D, 0x68, 0x2A, 0x2A, 0x21, 0x5A, 0xA2, 0x6A, 0xBD, 0xCE, 0xC0, 0x19, 0x08, 0x61, 0x64, 0xB3, 0xF6, 0x90, 0xB1, 0x34, 0xF8, 0x50, 0x6F, 0x83, 0xB6, 0x8D, 0x35, 0x12, 0x7F, 0x9C, 0x7B, 0x6E, 0x3C, 0x4E, 0xD1, 0xFD, 0xC3, 0x30, 0xD2, 0xE8, 0x7E, 0x15, 0x1F, 0xAD, 0xDB, 0x1D, 0x92, 0xDA, 0x8C, 0x4E, 0xE9, 0x84, 0x83, 0xFF, 0x1A, 0x09, 0x77, 0x05, 0x5A, 0xCF, 0x5C, 0x8B, 0x4F, 0x68, 0x36, 0xC8, 0xDA, 0x5B, 0x1A, 0x5A, 0x49, 0xF9, 0xA1, 0xF2, 0xC8, 0x02, 0xFD, 0x69, 0x1F, 0x1D, 0xB3, 0xE8, 0xF8, 0xE1, 0x6B, 0x15, 0x9A, 0x5E, 0x41, 0x84, 0x06, 0x1F, 0x2A, 0xB3, 0xB2, 0xA1, 0xDC, 0x63, 0x81, 0xB3, 0x6B, 0x4B, 0x21, 0x67, 0x19, 0x82, 0x52, 0xFE, 0x75, 0x96, 0xA1, 0xDF, 0x02, 0xD4, 0x07, 0x1F, 0x1B, 0x88, 0x12, 0x5A, 0x76, 0x54, 0xC4, 0x06, 0x2D, 0xB1, 0xAA, 0x41, 0x3C, 0x9F, 0x43, 0xA2, 0x75, 0x20, 0x39, 0xB6, 0x06, 0xF9, 0x9C, 0xFC, 0x00, 0xC5, 0xBC, 0x84, 0x13, 0x80, 0xE4, 0x10, 0x1A, 0xCD, 0x95, 0xBB, 0xF2, 0xDC, 0x57, 0x7B, 0xBA, 0x87, 0x05, 0x0B, 0x96, 0xC1, 0xCD, 0x60, 0xC7, 0x10, 0x44, 0x78, 0x0E, 0x0F, 0x2F, 0x91, 0x54, 0x6C, 0xDE, 0xB8, 0x14, 0x46, 0xF3, 0x9C, 0xAC, 0x7B, 0xAA, 0xE7, 0x1B, 0x52, 0xD6, 0xBE, 0x71, 0x97, 0x22
|
||||
};
|
||||
|
||||
// DLP
|
||||
static const unsigned char dlp_2_dev_hdrpub[0x100] =
|
||||
static const unsigned char dlp_fw1D_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xB9, 0xDE, 0x3D, 0xC0, 0x55, 0xB9, 0xCC, 0x3F, 0x55, 0xE0, 0x61, 0x1D, 0x6F, 0xCF, 0x3E, 0x7F, 0xE2, 0xF7, 0xF5, 0xAD, 0x5C, 0x02, 0x7F, 0x17, 0x5B, 0x44, 0x2F, 0x2D, 0xDC, 0xD4, 0xA6, 0x63, 0xD2, 0xA7, 0x82, 0xD3, 0x00, 0x77, 0xC8, 0x0B, 0x28, 0x09, 0x3D, 0x81, 0x86, 0x93, 0xF5, 0xF6, 0xE4, 0x69, 0x3B, 0x60, 0x4C, 0x7F, 0x8D, 0x72, 0xA3, 0x22, 0x42, 0x86, 0x87, 0x06, 0xD8, 0x29, 0x89, 0x8A, 0x9F, 0x5F, 0x6C, 0x06, 0x0C, 0x96, 0x84, 0x00, 0x24, 0x5D, 0x0B, 0xEA, 0x15, 0xEC, 0xAD, 0x90, 0xA4, 0x0C, 0x7B, 0xAE, 0x0E, 0x85, 0x3E, 0xA2, 0x20, 0x04, 0xE8, 0xD9, 0x59, 0x0F, 0x31, 0x0E, 0xD4, 0x5D, 0xC1, 0x18, 0xED, 0x0E, 0xB4, 0xD2, 0x5E, 0x65, 0xA2, 0x78, 0x0C, 0x76, 0x03, 0x3A, 0x71, 0x18, 0xE4, 0x38, 0x44, 0x14, 0xE0, 0x93, 0x84, 0xFE, 0x34, 0x82, 0xCA, 0x0B, 0xB8, 0xF2, 0x41, 0xAB, 0x63, 0xF3, 0xDE, 0xAE, 0xF4, 0x36, 0x81, 0xA4, 0x78, 0x7B, 0xF9, 0xA8, 0xFB, 0xC9, 0xA7, 0x6E, 0xA4, 0xD5, 0xE2, 0xA9, 0xD8, 0xD9, 0xE8, 0x98, 0x1B, 0x25, 0x75, 0x00, 0x11, 0x51, 0x97, 0x62, 0x0D, 0xF0, 0x0C, 0xE9, 0x6B, 0x0C, 0xEE, 0xCE, 0x25, 0x2C, 0x3F, 0xDF, 0xBE, 0x54, 0xD5, 0xD6, 0x5E, 0xEE, 0x1F, 0x73, 0xFC, 0xE8, 0xEC, 0xB3, 0x8A, 0x48, 0x9F, 0x6A, 0xC1, 0x63, 0x85, 0xE4, 0x94, 0x85, 0x8F, 0x3D, 0x9D, 0x43, 0xB4, 0xA7, 0x4C, 0x82, 0xA3, 0x0B, 0x67, 0x43, 0x12, 0x31, 0x77, 0x89, 0xB0, 0xD5, 0x00, 0x1B, 0x52, 0x29, 0xCE, 0x54, 0xC7, 0xC4, 0x7D, 0xB6, 0x69, 0x7B, 0xFE, 0xDC, 0xDB, 0x4E, 0xD8, 0x58, 0x42, 0x14, 0x34, 0x72, 0x64, 0xBC, 0x09, 0x6D, 0xAC, 0xD3, 0xC4, 0x1B, 0x5C, 0x8E, 0xF9, 0xBE, 0x84, 0xCD, 0x9A, 0x86, 0x4B, 0x17
|
||||
};
|
||||
|
||||
static const unsigned char dlp_2_dev_hdrpvt[0x100] =
|
||||
static const unsigned char dlp_fw1D_dev_hdrpvt[0x100] =
|
||||
{
|
||||
0xAA, 0x51, 0x62, 0x58, 0x9A, 0xB5, 0x74, 0xDA, 0x1C, 0xC1, 0x4D, 0x7C, 0x81, 0xF6, 0x70, 0x99, 0x13, 0xCC, 0x90, 0x0D, 0xD9, 0xA0, 0x58, 0x01, 0x79, 0x1A, 0x53, 0xF9, 0x3C, 0xC0, 0x87, 0xF0, 0x35, 0x1A, 0x56, 0xA1, 0x2F, 0x6E, 0x93, 0x9A, 0xD5, 0x87, 0x12, 0x1B, 0x5C, 0xCC, 0xBC, 0xB9, 0x0E, 0xB8, 0xF7, 0x35, 0xD9, 0x23, 0x90, 0xE4, 0x19, 0x64, 0xCD, 0x7D, 0x24, 0xC2, 0x3A, 0xD6, 0x65, 0x38, 0xE7, 0xAD, 0xB2, 0xF9, 0x20, 0x13, 0xD4, 0xC5, 0xA4, 0x8C, 0xB6, 0xDC, 0x3C, 0x56, 0xF2, 0xFC, 0xF5, 0xB6, 0x92, 0xA6, 0xFE, 0x9B, 0x4E, 0xB7, 0x95, 0x8B, 0xAA, 0x2B, 0x70, 0x96, 0xA1, 0x27, 0xAB, 0xA6, 0x75, 0xC9, 0x77, 0x80, 0xE0, 0x65, 0x5D, 0x26, 0xD8, 0xE8, 0x14, 0xD3, 0x17, 0x46, 0x38, 0x58, 0xCC, 0xD8, 0x5A, 0x5A, 0x9F, 0x27, 0xCE, 0xD8, 0x7A, 0x19, 0xD7, 0x35, 0xB2, 0x32, 0xAF, 0x47, 0x2E, 0x9F, 0x4B, 0x64, 0xEC, 0x1F, 0xC6, 0x40, 0xD0, 0x2C, 0x47, 0xD1, 0xEA, 0x33, 0xE5, 0x0E, 0x80, 0xFC, 0x68, 0xEC, 0x8C, 0x12, 0x33, 0xCE, 0x34, 0x28, 0x79, 0xFA, 0x05, 0x5D, 0x70, 0x15, 0xDE, 0xB1, 0x22, 0x85, 0x18, 0x63, 0x15, 0x35, 0x57, 0x04, 0x17, 0x64, 0x20, 0xC8, 0x52, 0x44, 0x64, 0x5E, 0x47, 0x4E, 0x5F, 0x80, 0x21, 0x16, 0x94, 0x4B, 0x18, 0x11, 0x36, 0x67, 0x3B, 0x6C, 0x69, 0x19, 0xCF, 0xC9, 0x05, 0x85, 0x9B, 0x3A, 0xDE, 0x12, 0x1E, 0x0A, 0xC6, 0x22, 0xA8, 0xC7, 0x9A, 0x34, 0x14, 0x98, 0xFD, 0xD9, 0x0F, 0xE8, 0x64, 0xE6, 0x89, 0x63, 0x6E, 0x17, 0x76, 0xD7, 0x1B, 0x6F, 0x92, 0x00, 0xD8, 0xBB, 0xF6, 0xA0, 0x65, 0x9D, 0xAA, 0x7A, 0x0E, 0x4B, 0x56, 0xA5, 0x33, 0xDA, 0x3F, 0x5D, 0xFE, 0xD3, 0xAD, 0x6E, 0x0E, 0xB3, 0xD4, 0x41
|
||||
};
|
||||
|
||||
static const unsigned char dlp_2_dev_acexsig[0x100] =
|
||||
static const unsigned char dlp_fw1D_dev_acexsig[0x100] =
|
||||
{
|
||||
0x97, 0x84, 0x97, 0xEE, 0x4F, 0x35, 0xCC, 0xBE, 0x08, 0xB4, 0x5D, 0x7E, 0x17, 0xC3, 0x94, 0x2B, 0x4D, 0x3A, 0xA5, 0xB5, 0x01, 0xD4, 0xAE, 0x2A, 0x90, 0x26, 0x21, 0x8F, 0x56, 0x05, 0xB9, 0xA2, 0x5E, 0xCE, 0x73, 0xC7, 0x42, 0xDC, 0x99, 0xD2, 0x7C, 0x08, 0x62, 0xBF, 0x10, 0x7A, 0xC1, 0x5D, 0x22, 0x53, 0x8F, 0x63, 0x2D, 0x73, 0xF3, 0x05, 0xDA, 0x9D, 0x6A, 0xF8, 0xB9, 0x5B, 0x80, 0xB4, 0x30, 0xB3, 0x11, 0xF7, 0x96, 0x8A, 0xCF, 0x70, 0xD7, 0x62, 0x6E, 0x99, 0x32, 0xFD, 0x74, 0x34, 0x16, 0xFD, 0x17, 0x1F, 0xB1, 0xEC, 0xA4, 0x0F, 0x52, 0x13, 0x9F, 0x62, 0x0D, 0xE0, 0x50, 0xA6, 0xA0, 0x7B, 0x69, 0x95, 0xE0, 0xE9, 0xBB, 0x38, 0x0C, 0x62, 0xE0, 0xE3, 0xCE, 0x82, 0xE0, 0xB9, 0xE0, 0xF6, 0x61, 0x50, 0xBF, 0xA8, 0x18, 0x15, 0x38, 0xFE, 0xFA, 0x8C, 0xBA, 0xA5, 0xB9, 0x9C, 0x05, 0xA6, 0x91, 0x5C, 0xA7, 0x13, 0x6F, 0x13, 0x3F, 0xF1, 0xF6, 0x68, 0xAF, 0x40, 0xEC, 0x27, 0xE0, 0x33, 0x6B, 0xCF, 0x26, 0x06, 0xF8, 0x6A, 0x13, 0x6C, 0xBC, 0xDB, 0xAF, 0x6F, 0x78, 0xA0, 0x80, 0x10, 0x8F, 0xB6, 0x91, 0x5A, 0x43, 0x2C, 0x5F, 0x1D, 0xBA, 0xB4, 0x5E, 0xBE, 0xAE, 0x53, 0x09, 0x17, 0x5B, 0x6C, 0xC1, 0x5E, 0x0F, 0x72, 0x6E, 0xD6, 0x10, 0x0B, 0xC3, 0x26, 0xDC, 0xAF, 0xCA, 0x28, 0xAB, 0x00, 0x67, 0x04, 0xE3, 0x54, 0xE8, 0x95, 0xC6, 0x23, 0xB6, 0x79, 0x70, 0xA4, 0x87, 0x6D, 0x12, 0x48, 0xCC, 0x11, 0x86, 0xEC, 0x82, 0xF4, 0x30, 0xC9, 0xB1, 0x6D, 0x08, 0xA7, 0xEA, 0x8C, 0x6A, 0x97, 0xAA, 0x89, 0xD5, 0xC5, 0x07, 0xA9, 0xD5, 0xCF, 0x09, 0x08, 0xBC, 0x56, 0x63, 0x8D, 0x70, 0x2F, 0x64, 0xAF, 0x51, 0x9E, 0x22, 0xA4, 0x88, 0xF0, 0xDC, 0x56, 0x72, 0x28
|
||||
};
|
||||
|
||||
// DEMO
|
||||
static const unsigned char demo_2_dev_hdrpub[0x100] =
|
||||
static const unsigned char demo_fw1E_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xC0, 0xBE, 0x2D, 0xAC, 0x4A, 0x1D, 0xCB, 0xDE, 0x84, 0x61, 0x0C, 0x29, 0x50, 0xEC, 0x7A, 0xF9, 0xA4, 0x96, 0x3B, 0x6E, 0xF7, 0xEC, 0x38, 0x25, 0x52, 0xB0, 0x6D, 0x71, 0xA4, 0x55, 0x61, 0x7C, 0xB4, 0xCA, 0x7F, 0x4D, 0xB0, 0xF2, 0x26, 0xE8, 0xDE, 0x11, 0x01, 0x3C, 0xFF, 0x11, 0xBE, 0x42, 0x7D, 0x80, 0xD6, 0xF0, 0xEB, 0x1E, 0xF5, 0x68, 0x48, 0x24, 0x65, 0x09, 0xA0, 0x29, 0x9B, 0xC3, 0xBB, 0x45, 0x7E, 0x49, 0xE7, 0x98, 0x0E, 0x5F, 0x3C, 0xCC, 0xA6, 0xC6, 0x13, 0xC5, 0xC6, 0x8C, 0x82, 0x8F, 0xEC, 0xF1, 0x6D, 0xDB, 0x9C, 0xE6, 0xAD, 0xB7, 0x3E, 0xD7, 0x29, 0xFC, 0x3B, 0x50, 0x1F, 0x92, 0x0B, 0x25, 0x91, 0x41, 0x32, 0xFE, 0xCE, 0xAF, 0x0D, 0x34, 0xC5, 0xA3, 0x2E, 0x1A, 0x41, 0xA1, 0xC4, 0x86, 0x8D, 0x94, 0x1E, 0x80, 0x58, 0x3E, 0x35, 0x58, 0x2D, 0x0C, 0xD1, 0x0E, 0x3E, 0x6C, 0xE3, 0xDC, 0x2B, 0x97, 0xDC, 0xEC, 0x3A, 0x0D, 0xDA, 0x8E, 0x14, 0x5F, 0x12, 0xDC, 0xD7, 0x19, 0xD1, 0xE9, 0xDA, 0xD9, 0x6D, 0x02, 0x4E, 0xFC, 0x9B, 0x41, 0x3E, 0x4A, 0x70, 0xD6, 0x81, 0x41, 0xF3, 0x7F, 0xC8, 0x6E, 0xAD, 0x58, 0x25, 0xC8, 0x92, 0xD6, 0x37, 0x10, 0x93, 0xEB, 0x1D, 0xCD, 0x80, 0x05, 0x9F, 0x85, 0x05, 0x75, 0x47, 0xFC, 0x3C, 0xA7, 0x6A, 0xF4, 0x32, 0x1D, 0x49, 0xF3, 0xAA, 0x26, 0xEB, 0x78, 0x02, 0xE6, 0xA7, 0x15, 0xC0, 0xE1, 0x76, 0x19, 0x61, 0x42, 0xEC, 0x58, 0x38, 0x5F, 0x6F, 0xA6, 0x61, 0x6D, 0x49, 0x07, 0x70, 0xFD, 0x08, 0x28, 0x41, 0xB7, 0xA7, 0x96, 0x0E, 0x94, 0x2E, 0xF9, 0x25, 0x29, 0x15, 0x92, 0x13, 0xFC, 0xA6, 0x0D, 0x40, 0x54, 0x2D, 0x9D, 0x4E, 0x19, 0x77, 0xB1, 0xFC, 0x27, 0x95, 0x8F, 0xDA, 0x99, 0xED, 0x2C, 0xD7, 0xE1
|
||||
};
|
||||
|
||||
static const unsigned char demo_2_dev_acexsig[0x100] =
|
||||
static const unsigned char demo_fw1E_dev_acexsig[0x100] =
|
||||
{
|
||||
0x67, 0xC0, 0xA1, 0x00, 0x1D, 0xE0, 0x35, 0x62, 0x0F, 0xA7, 0xFE, 0xE7, 0xC5, 0x8B, 0x44, 0xFE, 0x1F, 0x61, 0x82, 0xFD, 0x42, 0xAF, 0x88, 0xAD, 0x44, 0xE2, 0x26, 0xFB, 0xFD, 0xA1, 0xFC, 0x3A, 0x9D, 0xCD, 0x1B, 0x2D, 0xD2, 0x40, 0x13, 0x85, 0x1C, 0x66, 0xCF, 0xF1, 0xF5, 0x1D, 0xF0, 0x5E, 0x54, 0xB5, 0xB9, 0x8A, 0xB2, 0x72, 0x91, 0xF5, 0x23, 0xF0, 0x58, 0xBA, 0xC0, 0x4D, 0x84, 0x77, 0x5A, 0x4D, 0x41, 0xBD, 0xBD, 0x07, 0x38, 0x3E, 0x42, 0x40, 0x94, 0x55, 0x21, 0xCF, 0x99, 0x89, 0xA7, 0xEC, 0xBA, 0x6D, 0x72, 0x3B, 0x98, 0xE1, 0x5A, 0x21, 0x57, 0x79, 0xBF, 0xC4, 0xC5, 0x0D, 0xBF, 0x76, 0x44, 0x88, 0xFE, 0x3D, 0x8A, 0x8A, 0x05, 0x85, 0x61, 0xBB, 0xB6, 0x76, 0x22, 0xF6, 0x59, 0x9E, 0x3B, 0x21, 0xF3, 0x23, 0xC7, 0x20, 0x34, 0x8E, 0xB7, 0xAB, 0xD0, 0x06, 0x56, 0x11, 0x92, 0x02, 0xF0, 0xB7, 0x1A, 0x4D, 0x85, 0xD5, 0x7A, 0x71, 0x75, 0x5D, 0x3A, 0x7D, 0x6F, 0xB7, 0xC2, 0xA6, 0xAF, 0xCF, 0x1C, 0x44, 0x61, 0xBB, 0xE7, 0x03, 0x7D, 0x2E, 0xE9, 0xC2, 0x0D, 0x89, 0xD9, 0x4B, 0x4D, 0x88, 0xB8, 0x81, 0xB5, 0x86, 0x45, 0xAE, 0x59, 0xA5, 0x8D, 0x68, 0x80, 0x00, 0x05, 0x53, 0x27, 0x89, 0xC9, 0x20, 0x1E, 0x9F, 0xDE, 0xAE, 0x7C, 0x98, 0xAC, 0xAC, 0x78, 0x80, 0x7B, 0x3A, 0x1E, 0xA6, 0x4E, 0x03, 0xD3, 0x00, 0xDD, 0x1E, 0xEB, 0x01, 0x9A, 0xDE, 0xAE, 0xF4, 0x84, 0x44, 0xBC, 0x4B, 0xD5, 0xDE, 0x23, 0xF0, 0x3C, 0xA4, 0x57, 0x70, 0x25, 0x2C, 0x93, 0x3D, 0xA5, 0x17, 0xCF, 0x1B, 0x0A, 0xDF, 0x4F, 0x21, 0x71, 0x05, 0xF4, 0xE4, 0x6F, 0xE2, 0xC3, 0x50, 0x74, 0xA9, 0x09, 0x61, 0x1D, 0x81, 0xC9, 0xA3, 0x1F, 0x82, 0x2D, 0x8F, 0xDB, 0x5A, 0x62, 0xB0
|
||||
};
|
||||
|
||||
/* CTR_SDK 3 (3.2.5) */
|
||||
// APP
|
||||
static const unsigned char app_3_dev_hdrpub[0x100] =
|
||||
static const unsigned char app_fw20_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xC4, 0xF6, 0x84, 0x47, 0xF0, 0xF0, 0x5D, 0x2B, 0x06, 0xE0, 0xC6, 0x73, 0xE2, 0x43, 0x9F, 0x57, 0xAA, 0x48, 0xCE, 0xB8, 0xEA, 0xBD, 0xA1, 0x84, 0x06, 0xFC, 0xF5, 0x7D, 0xA0, 0x37, 0x79, 0xA6, 0x27, 0xF0, 0xFE, 0xE8, 0x7E, 0xF1, 0x9E, 0xC0, 0x7A, 0x0A, 0x40, 0x86, 0x20, 0x52, 0x61, 0x4D, 0xAB, 0x50, 0xC5, 0x93, 0xEB, 0x2C, 0x36, 0x10, 0xAA, 0xEF, 0x32, 0x28, 0x5C, 0x82, 0xF7, 0x58, 0xE5, 0x2E, 0xC0, 0xEA, 0x0F, 0xB9, 0x90, 0x64, 0x0D, 0x44, 0x39, 0x36, 0x4E, 0x0D, 0x8A, 0xBF, 0xEB, 0x95, 0x98, 0x29, 0x27, 0xCF, 0xDC, 0x66, 0xE4, 0xCD, 0xE9, 0xC7, 0x9F, 0xF8, 0x1F, 0x64, 0xB0, 0x47, 0x91, 0x82, 0x54, 0x8D, 0x87, 0xD3, 0xE0, 0xA9, 0xFF, 0xE5, 0x78, 0xE9, 0x35, 0x55, 0x57, 0x28, 0x8C, 0x8B, 0x54, 0x63, 0xB7, 0x36, 0xFB, 0x85, 0xDD, 0xB2, 0x54, 0x14, 0xAD, 0x39, 0xDE, 0x88, 0x91, 0xCB, 0xD6, 0xF0, 0x0C, 0xB7, 0xEC, 0x91, 0x48, 0x1C, 0xB9, 0xB3, 0xEB, 0x90, 0xBC, 0xAC, 0x00, 0x40, 0x35, 0x45, 0xD4, 0x71, 0x6A, 0x14, 0x65, 0x3E, 0x3C, 0xEA, 0xAE, 0xE0, 0xFE, 0xE6, 0x71, 0xA2, 0x51, 0x2A, 0x15, 0x70, 0xC1, 0x3D, 0x70, 0x29, 0xAE, 0xFC, 0x21, 0x66, 0x06, 0x8B, 0x66, 0xE4, 0xE9, 0x4D, 0x6A, 0x9D, 0x66, 0xDA, 0x64, 0x2B, 0xE8, 0xF3, 0x8E, 0x31, 0xF0, 0xC2, 0x12, 0x02, 0x39, 0x73, 0x41, 0x4E, 0xF5, 0x91, 0x43, 0x9D, 0x1E, 0x51, 0xE6, 0x2D, 0x4C, 0x8F, 0xA0, 0x21, 0x2A, 0x38, 0x69, 0x3C, 0xB6, 0x9F, 0xF9, 0xBB, 0x8B, 0xFF, 0x72, 0x3A, 0x74, 0x7C, 0xCC, 0x49, 0x5B, 0x40, 0x25, 0x41, 0xE2, 0x2F, 0xEB, 0x3B, 0xD4, 0xE5, 0x14, 0x0F, 0x83, 0x43, 0x63, 0x30, 0x75, 0x5E, 0x4B, 0x29, 0x94, 0x65, 0xF8, 0xDC, 0x6D, 0x5B, 0xC1, 0xB1
|
||||
};
|
||||
|
||||
static const unsigned char app_3_dev_acexsig[0x100] =
|
||||
static const unsigned char app_fw20_dev_acexsig[0x100] =
|
||||
{
|
||||
0x48, 0xAB, 0x7A, 0x3E, 0x55, 0x05, 0x84, 0x09, 0x4E, 0x70, 0xD2, 0x42, 0x3C, 0xBA, 0x32, 0x8B, 0xB9, 0x9F, 0x9D, 0x16, 0x95, 0x19, 0xE7, 0xC7, 0x8E, 0x5B, 0x1D, 0xA3, 0x67, 0xC8, 0x9D, 0xD3, 0xCD, 0x82, 0x5A, 0x3D, 0xC0, 0xD6, 0xB9, 0x13, 0xBE, 0x3F, 0xE7, 0x5F, 0x36, 0x73, 0x71, 0x77, 0xCD, 0x7B, 0x40, 0x33, 0x25, 0xA6, 0xA5, 0xA2, 0x51, 0xC8, 0x40, 0x88, 0xC3, 0x7C, 0x8D, 0x29, 0xDE, 0xEB, 0xCB, 0x9B, 0x5D, 0xE3, 0xDA, 0x3D, 0x74, 0x4A, 0xDE, 0xE7, 0xE7, 0xC0, 0x85, 0x2E, 0x5E, 0x84, 0xE3, 0x1B, 0x24, 0x0B, 0x82, 0x79, 0xEF, 0x1B, 0xAD, 0xD2, 0x6C, 0xE3, 0xDD, 0xC0, 0x03, 0xFD, 0x5E, 0xD9, 0x11, 0xE5, 0x65, 0x05, 0xED, 0x65, 0x79, 0x03, 0x59, 0xE7, 0x09, 0x63, 0x39, 0x9D, 0x51, 0x00, 0x2F, 0x5E, 0x65, 0xB1, 0xA7, 0x73, 0x1B, 0x1E, 0xC9, 0x27, 0x75, 0xB3, 0xF6, 0x7B, 0x36, 0x60, 0x57, 0x3F, 0xF7, 0x45, 0x83, 0x5D, 0x01, 0xD4, 0x02, 0xA7, 0xE5, 0xCE, 0x06, 0x63, 0xF9, 0x27, 0x9A, 0xF7, 0xA6, 0xD8, 0x5A, 0x72, 0xD1, 0x7F, 0x03, 0xE0, 0xA7, 0xD3, 0x47, 0xE9, 0xC2, 0xB3, 0x1C, 0xAE, 0x99, 0xD7, 0x08, 0x13, 0xE7, 0x5F, 0x8B, 0x8D, 0xD6, 0x71, 0xF4, 0x66, 0x0E, 0x71, 0x5E, 0xE0, 0x08, 0xA1, 0x19, 0x9A, 0x39, 0xBD, 0x29, 0x78, 0x75, 0x9F, 0xFE, 0x62, 0xD4, 0x52, 0xA0, 0x01, 0x7B, 0x16, 0x9C, 0x33, 0xFD, 0xBC, 0x05, 0xFB, 0xC4, 0xC9, 0x67, 0xF6, 0xE1, 0xE0, 0x15, 0xFF, 0x13, 0x78, 0x09, 0xDF, 0x1B, 0x6C, 0x29, 0x9F, 0xA7, 0x8D, 0x3D, 0x36, 0xEB, 0x28, 0x2E, 0x85, 0xF1, 0x99, 0x5B, 0x94, 0xB4, 0xB4, 0x47, 0x78, 0xE9, 0x74, 0xDA, 0x71, 0xA0, 0x72, 0xDC, 0x32, 0x55, 0x14, 0xE8, 0x63, 0xDA, 0xB4, 0x77, 0x58, 0x14, 0xC7
|
||||
};
|
||||
|
||||
/* CTR_SDK 4 (4.2.8) */
|
||||
// APP
|
||||
static const unsigned char app_4_dev_hdrpub[0x100] =
|
||||
static const unsigned char app_fw21_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xCF, 0xEC, 0xB2, 0x48, 0x03, 0x6D, 0xB8, 0x09, 0xE3, 0x5C, 0x6C, 0x62, 0x2C, 0xA9, 0x49, 0xE1, 0xF4, 0xF4, 0x0C, 0x6C, 0xC3, 0xE5, 0x2F, 0x9D, 0x50, 0xA0, 0x2B, 0x5A, 0x00, 0xC6, 0x72, 0x00, 0x0B, 0xA3, 0x04, 0x5D, 0x94, 0x46, 0xE7, 0x00, 0x1B, 0x48, 0x85, 0xB5, 0x61, 0x2C, 0xC9, 0x74, 0xCA, 0x2B, 0x43, 0x13, 0xC1, 0x78, 0x97, 0x5C, 0x33, 0x2F, 0x07, 0xC7, 0x85, 0xF0, 0xDA, 0xDB, 0x60, 0x96, 0x50, 0x0F, 0x7C, 0x4B, 0x7A, 0xD7, 0x17, 0x9D, 0xE4, 0xE5, 0xC3, 0xAB, 0x6F, 0x5D, 0xA5, 0x78, 0x32, 0xAD, 0x04, 0xDD, 0x96, 0x6E, 0xDC, 0x75, 0xFF, 0xC2, 0x2F, 0xFA, 0xA2, 0xEE, 0x46, 0x89, 0xCD, 0xAE, 0x69, 0x92, 0xA4, 0x48, 0xBC, 0x46, 0x47, 0xC4, 0x8C, 0x89, 0x63, 0xE1, 0x0A, 0x4D, 0x1C, 0xDC, 0x46, 0x2F, 0x5B, 0x70, 0x8A, 0x7C, 0xE9, 0x22, 0x9C, 0x09, 0x0B, 0xA8, 0x97, 0x40, 0xCA, 0x2A, 0x7D, 0x84, 0xA1, 0x04, 0x4A, 0x2E, 0xDB, 0xD7, 0xD0, 0x64, 0x43, 0x9C, 0xD0, 0x78, 0x11, 0x41, 0x88, 0x33, 0xDD, 0x31, 0x62, 0x90, 0x2D, 0x17, 0xF2, 0xC6, 0xA9, 0x2B, 0x9C, 0x70, 0xAB, 0xDC, 0xD3, 0xAB, 0x5D, 0xDA, 0xEE, 0x3D, 0x6C, 0x0E, 0x81, 0xFF, 0xF6, 0x67, 0x5A, 0x44, 0xF9, 0xAC, 0x07, 0x3D, 0x23, 0x94, 0x75, 0x65, 0x93, 0x20, 0x0C, 0xC5, 0x76, 0x1D, 0x0F, 0x65, 0x06, 0x3D, 0x21, 0xA2, 0xF0, 0x96, 0x80, 0xB7, 0x0A, 0x49, 0x53, 0x38, 0xA3, 0x5D, 0xC0, 0x74, 0x3C, 0xA4, 0xD9, 0x40, 0x36, 0x85, 0x1F, 0x8C, 0xD1, 0x2D, 0x15, 0xF9, 0xEF, 0x24, 0xA9, 0x7E, 0x9D, 0xB2, 0x1E, 0xF8, 0xA0, 0x72, 0x81, 0x17, 0x77, 0x73, 0xB1, 0x56, 0x7F, 0xAD, 0x05, 0xA2, 0xD2, 0x30, 0x5A, 0xF5, 0xD3, 0xAF, 0x0F, 0x10, 0x4A, 0x52, 0xD8, 0x09, 0x47, 0x97
|
||||
};
|
||||
|
||||
static const unsigned char app_4_dev_hdrpvt[0x100] =
|
||||
static const unsigned char app_fw21_dev_hdrpvt[0x100] =
|
||||
{
|
||||
0x8C, 0xBD, 0xB2, 0x3B, 0xCE, 0x9E, 0x51, 0x09, 0xD8, 0x6D, 0x72, 0x2B, 0xCE, 0x01, 0x55, 0x32, 0x6E, 0xC5, 0x57, 0x37, 0xB4, 0x2E, 0x09, 0x59, 0xD9, 0xFE, 0x60, 0xF9, 0xCE, 0x36, 0x85, 0x6A, 0x04, 0x76, 0x76, 0xF9, 0x04, 0xEA, 0x2D, 0x68, 0xC4, 0x0F, 0x05, 0xFA, 0xAD, 0x69, 0x4C, 0x80, 0x12, 0x6C, 0xD0, 0x3D, 0xAA, 0x22, 0xFF, 0x89, 0x78, 0x57, 0xE8, 0x53, 0x25, 0x15, 0xD0, 0x7E, 0xD8, 0x55, 0x46, 0xA2, 0x04, 0xC7, 0x6E, 0xC1, 0xF3, 0x89, 0x7C, 0x2C, 0x0E, 0x93, 0x97, 0x91, 0x72, 0xF4, 0xF6, 0x90, 0x69, 0x0F, 0xB8, 0xC9, 0x17, 0xCF, 0x83, 0xAC, 0xA5, 0x1F, 0x69, 0x74, 0x12, 0x29, 0x2B, 0x21, 0x58, 0xF2, 0xDA, 0xE3, 0x25, 0x16, 0x09, 0x74, 0x40, 0x90, 0xAB, 0x1B, 0xE4, 0x06, 0x28, 0x77, 0xED, 0xC6, 0x16, 0x86, 0x0A, 0x27, 0xDD, 0x03, 0x01, 0x4D, 0x9A, 0x26, 0x6E, 0xC8, 0x9F, 0xD3, 0x9A, 0x4B, 0x59, 0xD1, 0x10, 0x9B, 0xEB, 0xA9, 0x58, 0x72, 0xBD, 0xA1, 0xFE, 0x9D, 0x86, 0xED, 0x29, 0xE9, 0x29, 0x49, 0x62, 0x4B, 0xD8, 0x7D, 0x2A, 0x7A, 0x66, 0x1B, 0xE5, 0x04, 0x81, 0x56, 0x10, 0x50, 0xAF, 0xB8, 0x48, 0x27, 0xC1, 0xC9, 0x46, 0xBD, 0x3F, 0x16, 0x06, 0xA5, 0x3D, 0x04, 0x9F, 0x0D, 0x54, 0x71, 0x1C, 0xF4, 0x82, 0xC0, 0x66, 0x74, 0xEA, 0x9C, 0x83, 0x3C, 0x27, 0x01, 0xDF, 0x6F, 0x56, 0xA8, 0x1B, 0xE3, 0x68, 0x55, 0x9F, 0xAB, 0x90, 0x67, 0x20, 0x25, 0xFA, 0x3D, 0x51, 0x2A, 0x23, 0x16, 0xCB, 0x06, 0x5A, 0xAD, 0xAC, 0xC8, 0x47, 0xF9, 0x39, 0x2E, 0x6A, 0xF8, 0xFA, 0x0A, 0xE8, 0x8A, 0x64, 0x84, 0x6B, 0xED, 0xDA, 0x8F, 0x2A, 0x08, 0x86, 0x8F, 0x56, 0x69, 0x64, 0xC3, 0x98, 0x55, 0x37, 0x9A, 0x48, 0x40, 0xDA, 0xD5, 0x03, 0x21
|
||||
};
|
||||
|
||||
static const unsigned char app_4_dev_acexsig[0x100] =
|
||||
static const unsigned char app_fw21_dev_acexsig[0x100] =
|
||||
{
|
||||
0xDF, 0x1C, 0x8B, 0x98, 0xE4, 0x6F, 0xA2, 0x35, 0x6C, 0xC3, 0x18, 0x17, 0x98, 0xF3, 0xCE, 0x54, 0x7E, 0x14, 0x2E, 0x7F, 0x1E, 0xD8, 0x6D, 0xCF, 0xBC, 0x29, 0x4E, 0xFE, 0x32, 0x2E, 0xC1, 0x11, 0xAD, 0x46, 0x9A, 0xC6, 0x70, 0xEA, 0xEE, 0x28, 0x55, 0x22, 0xE1, 0x36, 0x05, 0x1C, 0x04, 0x8A, 0xCE, 0x0F, 0x0C, 0x83, 0x8F, 0xC8, 0xD6, 0xDE, 0x11, 0x8E, 0xEA, 0xCF, 0xAD, 0x9B, 0xCF, 0x81, 0x0D, 0xEB, 0x71, 0x13, 0xB3, 0xD3, 0xAE, 0x83, 0x02, 0x4C, 0x0E, 0x10, 0x50, 0x59, 0x3C, 0xEE, 0x60, 0x06, 0xFB, 0x8C, 0x7F, 0xC2, 0x20, 0x24, 0x01, 0x62, 0x55, 0x87, 0x60, 0x0F, 0xAD, 0xFA, 0x73, 0x2E, 0xF6, 0x65, 0x62, 0xD2, 0xE5, 0x10, 0x45, 0x69, 0x70, 0x39, 0x03, 0xD1, 0x39, 0xEC, 0x50, 0xC1, 0xD4, 0x25, 0x39, 0xB2, 0x90, 0x11, 0x4E, 0x95, 0xCB, 0x19, 0xEB, 0xCA, 0x0F, 0xB5, 0xFA, 0xC7, 0xB0, 0xE2, 0xD7, 0xE0, 0x71, 0xC3, 0xE5, 0x55, 0x33, 0x9E, 0x5C, 0xDC, 0x4D, 0x3B, 0x51, 0x11, 0x0D, 0x31, 0x78, 0x96, 0xCA, 0xD7, 0x18, 0x58, 0xEE, 0x00, 0xE9, 0x28, 0xF2, 0x68, 0x76, 0xD4, 0x57, 0xFE, 0x65, 0xB1, 0x4B, 0x49, 0x3F, 0xF6, 0xA6, 0x58, 0x4A, 0xC7, 0xFC, 0xC4, 0xBB, 0x61, 0xBC, 0x58, 0x8D, 0x55, 0x65, 0xE6, 0x0A, 0x79, 0x39, 0x41, 0xB8, 0x80, 0x61, 0xF7, 0x05, 0xC3, 0xFE, 0xD6, 0x8B, 0x09, 0x82, 0xC2, 0x5F, 0xA6, 0x56, 0xF9, 0xEE, 0x1D, 0x0E, 0x06, 0x3E, 0x9F, 0x3F, 0xF1, 0x93, 0x9A, 0x4F, 0xA2, 0xD5, 0x91, 0x87, 0x8A, 0xFE, 0xCF, 0xC3, 0xFC, 0x8A, 0xB1, 0xC4, 0x78, 0xE9, 0xD1, 0x1A, 0xF7, 0xB1, 0xD3, 0x20, 0xCB, 0x83, 0xBE, 0x03, 0xD5, 0xCA, 0xA5, 0x5E, 0x17, 0xA6, 0x91, 0x10, 0xD4, 0xBE, 0x23, 0xD6, 0x4B, 0x4F, 0x03, 0xA9, 0xAE
|
||||
};
|
||||
|
||||
// DEMO
|
||||
static const unsigned char demo_4_dev_hdrpub[0x100] =
|
||||
static const unsigned char demo_fw21_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xB5, 0x11, 0x8D, 0x9E, 0x2D, 0xDB, 0x70, 0x6D, 0x6E, 0xEE, 0xAA, 0x21, 0xE0, 0x4E, 0x80, 0x0A, 0x96, 0x4A, 0x10, 0xD0, 0x9C, 0xD7, 0xD9, 0xD4, 0x94, 0x87, 0x72, 0xA2, 0xAF, 0x02, 0xA0, 0x05, 0x2E, 0xBF, 0x17, 0xEB, 0xFE, 0x5B, 0x9F, 0xB7, 0x0B, 0x1E, 0x3E, 0xF9, 0xAC, 0xBC, 0x7B, 0xB1, 0x56, 0x10, 0x24, 0x5F, 0x57, 0x2C, 0x08, 0xD0, 0x14, 0x79, 0x83, 0x84, 0x6A, 0x45, 0x25, 0xEB, 0xD9, 0xBE, 0x02, 0x21, 0xF7, 0x35, 0xC2, 0x74, 0x57, 0xC5, 0xAC, 0x34, 0x05, 0xC6, 0x9E, 0x82, 0xB8, 0xED, 0x78, 0xC4, 0x3B, 0xFD, 0x23, 0x59, 0x54, 0xD2, 0x0A, 0x0B, 0x5B, 0x25, 0xC0, 0x71, 0xC3, 0x84, 0x3A, 0xA7, 0xF9, 0x99, 0x86, 0xD8, 0xFE, 0x60, 0x10, 0x85, 0x77, 0x57, 0x76, 0x0C, 0x25, 0xE1, 0x18, 0x18, 0x3B, 0x83, 0xFD, 0x36, 0x7C, 0x84, 0x58, 0xC2, 0xC4, 0x68, 0x4F, 0xD1, 0xD7, 0x0A, 0x88, 0xFD, 0xCA, 0x97, 0xA1, 0xE5, 0xCE, 0x72, 0x63, 0xCF, 0x74, 0xD0, 0x20, 0xD9, 0xDE, 0x3F, 0xBB, 0x11, 0xF9, 0x21, 0xAB, 0x3F, 0x54, 0x41, 0xA7, 0xAA, 0xCA, 0xFC, 0xE1, 0x1A, 0x8C, 0x12, 0xC9, 0x39, 0x13, 0x5A, 0x81, 0x29, 0x49, 0xE8, 0xFB, 0x48, 0xC9, 0x4D, 0x50, 0x87, 0xAE, 0x51, 0xFB, 0x94, 0xFC, 0xF0, 0x9C, 0x70, 0x1C, 0xE8, 0x6E, 0x44, 0x53, 0x1E, 0x2F, 0x27, 0x5C, 0xB8, 0xEC, 0xBE, 0xFC, 0xD9, 0x98, 0x6A, 0x08, 0xD0, 0x5C, 0x4D, 0x78, 0x2D, 0x4D, 0x07, 0xAD, 0x5E, 0xB8, 0x51, 0x40, 0xE2, 0x2A, 0x7F, 0xB1, 0x54, 0x47, 0x5C, 0x99, 0x12, 0xC2, 0x6D, 0x5E, 0xED, 0x25, 0x30, 0x6A, 0x99, 0xC5, 0x0D, 0x65, 0x83, 0x68, 0x3A, 0xFD, 0x82, 0x59, 0x0D, 0xCE, 0x0B, 0x49, 0xBE, 0x17, 0x46, 0x51, 0xA9, 0xB6, 0x54, 0xE1, 0x18, 0xBD, 0x49, 0xE6, 0x7F
|
||||
};
|
||||
|
||||
static const unsigned char demo_4_dev_hdrpvt[0x100] =
|
||||
static const unsigned char demo_fw21_dev_hdrpvt[0x100] =
|
||||
{
|
||||
0x1D, 0x7B, 0x79, 0x32, 0xAB, 0x46, 0xD2, 0xBC, 0x8E, 0xD6, 0x7F, 0x8F, 0x3A, 0x85, 0xAD, 0xA5, 0x8B, 0xA9, 0x0D, 0xA9, 0xDA, 0x0F, 0xEF, 0x61, 0x04, 0xBA, 0x35, 0x39, 0x36, 0x03, 0xD8, 0x68, 0x5F, 0x9F, 0x2F, 0xD6, 0xF6, 0x38, 0x96, 0xFD, 0xE7, 0xEA, 0x89, 0xD8, 0x7F, 0x7E, 0xC5, 0x29, 0x2F, 0xD9, 0x3B, 0x02, 0xE7, 0x1F, 0xBD, 0x63, 0x9C, 0x21, 0xD8, 0xFF, 0x43, 0x8A, 0x74, 0xCD, 0x3D, 0x4C, 0x09, 0xEE, 0xDB, 0xE0, 0xBE, 0x03, 0xD1, 0x92, 0xD7, 0x22, 0x35, 0x5A, 0x8C, 0xCE, 0xBE, 0x2B, 0xB4, 0x81, 0x47, 0x3F, 0x45, 0x75, 0x33, 0x31, 0x6B, 0xFF, 0x43, 0x5D, 0x17, 0x43, 0xAE, 0xD1, 0x25, 0xF7, 0xD9, 0xD5, 0x5C, 0xB6, 0x92, 0x5C, 0xB3, 0xF3, 0xF7, 0x65, 0x9F, 0x4C, 0x05, 0x12, 0xEC, 0xA8, 0x6D, 0x70, 0x65, 0x57, 0x6C, 0xD8, 0xE3, 0xD6, 0xFA, 0xC1, 0xFD, 0x54, 0xE8, 0x34, 0x67, 0x4D, 0x0A, 0x14, 0x2F, 0xA3, 0xD4, 0x81, 0x8C, 0xC3, 0xD0, 0x8B, 0x09, 0x08, 0x90, 0x70, 0x68, 0xA0, 0x0E, 0xD1, 0x0B, 0xAA, 0x71, 0xEC, 0x9A, 0x1A, 0x83, 0xFF, 0xA1, 0x70, 0xEB, 0xAC, 0xF2, 0xE9, 0x80, 0xA1, 0xB8, 0x20, 0x31, 0x83, 0xF5, 0x37, 0x01, 0x72, 0x06, 0x50, 0x05, 0x3F, 0x14, 0xF9, 0x29, 0x48, 0x84, 0xA0, 0x0E, 0xF7, 0xB8, 0x1D, 0xA3, 0x36, 0x5A, 0x78, 0x6D, 0x83, 0x90, 0x27, 0xE3, 0x50, 0x49, 0x2F, 0x65, 0xE5, 0x61, 0xED, 0x65, 0xBE, 0xEA, 0x34, 0xA6, 0x6A, 0xEF, 0x49, 0xB4, 0xE0, 0xBC, 0xC2, 0xA5, 0xB8, 0xEB, 0xA9, 0x2F, 0xBA, 0x26, 0x76, 0xB2, 0x5A, 0x3A, 0x3B, 0xFD, 0xAD, 0xFB, 0xE4, 0x79, 0xE2, 0x85, 0x54, 0x5B, 0xAB, 0x1F, 0x0A, 0xE5, 0x8B, 0x77, 0x3A, 0x10, 0x98, 0x26, 0x74, 0xC8, 0xB0, 0x82, 0xB1, 0xF9, 0x8F, 0x68, 0x59
|
||||
};
|
||||
|
||||
static const unsigned char demo_4_dev_acexsig[0x100] =
|
||||
static const unsigned char demo_fw21_dev_acexsig[0x100] =
|
||||
{
|
||||
0xD3, 0x7D, 0x42, 0xBA, 0x6A, 0x1E, 0xD8, 0x07, 0x3C, 0x4A, 0xC4, 0xCD, 0x8C, 0x68, 0x3D, 0xCD, 0xCD, 0xBD, 0x9D, 0xCE, 0xB5, 0x2A, 0xF9, 0x63, 0x3D, 0xA9, 0x54, 0x0A, 0x2E, 0x4C, 0xE1, 0x60, 0x4B, 0xD0, 0xC9, 0xEB, 0xEF, 0x31, 0x65, 0x70, 0xB9, 0x0E, 0x06, 0x3B, 0x3D, 0x42, 0x4C, 0x6E, 0x8D, 0x2C, 0xD4, 0x71, 0x29, 0x76, 0xB7, 0xDD, 0x8C, 0xDA, 0xE7, 0xE3, 0x96, 0xA7, 0xAA, 0xF8, 0xCA, 0x05, 0xE8, 0xA7, 0x0A, 0xDD, 0x01, 0x49, 0xBD, 0xF1, 0xA5, 0xE8, 0x16, 0x22, 0xEE, 0x47, 0x1F, 0xEF, 0x28, 0x48, 0x87, 0xA9, 0x2D, 0xFC, 0x4E, 0xD5, 0xA5, 0x98, 0xB1, 0xFE, 0x1B, 0xEB, 0xA9, 0x06, 0x3C, 0x76, 0xD9, 0xAA, 0x0E, 0x9C, 0x60, 0xFC, 0xE9, 0x77, 0x9D, 0x7F, 0x67, 0xAC, 0xF5, 0xC7, 0x49, 0x12, 0xFD, 0x76, 0xAC, 0xD2, 0x54, 0xDB, 0x73, 0x41, 0x10, 0x1F, 0x04, 0x3F, 0xD0, 0x6F, 0xE0, 0x80, 0x24, 0xCC, 0xEE, 0xBF, 0x25, 0x9D, 0x0D, 0x5A, 0x2A, 0x1C, 0xC5, 0xD4, 0xE3, 0x5D, 0x3A, 0xC1, 0x86, 0xD3, 0xD4, 0x52, 0x1C, 0x4C, 0xBF, 0x31, 0xEB, 0x54, 0xCA, 0x4C, 0x06, 0x50, 0x52, 0x87, 0xD4, 0x9D, 0x4A, 0x4B, 0x22, 0xE1, 0x4A, 0xE9, 0x4D, 0x05, 0xA8, 0x57, 0xEC, 0xF8, 0x90, 0xF8, 0x58, 0xC3, 0x8B, 0x3A, 0x0F, 0x88, 0x36, 0xF4, 0xE5, 0x44, 0x10, 0x80, 0x68, 0x86, 0x1D, 0xAE, 0x90, 0x20, 0x03, 0x22, 0x2D, 0x44, 0xBF, 0xAB, 0x2B, 0xA1, 0x14, 0xAD, 0x6B, 0x40, 0x57, 0xDB, 0xBB, 0xDA, 0x09, 0x4C, 0x51, 0x26, 0x9B, 0xE3, 0xD9, 0xF9, 0xE1, 0xBC, 0xF1, 0xF1, 0xCD, 0x30, 0xB4, 0xF5, 0x39, 0xD0, 0xBC, 0xF7, 0x98, 0x05, 0xAF, 0xA8, 0x33, 0x4B, 0xC1, 0x16, 0x0F, 0xF2, 0xC2, 0x79, 0x96, 0xEC, 0xBE, 0xA9, 0xF5, 0x55, 0x7C, 0x82, 0x95, 0x73
|
||||
};
|
||||
|
||||
// DLP
|
||||
static const unsigned char dlp_4_dev_hdrpub[0x100] =
|
||||
static const unsigned char dlp_fw21_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xB3, 0x16, 0x68, 0xF1, 0xED, 0x59, 0xC8, 0x7F, 0xC6, 0x50, 0x21, 0xFE, 0x36, 0x7C, 0x55, 0xE7, 0x07, 0xF9, 0x1D, 0x1B, 0xF5, 0xB1, 0x2A, 0x6B, 0x3A, 0xDE, 0x2D, 0x4C, 0x51, 0xCD, 0x4C, 0x9F, 0xEE, 0x1D, 0xE4, 0xE8, 0xF0, 0xFD, 0x09, 0x8E, 0x0F, 0x92, 0x5F, 0xDB, 0x9C, 0x5C, 0x15, 0x55, 0x1A, 0x4D, 0x04, 0x8C, 0xB0, 0xA4, 0x88, 0x97, 0xC4, 0xD5, 0x92, 0x04, 0x42, 0x33, 0x84, 0x81, 0x06, 0xD6, 0xF2, 0x17, 0xDE, 0x83, 0x17, 0x50, 0xD0, 0x47, 0x61, 0x14, 0x0D, 0xB7, 0xC7, 0xA0, 0xC1, 0x8B, 0x82, 0x47, 0x13, 0xEE, 0x76, 0xA2, 0xA3, 0x8D, 0xCE, 0x55, 0xC1, 0xF3, 0x7A, 0xEA, 0x91, 0xE1, 0xB9, 0x2F, 0x8F, 0x9B, 0xC3, 0x7B, 0x51, 0x2F, 0xE7, 0xAD, 0x93, 0x9C, 0xFD, 0xDF, 0x19, 0xC8, 0x6C, 0x24, 0xC2, 0xE2, 0x91, 0x97, 0x1F, 0xEB, 0x4B, 0xD4, 0x46, 0x6C, 0x06, 0x93, 0xAF, 0xF5, 0x5E, 0x8F, 0x77, 0x25, 0xC4, 0x28, 0xC0, 0x82, 0x4A, 0x78, 0xE9, 0x14, 0x08, 0xC3, 0xC3, 0x58, 0x24, 0x44, 0x2D, 0x2B, 0xA7, 0xEE, 0x28, 0xEF, 0x1B, 0x6D, 0xAA, 0x9C, 0xED, 0x7F, 0x35, 0xCE, 0x86, 0x5C, 0x6B, 0x8A, 0x23, 0xD3, 0x9D, 0x05, 0x8F, 0xD2, 0x41, 0x93, 0x1D, 0x1D, 0x7E, 0xB0, 0x46, 0x23, 0x63, 0x07, 0xEA, 0x5F, 0x26, 0xE3, 0x81, 0x27, 0xB3, 0x95, 0xB1, 0x93, 0x59, 0xD4, 0x1A, 0xB8, 0x73, 0xD0, 0x09, 0x95, 0x2B, 0xE8, 0x8B, 0xE2, 0x73, 0x5F, 0x34, 0xB9, 0x98, 0x82, 0xF0, 0x11, 0xC6, 0x8F, 0x12, 0x4D, 0x09, 0x57, 0x10, 0x97, 0x22, 0x0E, 0xC8, 0x7D, 0x40, 0xC1, 0x9D, 0x12, 0x1F, 0x71, 0xFE, 0x1E, 0x1A, 0x8C, 0x3F, 0x56, 0xAC, 0x43, 0xC3, 0x66, 0x0C, 0x81, 0xAE, 0xC1, 0x8F, 0x68, 0xFF, 0x87, 0x07, 0x3C, 0xCD, 0x0A, 0x23, 0xDE, 0xBA, 0x9B
|
||||
};
|
||||
|
||||
static const unsigned char dlp_4_dev_hdrpvt[0x100] =
|
||||
static const unsigned char dlp_fw21_dev_hdrpvt[0x100] =
|
||||
{
|
||||
0x77, 0xC2, 0x7A, 0xB7, 0x9E, 0x13, 0xB6, 0x62, 0xCC, 0x09, 0x76, 0x51, 0xFB, 0xB9, 0xB5, 0xF0, 0x63, 0x82, 0x91, 0x96, 0xCA, 0xFC, 0x88, 0xF3, 0x60, 0x50, 0x87, 0x56, 0x4C, 0x35, 0xD0, 0x11, 0xFB, 0x38, 0x7E, 0x85, 0xCF, 0xF2, 0x46, 0xDB, 0x7B, 0x4A, 0x55, 0x54, 0x15, 0x01, 0xF7, 0x3A, 0x0B, 0xF6, 0x89, 0x1E, 0x54, 0x5A, 0x13, 0x05, 0xFB, 0x19, 0x1F, 0x26, 0x3D, 0xE7, 0x19, 0xAA, 0xF7, 0x19, 0xF2, 0x97, 0x47, 0xB3, 0xBE, 0x79, 0xCA, 0x6E, 0x91, 0x5A, 0xC9, 0xB9, 0xA6, 0x83, 0xB8, 0x2A, 0x45, 0x1A, 0xA7, 0x17, 0x86, 0xBA, 0x48, 0x49, 0x62, 0x3C, 0x33, 0x11, 0x51, 0x97, 0x5F, 0xAA, 0xE5, 0x1E, 0x0B, 0x19, 0x0C, 0xE6, 0x80, 0x6A, 0x5A, 0xB1, 0xD6, 0xCE, 0xDB, 0x6E, 0xC0, 0x5D, 0x29, 0x04, 0x84, 0x56, 0xE3, 0x29, 0x7E, 0xAC, 0xE8, 0xEE, 0xB1, 0x91, 0x37, 0xEB, 0x98, 0x9C, 0xBD, 0x02, 0x6A, 0x78, 0x61, 0xB0, 0x79, 0x1A, 0x9F, 0x30, 0x86, 0xF6, 0x71, 0x5A, 0x5A, 0x12, 0xA1, 0x9E, 0xA1, 0x68, 0x03, 0xE5, 0x95, 0xA8, 0x38, 0x58, 0x87, 0x08, 0x57, 0x35, 0x32, 0x47, 0x3B, 0xFC, 0x02, 0x6F, 0xCE, 0x55, 0x61, 0xA3, 0x2A, 0x6B, 0x2F, 0xF8, 0xEE, 0x8D, 0xFA, 0x43, 0x33, 0x02, 0x63, 0x47, 0x02, 0x78, 0x5A, 0x7F, 0x64, 0x07, 0x92, 0xB7, 0x7C, 0x09, 0x7C, 0xFE, 0x2D, 0x1C, 0xFC, 0x77, 0x9F, 0x19, 0x20, 0xDD, 0x6D, 0x4C, 0xFE, 0x49, 0x09, 0x47, 0xCA, 0x9B, 0x1C, 0x8C, 0x1F, 0x37, 0xAC, 0x14, 0x85, 0x56, 0xC0, 0xFD, 0xD6, 0x01, 0xB3, 0x40, 0xA3, 0x1A, 0x32, 0x78, 0xA0, 0xDD, 0x21, 0x75, 0xBF, 0x24, 0xD2, 0x93, 0x85, 0xED, 0x22, 0xAD, 0x99, 0x91, 0x87, 0x4A, 0xEC, 0xC0, 0x6C, 0x71, 0x00, 0x76, 0x08, 0x23, 0xA2, 0xF3, 0xCF, 0x61
|
||||
};
|
||||
|
||||
static const unsigned char dlp_4_dev_acexsig[0x100] =
|
||||
static const unsigned char dlp_fw21_dev_acexsig[0x100] =
|
||||
{
|
||||
0xAC, 0xE2, 0xA7, 0xC3, 0x00, 0xDE, 0xE8, 0xE9, 0xE0, 0x03, 0xB3, 0x54, 0x08, 0xA8, 0xF8, 0x3A, 0x2E, 0xD8, 0x10, 0x6B, 0xEC, 0xDC, 0x4E, 0xEE, 0x62, 0x10, 0x71, 0x49, 0xD4, 0x43, 0xB1, 0x0E, 0x6B, 0x8C, 0xD7, 0x54, 0xD5, 0x62, 0x28, 0x3F, 0xAA, 0xDE, 0xA9, 0x7D, 0xED, 0x37, 0x7C, 0xE7, 0x89, 0x0B, 0x02, 0xB2, 0x72, 0x4B, 0x17, 0xDB, 0xE2, 0xD3, 0x7C, 0x94, 0x12, 0x3F, 0x2E, 0xA1, 0x08, 0x99, 0xCC, 0x7F, 0x93, 0xE6, 0x38, 0xC9, 0x37, 0x84, 0xD7, 0x11, 0x9D, 0x02, 0x4D, 0x66, 0xB4, 0x70, 0x9F, 0xD8, 0xC6, 0xDD, 0xD5, 0x13, 0x52, 0xF0, 0xA6, 0x78, 0x8C, 0x8E, 0x15, 0xA0, 0xA1, 0xF3, 0xC4, 0xC3, 0x48, 0x45, 0xA5, 0xBE, 0xC9, 0x7A, 0x8B, 0xD3, 0x95, 0xA5, 0x4C, 0xF1, 0xB3, 0x0C, 0x6C, 0x76, 0xA7, 0x57, 0xA1, 0x77, 0xDF, 0x2F, 0xC8, 0x06, 0xA6, 0x0D, 0x1A, 0x09, 0xE4, 0x38, 0x64, 0x07, 0xBE, 0x6A, 0xD2, 0xA0, 0xC0, 0xEC, 0x09, 0x64, 0x9F, 0x0D, 0x93, 0x0C, 0x89, 0xA2, 0x71, 0xD6, 0xC6, 0xC2, 0x54, 0x79, 0x2A, 0xA4, 0x31, 0x28, 0x24, 0x1A, 0xF3, 0x56, 0x78, 0x63, 0x99, 0x97, 0xA5, 0xCE, 0x8F, 0x52, 0x7A, 0x79, 0x51, 0xEE, 0x4C, 0x8B, 0x00, 0x9D, 0x5C, 0x3E, 0xD5, 0xAA, 0x24, 0x9C, 0x94, 0xC6, 0xA3, 0x99, 0x1B, 0x2D, 0xD4, 0xFF, 0xB4, 0x25, 0x73, 0x13, 0x33, 0x9F, 0x03, 0x6F, 0x1E, 0x75, 0xC4, 0x70, 0xF4, 0x07, 0x4F, 0x18, 0xFE, 0xBD, 0x8F, 0x2C, 0x9B, 0x33, 0xD4, 0x30, 0xA7, 0x18, 0x4A, 0xF1, 0xA4, 0xDD, 0x78, 0x41, 0xA0, 0xB8, 0x02, 0x8D, 0x51, 0x96, 0xBE, 0xE7, 0x17, 0x94, 0x66, 0x65, 0x27, 0xF7, 0x69, 0x48, 0x7E, 0xA9, 0x08, 0x71, 0x20, 0x76, 0xB7, 0x8E, 0xD2, 0xBF, 0x5C, 0x7E, 0x5E, 0x06, 0x45, 0xAB, 0x7E, 0x2E
|
||||
};
|
||||
|
||||
/* CTR_SDK 5 (5.2.2) */
|
||||
// APP
|
||||
static const unsigned char app_5_dev_hdrpub[0x100] =
|
||||
static const unsigned char app_fw23_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xED, 0xD8, 0x3B, 0x9E, 0x78, 0x26, 0xD2, 0x96, 0x73, 0x6B, 0x7D, 0xB0, 0x5E, 0x01, 0x51, 0x63, 0x0F, 0x4B, 0xE6, 0x87, 0xCC, 0x4A, 0x03, 0x84, 0xB2, 0x65, 0x77, 0xB2, 0xA2, 0x6F, 0x20, 0x7A, 0x3B, 0xC3, 0xF3, 0xCC, 0x37, 0x7C, 0x1F, 0x77, 0xC8, 0x3D, 0xE2, 0xA9, 0x19, 0x4E, 0x7C, 0xBB, 0xAC, 0x2D, 0x7D, 0x7D, 0xE1, 0x35, 0xF8, 0x44, 0x2E, 0xC5, 0xB7, 0x50, 0x8D, 0xA1, 0x18, 0x34, 0x45, 0x20, 0xD4, 0x29, 0x0E, 0x79, 0xA7, 0xE1, 0x97, 0x1A, 0xE0, 0x39, 0x1D, 0x55, 0xB4, 0x2A, 0xDB, 0xD4, 0x77, 0x56, 0xC8, 0x73, 0xC8, 0x63, 0x04, 0xBA, 0x4C, 0x61, 0x48, 0x2E, 0x52, 0xD5, 0xC5, 0x21, 0x83, 0x4C, 0xBE, 0xE4, 0x38, 0x44, 0xD4, 0x7D, 0x8E, 0xDE, 0x17, 0x4A, 0x6F, 0xBD, 0xB0, 0x2B, 0xF7, 0xA8, 0xF3, 0xD3, 0xB7, 0xED, 0xF2, 0xE6, 0x4C, 0x5B, 0x83, 0x3E, 0x68, 0x67, 0xAF, 0x45, 0xE1, 0xF3, 0xAA, 0xFF, 0x5E, 0xB0, 0x0B, 0x39, 0x8E, 0xCF, 0xA7, 0x28, 0x88, 0xEA, 0x8B, 0x6F, 0x39, 0x39, 0x9F, 0xB1, 0x51, 0xCA, 0xC3, 0xFD, 0x46, 0x02, 0x92, 0x62, 0xB9, 0x98, 0x95, 0xAA, 0xCA, 0x76, 0x75, 0xE7, 0xE8, 0x88, 0x1C, 0x59, 0x9F, 0xD8, 0xCA, 0x99, 0x76, 0x3D, 0x3B, 0x56, 0xFA, 0xE4, 0x5A, 0x2F, 0x12, 0x07, 0x14, 0xA7, 0x81, 0x3D, 0x3B, 0xC0, 0xA7, 0x10, 0xE8, 0x9E, 0x69, 0x41, 0x55, 0x3F, 0xD8, 0x2B, 0x9B, 0x09, 0x1C, 0xE3, 0x94, 0x29, 0xD5, 0x35, 0xB2, 0xC7, 0x04, 0x16, 0x8A, 0xBA, 0x0C, 0x77, 0x78, 0x69, 0xAC, 0x3D, 0xE8, 0x92, 0xD2, 0x78, 0x88, 0x51, 0xAC, 0x80, 0x03, 0xC1, 0x23, 0xEC, 0xDF, 0x0C, 0x80, 0x09, 0x2D, 0xBC, 0x74, 0x22, 0x3F, 0xF2, 0xE3, 0xF0, 0x09, 0x67, 0xA7, 0xD6, 0x36, 0xA8, 0xE4, 0x3F, 0xF5, 0xEC, 0x3D, 0x8B
|
||||
};
|
||||
|
||||
static const unsigned char app_5_dev_acexsig[0x100] =
|
||||
static const unsigned char app_fw23_dev_acexsig[0x100] =
|
||||
{
|
||||
0x1C, 0x2A, 0x20, 0x20, 0xE1, 0x8C, 0x57, 0x67, 0xA7, 0x25, 0x6C, 0x77, 0x72, 0xAE, 0xC9, 0x6D, 0xCD, 0xB3, 0xA4, 0x0E, 0xCE, 0x8A, 0x62, 0x46, 0xB7, 0x99, 0xEB, 0x87, 0xDC, 0xCD, 0x3A, 0x1C, 0x10, 0x18, 0x2C, 0x59, 0x23, 0x81, 0x8A, 0xB9, 0x66, 0x9A, 0x20, 0x42, 0x5E, 0x38, 0xE2, 0x53, 0x92, 0xB1, 0xDD, 0x38, 0x6E, 0x01, 0xF4, 0x56, 0xEC, 0x43, 0x22, 0x9B, 0x15, 0x36, 0xE4, 0x2C, 0x3E, 0x6D, 0x1B, 0xAE, 0xAA, 0x71, 0xA8, 0x0C, 0x9A, 0xC4, 0x5E, 0x19, 0x93, 0xD6, 0x59, 0x23, 0xCD, 0xAD, 0xA5, 0xEF, 0xFD, 0x7D, 0x05, 0x73, 0xAF, 0x29, 0xC4, 0x85, 0x0B, 0x33, 0x9B, 0xF4, 0x5D, 0x31, 0x8E, 0xE8, 0x6C, 0xD1, 0x39, 0xBB, 0x03, 0x8B, 0xD9, 0x77, 0x30, 0xA4, 0x1A, 0x63, 0x50, 0xA0, 0xB9, 0x7B, 0x46, 0x10, 0x6A, 0x9A, 0x31, 0x71, 0x45, 0x72, 0x8C, 0x10, 0x6B, 0xE9, 0xBE, 0xC7, 0x0E, 0x2B, 0x4A, 0xF4, 0x29, 0x0B, 0xAA, 0x91, 0x76, 0xF8, 0xB3, 0x74, 0x57, 0xF8, 0x9B, 0xF4, 0xBE, 0x50, 0x22, 0x46, 0x93, 0xF1, 0x80, 0x64, 0xC1, 0x50, 0x77, 0x2A, 0x2A, 0x70, 0x74, 0x0C, 0xB2, 0xDC, 0x77, 0x34, 0x84, 0x83, 0x4E, 0x5B, 0x47, 0x30, 0x52, 0xF3, 0xEC, 0xC6, 0xB5, 0x93, 0xF3, 0x77, 0x0D, 0x10, 0x86, 0x65, 0x35, 0xC9, 0x84, 0x07, 0x43, 0x51, 0x00, 0x92, 0x2F, 0xA7, 0x75, 0x02, 0x23, 0xEE, 0x0F, 0x9E, 0x69, 0x5A, 0xF9, 0x9C, 0x0E, 0x17, 0x05, 0x94, 0x2A, 0xE9, 0x79, 0x82, 0x2C, 0x68, 0x3E, 0xCD, 0x26, 0xE6, 0x9E, 0x18, 0x99, 0x9A, 0xA0, 0xA7, 0x95, 0xA3, 0xBB, 0xB5, 0x9D, 0x86, 0x6E, 0x99, 0xFD, 0xC4, 0x1F, 0x49, 0x78, 0x2D, 0x4A, 0x8F, 0xAA, 0x77, 0x48, 0x6F, 0x69, 0x6A, 0x71, 0xA7, 0x19, 0x67, 0x56, 0x5B, 0x10, 0x27, 0x07, 0x7F
|
||||
};
|
||||
|
||||
/* CTR_SDK 6 (6.?.?) */
|
||||
// FIRM
|
||||
static const unsigned char firm_fw26_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xC9, 0x3C, 0x30, 0xE3, 0x64, 0xFD, 0x70, 0xBB, 0x98, 0xB0, 0x7B, 0x59, 0x4F, 0x6A, 0xC5, 0x1A, 0x6E, 0xF7, 0x89, 0x6E, 0xF9, 0x9C, 0x58, 0xC4, 0x34, 0x51, 0xAF, 0x0B, 0x41, 0x0D, 0x76, 0x7D, 0xE5, 0xF8, 0x9C, 0x2F, 0x08, 0x52, 0x75, 0xE2, 0x83, 0x2D, 0x6B, 0x6F, 0x1D, 0xC6, 0x13, 0x41, 0xD6, 0x91, 0x78, 0xF8, 0xD6, 0xC6, 0x57, 0x58, 0xC4, 0xE4, 0x3D, 0x3C, 0x19, 0xEB, 0x81, 0x77, 0x6C, 0xCF, 0x4A, 0xCD, 0x87, 0x9A, 0x2A, 0x82, 0xCB, 0x94, 0xE0, 0xAB, 0x93, 0x49, 0x00, 0x48, 0x1B, 0x6B, 0x0E, 0x62, 0x94, 0xE4, 0x70, 0xAF, 0x16, 0x0C, 0x93, 0x3A, 0x6B, 0x16, 0x20, 0x93, 0xDF, 0x84, 0x26, 0x88, 0x1B, 0x61, 0x47, 0x2C, 0xAE, 0x58, 0x07, 0x5A, 0xE1, 0xED, 0x61, 0x99, 0x15, 0x47, 0x0F, 0x83, 0x69, 0xAF, 0x89, 0xBB, 0x18, 0xC7, 0x56, 0x9C, 0xF5, 0x00, 0xD8, 0x76, 0xFC, 0x2F, 0x56, 0x6D, 0xD7, 0xD2, 0x0F, 0x41, 0xF4, 0xB6, 0xC3, 0x46, 0x37, 0x24, 0xAE, 0x9B, 0x1A, 0xD7, 0xA0, 0x29, 0x48, 0xD0, 0x6C, 0x7F, 0x54, 0x7D, 0x0E, 0xA7, 0xDA, 0x7E, 0x39, 0xF7, 0xCA, 0xB6, 0x51, 0x37, 0x9F, 0x34, 0x84, 0x2F, 0x41, 0xF3, 0x4A, 0x6F, 0xDC, 0x75, 0x83, 0x74, 0x8C, 0x16, 0x28, 0xB2, 0x3D, 0x7B, 0xF1, 0x91, 0xEC, 0x09, 0x25, 0x5F, 0x89, 0x4F, 0x81, 0xA4, 0xD5, 0x9F, 0xD1, 0xD4, 0xDC, 0x0D, 0x96, 0x85, 0x34, 0x01, 0x4C, 0xFE, 0x5F, 0x1A, 0xA3, 0x0B, 0x5B, 0xCF, 0xCF, 0xE1, 0x50, 0x9C, 0x89, 0x2E, 0x06, 0xB4, 0x1A, 0xED, 0x22, 0x76, 0xDA, 0x3D, 0xB5, 0x3E, 0xF5, 0x9B, 0xA7, 0xE2, 0x0E, 0x9D, 0xBD, 0xE0, 0x68, 0xB5, 0xB5, 0x8A, 0xAA, 0x98, 0xF9, 0x07, 0xF1, 0xB4, 0x96, 0xC0, 0xA1, 0xB9, 0xE8, 0x56, 0xAC, 0xB7, 0x39, 0x11, 0x14, 0x0B
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_dev_acexsig[0x100] =
|
||||
{
|
||||
0xB0, 0xEB, 0x0B, 0xE4, 0x81, 0x5F, 0x4C, 0x41, 0x74, 0x13, 0x8D, 0x8C, 0x2D, 0x07, 0xDB, 0x67, 0xDB, 0x0A, 0xD3, 0xE9, 0xD9, 0x24, 0x35, 0xA7, 0x2A, 0x7A, 0x7D, 0x22, 0xAD, 0xE5, 0x5B, 0xAC, 0x6B, 0x08, 0x9E, 0xC3, 0x19, 0x5D, 0x28, 0x13, 0x71, 0xE0, 0x4E, 0xF8, 0xA4, 0x2F, 0xF9, 0x41, 0xB4, 0x9F, 0x02, 0x5B, 0xBD, 0xBB, 0x33, 0xFD, 0xF8, 0x57, 0xE5, 0x36, 0x63, 0xB4, 0x8D, 0x05, 0x8F, 0xA5, 0x87, 0x54, 0x62, 0xE5, 0x9E, 0x31, 0x61, 0xD4, 0x3C, 0xFB, 0xB5, 0xE9, 0x76, 0x65, 0x4E, 0xF2, 0x08, 0x44, 0x6D, 0x2B, 0x54, 0x6E, 0x4E, 0xAB, 0xF3, 0xA4, 0xF1, 0xA5, 0xEF, 0x43, 0xFD, 0x02, 0x09, 0xE5, 0x11, 0x2B, 0x8A, 0xB5, 0xEC, 0x20, 0xDE, 0x28, 0xA7, 0x5C, 0x16, 0x71, 0x1E, 0x0A, 0x1A, 0x1B, 0xED, 0x4B, 0x32, 0x0E, 0x3E, 0x86, 0x37, 0x86, 0x64, 0x10, 0xE7, 0x08, 0x18, 0x06, 0x58, 0x96, 0xFB, 0x84, 0x21, 0xA4, 0x46, 0x7A, 0x59, 0x7A, 0x1E, 0x08, 0x1D, 0x38, 0x28, 0xAF, 0xB2, 0x26, 0xB3, 0xAB, 0x00, 0x2C, 0x85, 0x3A, 0xFA, 0x5F, 0x3B, 0xC4, 0xA6, 0x22, 0xBB, 0x79, 0x74, 0x5A, 0x44, 0xCB, 0x9E, 0x8D, 0x6D, 0x18, 0xD3, 0xC1, 0x74, 0x6D, 0xA1, 0x8B, 0xAC, 0xF4, 0x15, 0x9B, 0x07, 0x52, 0xF5, 0x04, 0x26, 0x58, 0x82, 0x05, 0xF4, 0xE9, 0x54, 0xAD, 0x58, 0xF1, 0xE1, 0x02, 0x9B, 0xE2, 0x15, 0x67, 0x62, 0x3B, 0x95, 0xF2, 0xB7, 0xDC, 0x27, 0x94, 0x10, 0xAC, 0x5B, 0xC9, 0x01, 0xBE, 0x8F, 0x46, 0x92, 0x51, 0x22, 0x89, 0x06, 0xB5, 0x78, 0x52, 0x77, 0x83, 0x79, 0x22, 0xB8, 0x7B, 0x10, 0x7E, 0xF9, 0x7F, 0xF2, 0xA2, 0x53, 0x96, 0x89, 0x05, 0x60, 0x9C, 0x7C, 0xAF, 0x02, 0x29, 0x71, 0xB9, 0xEC, 0x62, 0x38, 0x2D, 0xA4, 0x99, 0x04, 0x78
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_2_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xB8, 0xF9, 0x95, 0xFA, 0xC9, 0xB4, 0x07, 0x9F, 0xCC, 0xF1, 0xAA, 0x82, 0xBB, 0xE3, 0x29, 0x23, 0xA8, 0xF0, 0xB9, 0x9A, 0x2B, 0x27, 0xCA, 0x65, 0x51, 0xAA, 0x05, 0x40, 0x0F, 0x9E, 0x46, 0xBB, 0xE2, 0xF2, 0x72, 0xA6, 0x76, 0xBE, 0x3D, 0xA8, 0xDA, 0x53, 0x4D, 0xD3, 0x95, 0xC4, 0x01, 0x19, 0xD5, 0xC7, 0x3B, 0xF6, 0x12, 0xE7, 0x08, 0x32, 0x2C, 0x66, 0xD9, 0xC1, 0xB6, 0x7D, 0x03, 0x99, 0xA2, 0x89, 0x40, 0x7E, 0x77, 0x0C, 0xF7, 0xD9, 0x29, 0x50, 0x9C, 0x12, 0xB5, 0xBD, 0xED, 0x74, 0x70, 0x30, 0x39, 0x77, 0x49, 0xCE, 0x4F, 0x4F, 0x42, 0xCE, 0xD3, 0xC9, 0xD0, 0xE3, 0x14, 0x13, 0x6E, 0xE3, 0x59, 0x7A, 0x13, 0xE6, 0xEA, 0x57, 0xA1, 0xA3, 0xEC, 0xF4, 0x03, 0x18, 0x07, 0x0D, 0x63, 0xD5, 0x4B, 0x4E, 0xE7, 0x7A, 0x1E, 0x5E, 0x07, 0x0E, 0x4E, 0xAD, 0x23, 0xCD, 0x38, 0x0B, 0xC0, 0x5E, 0x20, 0xD5, 0x98, 0x57, 0xD5, 0xD8, 0xFD, 0x9D, 0xFF, 0x9F, 0xB0, 0xF7, 0xD8, 0xE5, 0xEB, 0xA5, 0xA2, 0xD9, 0xBF, 0x9E, 0x0B, 0xD5, 0xD5, 0xD9, 0xCE, 0x12, 0xAE, 0x8F, 0xD1, 0xCC, 0xD1, 0x8A, 0x04, 0xA1, 0x06, 0x0A, 0x55, 0xDE, 0x0B, 0xCE, 0x7B, 0x11, 0xD7, 0x0F, 0xD6, 0xD9, 0xDF, 0x54, 0x6D, 0xDF, 0x76, 0x2C, 0xB8, 0xCF, 0x85, 0x54, 0xDB, 0xDB, 0x47, 0x35, 0x28, 0x90, 0x7C, 0x8E, 0x59, 0x7D, 0x25, 0x7C, 0x95, 0xA8, 0x9A, 0xF0, 0x4D, 0xE3, 0x5E, 0x0B, 0xE0, 0x7E, 0xAF, 0x0F, 0xEA, 0xC9, 0x06, 0x81, 0x90, 0xE3, 0xDE, 0x42, 0x9C, 0x99, 0x8F, 0x7A, 0x31, 0xFB, 0x83, 0x05, 0x8B, 0xBB, 0xE9, 0x88, 0x0B, 0x31, 0x44, 0x1C, 0x21, 0x02, 0x66, 0xA2, 0xC4, 0x12, 0xAF, 0x4A, 0xB8, 0x01, 0xB6, 0xE1, 0x3B, 0x73, 0x29, 0x78, 0x6E, 0xB5, 0x39, 0x41, 0x37, 0x07
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_2_dev_acexsig[0x100] =
|
||||
{
|
||||
0x57, 0x9D, 0xD4, 0xA1, 0xE8, 0x8C, 0x59, 0x0C, 0xE1, 0xB6, 0x9E, 0x38, 0xD0, 0x45, 0xF7, 0x6F, 0xDD, 0xAE, 0xC6, 0xD1, 0xB1, 0xDE, 0x45, 0xBA, 0xD5, 0x69, 0xF3, 0x8B, 0x54, 0xB0, 0xAA, 0x43, 0x1C, 0x82, 0x58, 0x1D, 0x59, 0xB5, 0xC8, 0xF7, 0xB1, 0x80, 0x3A, 0x99, 0x3E, 0x72, 0xCB, 0x43, 0x5F, 0xE5, 0x96, 0x9C, 0x5B, 0xAE, 0x8C, 0xA3, 0x78, 0x6B, 0xC2, 0xC1, 0xC7, 0x50, 0x36, 0xCB, 0x87, 0xB5, 0x7D, 0x04, 0x74, 0x92, 0xE4, 0x92, 0x94, 0x77, 0x4F, 0x2B, 0x64, 0xDB, 0x6F, 0xE0, 0x75, 0x5A, 0xB5, 0x7B, 0x19, 0xE5, 0x57, 0x4B, 0x9C, 0x0D, 0x80, 0x64, 0xC9, 0x96, 0x1A, 0x5D, 0xAB, 0xEE, 0xB9, 0xAC, 0x3D, 0x2F, 0x60, 0x6F, 0xA2, 0xBC, 0xF9, 0xDD, 0x23, 0x7F, 0xA3, 0x3E, 0xE1, 0x33, 0x31, 0x60, 0x40, 0xF4, 0x26, 0x77, 0x6E, 0xDD, 0xD8, 0x98, 0xD0, 0xE7, 0x01, 0x13, 0x08, 0xC6, 0x0F, 0xB9, 0xF5, 0x52, 0x7A, 0xE4, 0x48, 0xCF, 0x3F, 0x0C, 0x37, 0x38, 0x69, 0x93, 0xFF, 0x12, 0x5B, 0x35, 0x9F, 0x4B, 0x1D, 0x36, 0x53, 0x0C, 0xE6, 0x66, 0xF3, 0xBB, 0xBC, 0x32, 0xF5, 0x8D, 0x74, 0x35, 0x2E, 0xCB, 0xFC, 0x03, 0x02, 0xED, 0x9B, 0xDD, 0xBE, 0x3F, 0xF3, 0xA7, 0xB5, 0xFF, 0x38, 0x43, 0x89, 0xDD, 0x93, 0x43, 0x7A, 0x6E, 0xE0, 0xCF, 0x5E, 0xBF, 0x0C, 0xD5, 0x25, 0x71, 0x98, 0xB2, 0x76, 0xC7, 0x5B, 0x18, 0xC0, 0x71, 0xCB, 0x0C, 0xDB, 0x26, 0x52, 0xB1, 0x55, 0xC3, 0x97, 0x43, 0x1D, 0x33, 0x41, 0x32, 0x2A, 0xD8, 0xB6, 0x37, 0xEA, 0x96, 0x2B, 0xBA, 0x05, 0xA8, 0xA6, 0x3F, 0x47, 0x82, 0xBF, 0x85, 0x3E, 0xDF, 0x8F, 0xEE, 0xFA, 0xD3, 0x68, 0xEE, 0xAE, 0xEB, 0x0E, 0x0D, 0x5D, 0xB1, 0x99, 0xE8, 0x76, 0x70, 0xCF, 0xA4, 0x7E, 0x1E, 0xE6, 0x65
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_3_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xAF, 0xC4, 0x87, 0x3F, 0x38, 0xFF, 0x0D, 0x27, 0xEF, 0x59, 0xB7, 0x5D, 0x71, 0xD4, 0x17, 0x5E, 0x37, 0xB9, 0xEC, 0xD9, 0x2B, 0x94, 0xCD, 0x3F, 0xD3, 0x01, 0x24, 0xC6, 0x67, 0x32, 0x67, 0xAA, 0x09, 0x12, 0xFF, 0x72, 0x74, 0x35, 0x6B, 0x41, 0xF4, 0xB5, 0xDD, 0x27, 0x8B, 0xB3, 0xA7, 0xA8, 0x20, 0x5C, 0x3F, 0x33, 0x10, 0xFF, 0x19, 0x60, 0xB0, 0x04, 0x31, 0x9F, 0xD6, 0x57, 0xB3, 0x41, 0xBC, 0x4C, 0xAC, 0xD8, 0xB4, 0x5B, 0x90, 0xDC, 0x85, 0xED, 0x2C, 0x75, 0x06, 0xD4, 0xA0, 0x0F, 0x90, 0xBB, 0x42, 0xA6, 0x17, 0x0D, 0xEB, 0x15, 0x53, 0xFE, 0x7A, 0x10, 0x57, 0x09, 0x9A, 0x5F, 0x9F, 0x94, 0x91, 0xCA, 0x7B, 0x55, 0x7D, 0xED, 0x3B, 0x80, 0x00, 0xD3, 0x5D, 0xC3, 0x0A, 0x9A, 0x5A, 0xD3, 0x80, 0xAD, 0x03, 0xB3, 0x81, 0x1C, 0xE3, 0xBC, 0x0D, 0x7C, 0x06, 0x8F, 0xE8, 0xEB, 0xCE, 0x96, 0x19, 0xA1, 0xF5, 0x1B, 0xE0, 0x87, 0x17, 0xA8, 0x5C, 0x76, 0x0D, 0xC3, 0xD2, 0xBC, 0x8F, 0x57, 0x02, 0xE1, 0x63, 0xFC, 0x14, 0x98, 0x3F, 0xFC, 0x67, 0x09, 0xB0, 0x99, 0xB6, 0x7D, 0x84, 0xD1, 0x39, 0xE3, 0xCE, 0x54, 0x00, 0xBF, 0x33, 0x78, 0xB2, 0xC9, 0x91, 0xAB, 0xF1, 0x05, 0x88, 0xFF, 0x6E, 0x28, 0xFB, 0x18, 0x08, 0x61, 0x9E, 0x37, 0xED, 0x21, 0x8F, 0x73, 0x82, 0x4D, 0x6C, 0x57, 0xEC, 0x85, 0xE4, 0x8B, 0xB9, 0x89, 0x6B, 0x2B, 0x70, 0x25, 0xE9, 0x00, 0x9A, 0x46, 0x00, 0x22, 0x9C, 0xC0, 0x1C, 0x7F, 0xAC, 0x92, 0x1B, 0x17, 0x3B, 0xDA, 0xF3, 0xA3, 0x60, 0x99, 0xF2, 0x75, 0x7C, 0x52, 0xC5, 0xAE, 0xF7, 0x45, 0xE3, 0xE5, 0x5B, 0x6D, 0x2D, 0x47, 0x39, 0x97, 0xFE, 0x2B, 0x6D, 0x7D, 0xBD, 0x35, 0xC8, 0xB6, 0x23, 0x7B, 0x2E, 0xB2, 0x00, 0xD2, 0x61, 0xC5
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_3_dev_acexsig[0x100] =
|
||||
{
|
||||
0x85, 0x2B, 0xF3, 0xF5, 0x26, 0x11, 0xFA, 0x95, 0xF8, 0x32, 0x2A, 0xAE, 0xCB, 0x96, 0x71, 0x92, 0xCF, 0x81, 0xE4, 0xF7, 0xC9, 0xBB, 0x27, 0x14, 0x21, 0x08, 0x5B, 0x93, 0xA2, 0x92, 0x86, 0x7C, 0x1F, 0xF8, 0x22, 0x1B, 0x33, 0x10, 0x56, 0xF4, 0xC9, 0x58, 0xDB, 0x0F, 0xEC, 0x0B, 0x8C, 0x31, 0xE7, 0xE8, 0x80, 0x69, 0x57, 0x2B, 0xEE, 0xF9, 0x39, 0xBF, 0xEF, 0x56, 0x1B, 0xE1, 0xFF, 0x44, 0xD7, 0xEE, 0x3E, 0x6C, 0xAA, 0x2C, 0xB2, 0x17, 0xE0, 0xA8, 0xEA, 0xAA, 0x93, 0xE3, 0xBF, 0x63, 0xEE, 0xB4, 0xD5, 0x5F, 0x1E, 0x4A, 0x13, 0x22, 0x7D, 0x36, 0xE1, 0xC3, 0xF3, 0xC6, 0x3A, 0xEC, 0x1A, 0x02, 0xA3, 0x3E, 0xC5, 0x5E, 0xFD, 0xD3, 0x09, 0x1D, 0xAF, 0x7C, 0x1A, 0x75, 0x68, 0x58, 0x93, 0x91, 0x92, 0x27, 0xED, 0x0F, 0xCB, 0x98, 0x0E, 0xEA, 0xDF, 0xA5, 0x28, 0x2E, 0x4D, 0x84, 0x7A, 0xE6, 0xC1, 0xBD, 0x50, 0x8A, 0x6F, 0xAC, 0xEC, 0x64, 0xF4, 0xD2, 0x3B, 0x54, 0xFA, 0x07, 0x06, 0xE9, 0xFE, 0xB0, 0x93, 0x9A, 0x8E, 0x46, 0x95, 0xC5, 0xC5, 0xB5, 0x72, 0x0D, 0xD1, 0x79, 0x1A, 0x80, 0xA0, 0x0B, 0x1F, 0x5E, 0x49, 0x9D, 0x50, 0x57, 0xE5, 0x92, 0x6A, 0xF3, 0x16, 0x74, 0x7B, 0xE9, 0x0F, 0x29, 0xCF, 0x2B, 0x3D, 0x52, 0x10, 0xFC, 0x2F, 0x71, 0x5E, 0xDF, 0xAD, 0xC3, 0xCE, 0x69, 0x25, 0xD5, 0xF2, 0x97, 0x0B, 0xCA, 0xB1, 0x0A, 0x9B, 0xF8, 0x85, 0xB6, 0xDC, 0x4F, 0xB1, 0xCB, 0x03, 0xC4, 0xF8, 0x50, 0x63, 0x15, 0xE0, 0x1F, 0x5A, 0xB7, 0x07, 0x45, 0x0B, 0xD6, 0x9E, 0xCD, 0xBF, 0x2F, 0x1C, 0x99, 0x20, 0x69, 0x76, 0x5C, 0xFC, 0x31, 0x18, 0x9A, 0xB9, 0xAC, 0x77, 0xA6, 0xFB, 0xBD, 0xB9, 0x4D, 0x04, 0x45, 0xED, 0x9E, 0x19, 0x56, 0x18, 0xC7, 0x87, 0xFC
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_4_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xC9, 0x83, 0x86, 0x8C, 0x40, 0x07, 0xF3, 0x48, 0xD1, 0xE9, 0xBC, 0x27, 0xAB, 0x11, 0xE4, 0x10, 0x1C, 0x65, 0x1C, 0xA1, 0xE5, 0x9A, 0xEB, 0xB5, 0x22, 0x1F, 0x78, 0x84, 0xC9, 0x9A, 0x7B, 0x45, 0x70, 0x7C, 0x80, 0xDD, 0xC1, 0xF2, 0xF6, 0x0D, 0x91, 0x90, 0x5C, 0xCB, 0x95, 0x1E, 0xC4, 0x31, 0x0D, 0x15, 0xA9, 0x2E, 0x22, 0x94, 0x3F, 0x97, 0x5C, 0x7E, 0x70, 0x5F, 0x5F, 0xF3, 0x12, 0x2D, 0x27, 0x91, 0x53, 0x31, 0xD8, 0x4D, 0xB8, 0x76, 0x74, 0xE8, 0xE1, 0x76, 0xE1, 0xA1, 0x84, 0xA9, 0xF8, 0x62, 0x4F, 0xED, 0x22, 0xFB, 0x82, 0xA5, 0x23, 0x36, 0x2E, 0x08, 0xC8, 0xC1, 0xBA, 0x46, 0x27, 0x10, 0x2E, 0x94, 0x47, 0x62, 0x01, 0x04, 0x4C, 0x84, 0x18, 0xC3, 0xCC, 0xF9, 0xD0, 0x1A, 0x89, 0xC7, 0x47, 0x5C, 0x62, 0x6F, 0x45, 0xF9, 0x18, 0x88, 0x80, 0x3F, 0x65, 0xB5, 0x4B, 0x07, 0x25, 0x4A, 0x97, 0x19, 0xBF, 0x13, 0x44, 0x28, 0x00, 0x38, 0xA7, 0x2E, 0x12, 0x32, 0x5B, 0xB4, 0x3A, 0x96, 0x64, 0x90, 0x77, 0x0F, 0x72, 0xB8, 0x79, 0x97, 0x59, 0x8E, 0x1C, 0xF0, 0xBC, 0x58, 0xD1, 0x26, 0x88, 0x3B, 0x25, 0x65, 0x7E, 0xC6, 0xF5, 0xF5, 0x24, 0x35, 0xC6, 0x65, 0xEF, 0x4C, 0x53, 0xC5, 0x56, 0x9A, 0x1A, 0x5F, 0x15, 0x29, 0xE7, 0x85, 0x1D, 0x35, 0xA1, 0x5C, 0x4B, 0xD6, 0xF2, 0x81, 0x24, 0x5F, 0x43, 0x05, 0xEA, 0xB0, 0x63, 0x0D, 0x78, 0xF7, 0xB5, 0x30, 0x20, 0xF2, 0xC9, 0xE8, 0x91, 0x8F, 0xBF, 0x20, 0x99, 0x95, 0x43, 0xAC, 0xB2, 0xF6, 0x82, 0xF0, 0xB1, 0x33, 0x1E, 0xA9, 0xB3, 0xF5, 0x61, 0xDC, 0x37, 0x81, 0xB3, 0x1F, 0xFE, 0xFF, 0x10, 0x9C, 0x12, 0x2A, 0x80, 0x1F, 0xE3, 0x9C, 0x86, 0x90, 0x47, 0x59, 0x29, 0xA9, 0xE2, 0xD7, 0x6F, 0x89, 0x5C, 0x7D
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_4_dev_acexsig[0x100] =
|
||||
{
|
||||
0x1B, 0x67, 0xA7, 0x4F, 0xF7, 0x55, 0x10, 0x85, 0xA9, 0x40, 0x89, 0xDC, 0xFF, 0xED, 0x4D, 0xC9, 0x71, 0x6E, 0x46, 0x92, 0xB2, 0x9E, 0xEA, 0xB9, 0x7C, 0xC6, 0xAB, 0xCD, 0xDD, 0x6B, 0x4A, 0x27, 0x31, 0xF3, 0xFA, 0x26, 0x2F, 0x99, 0x46, 0x32, 0xBD, 0xDE, 0xA3, 0x09, 0xC9, 0x44, 0x6D, 0xF8, 0x6E, 0x36, 0xB1, 0x26, 0x21, 0x02, 0x0E, 0x6B, 0x3F, 0x3C, 0xD6, 0xA5, 0x56, 0xD9, 0x19, 0x68, 0x73, 0xB7, 0x98, 0x08, 0x46, 0x5E, 0x7C, 0xDC, 0x61, 0x69, 0x06, 0x9C, 0x8C, 0x09, 0x4D, 0x54, 0x88, 0x22, 0x98, 0x85, 0x03, 0x07, 0xA7, 0xB7, 0x9F, 0x81, 0xFA, 0x9F, 0xF5, 0xF6, 0x0D, 0x2E, 0xE7, 0x8B, 0x09, 0xB2, 0xB4, 0x7F, 0xB5, 0xBB, 0x57, 0x7A, 0xEB, 0x92, 0x24, 0xAF, 0xFA, 0x24, 0x69, 0x33, 0x55, 0x9D, 0xF6, 0xAC, 0x78, 0xB9, 0xCF, 0x16, 0x88, 0x85, 0xDD, 0xBA, 0x12, 0xB9, 0x50, 0xA9, 0x81, 0x7D, 0x03, 0x83, 0x4F, 0x7F, 0x25, 0xBD, 0xE4, 0x5F, 0x24, 0x85, 0xCB, 0x3A, 0x46, 0x5A, 0x83, 0xEC, 0x1A, 0x85, 0xE1, 0x38, 0xAB, 0xC5, 0x54, 0xE7, 0x14, 0xD1, 0xC4, 0x77, 0x19, 0xAB, 0xAD, 0x75, 0x11, 0xCF, 0xB4, 0xFE, 0xAB, 0x85, 0xF8, 0xAC, 0x9C, 0x08, 0x93, 0xED, 0x10, 0x60, 0xB2, 0x3F, 0x5A, 0x7B, 0xA4, 0x30, 0xA0, 0x72, 0xC2, 0x33, 0xF3, 0xDC, 0x38, 0xEB, 0x58, 0x7A, 0x9C, 0xF5, 0x4F, 0xB4, 0x92, 0x57, 0x07, 0x7C, 0xC8, 0xD7, 0xE3, 0x28, 0xBA, 0x9B, 0x85, 0x7E, 0x8A, 0xB5, 0xF3, 0x18, 0x58, 0x27, 0x81, 0x37, 0x11, 0x9A, 0x8A, 0x97, 0x33, 0x1A, 0x46, 0x90, 0x0F, 0x1E, 0x37, 0xC9, 0x86, 0xF0, 0xF7, 0xA6, 0xBD, 0xCA, 0x65, 0x3B, 0x3B, 0xDC, 0x80, 0x02, 0x44, 0x84, 0x15, 0x12, 0x31, 0x14, 0xB8, 0x76, 0x9B, 0xAF, 0xB4, 0xCD, 0x2D, 0xC1
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_5_dev_hdrpub[0x100] =
|
||||
{
|
||||
0xD2, 0x81, 0x84, 0x0D, 0x64, 0x18, 0x87, 0x0F, 0xAC, 0x05, 0x8A, 0xF1, 0x9D, 0x0F, 0x08, 0xC0, 0xC2, 0xD4, 0xE6, 0xEC, 0x7B, 0x96, 0xA1, 0xD0, 0xD7, 0x47, 0x01, 0x03, 0x3F, 0x6F, 0xCB, 0x81, 0xE8, 0x55, 0x82, 0xFE, 0xBC, 0x19, 0x07, 0x05, 0x3D, 0x80, 0x8B, 0x85, 0x44, 0xD4, 0x2D, 0x68, 0xAE, 0x6F, 0xC7, 0x0A, 0xBC, 0xA0, 0xB4, 0x83, 0x7D, 0x00, 0x6F, 0x34, 0x2C, 0xF5, 0x1A, 0x79, 0x59, 0x34, 0x5F, 0x94, 0x40, 0x36, 0x19, 0x90, 0x09, 0x45, 0x30, 0xA7, 0xED, 0x8E, 0x47, 0x9F, 0x6B, 0x31, 0xD2, 0x13, 0x53, 0xEE, 0xF8, 0xC1, 0x00, 0xBD, 0x31, 0x19, 0xB2, 0x5B, 0x9C, 0x44, 0xE3, 0x14, 0x36, 0x31, 0xB4, 0x6F, 0x45, 0x33, 0xCC, 0xD5, 0x5D, 0xD0, 0x54, 0xFC, 0x57, 0xC0, 0xE2, 0x5C, 0xC1, 0x7E, 0xE4, 0x98, 0xBF, 0x61, 0xC6, 0x5F, 0x11, 0xBC, 0xED, 0x7E, 0x2B, 0xB1, 0x31, 0xD3, 0xF6, 0xC7, 0x5C, 0xC9, 0x35, 0x41, 0x82, 0x01, 0xE3, 0xF3, 0x02, 0xCC, 0x09, 0x65, 0x5C, 0xBB, 0xC0, 0x41, 0x47, 0xDC, 0xDC, 0xB9, 0x57, 0xEC, 0x39, 0xB9, 0xE7, 0x30, 0x29, 0x26, 0xA0, 0xE8, 0xD2, 0x3E, 0xAF, 0x46, 0x49, 0xBF, 0xC4, 0x9D, 0xB2, 0xD7, 0x16, 0x77, 0xD3, 0xBA, 0xF4, 0x7C, 0x7B, 0x7B, 0x4C, 0xCD, 0x0E, 0x48, 0xCD, 0x92, 0x1F, 0x2D, 0x7F, 0x00, 0xE8, 0x75, 0xC1, 0xC5, 0x64, 0x53, 0x2B, 0x6F, 0xE0, 0xA8, 0x42, 0xC6, 0x55, 0x66, 0x62, 0x94, 0xEA, 0xCC, 0xAC, 0xE6, 0x75, 0x55, 0xBC, 0xB8, 0x88, 0x18, 0x5B, 0x1F, 0x12, 0xE6, 0x9C, 0x12, 0x1E, 0x29, 0xBD, 0x4F, 0xF0, 0x83, 0xCE, 0xEE, 0xF2, 0x3B, 0x87, 0x28, 0x49, 0x96, 0x31, 0x4F, 0x8E, 0x2A, 0x17, 0x31, 0x46, 0x73, 0x7E, 0xE8, 0x3C, 0x60, 0x82, 0xB7, 0x45, 0x63, 0x50, 0x96, 0xB6, 0xED
|
||||
};
|
||||
|
||||
static const unsigned char firm_fw26_5_dev_acexsig[0x100] =
|
||||
{
|
||||
0x19, 0x92, 0x44, 0x57, 0xF2, 0xEE, 0x7E, 0xA6, 0x1D, 0xB7, 0xF0, 0x57, 0xE7, 0x35, 0x0F, 0x9B, 0xAE, 0xC3, 0x80, 0x3F, 0x8D, 0xFD, 0x4B, 0xBB, 0xCF, 0x0C, 0x02, 0x31, 0x04, 0x2C, 0xB8, 0xA3, 0xB9, 0x7B, 0x87, 0x74, 0x39, 0x86, 0x61, 0xE7, 0x69, 0xE6, 0xD6, 0x01, 0xCE, 0xCE, 0xAB, 0xD6, 0xE7, 0xDE, 0xF3, 0xFF, 0x4B, 0x20, 0xB0, 0x41, 0xCE, 0xE4, 0x02, 0xAA, 0x50, 0x3F, 0xF4, 0xE1, 0xE0, 0x57, 0x6C, 0xCD, 0xC4, 0x70, 0x59, 0x55, 0x80, 0xDB, 0x9F, 0x7B, 0xB3, 0x27, 0xEA, 0x29, 0xA5, 0xB4, 0x98, 0xEE, 0xDB, 0x6C, 0x7D, 0x50, 0x1E, 0xE7, 0xF9, 0xC0, 0x0F, 0x2F, 0x65, 0x0B, 0x37, 0x1C, 0xD2, 0x8B, 0x94, 0x1B, 0x1A, 0xC7, 0x23, 0x85, 0x56, 0x6C, 0x1A, 0xF3, 0x6D, 0xC2, 0xB2, 0xF1, 0x0F, 0xDF, 0x30, 0x65, 0x84, 0xF1, 0xEB, 0xD3, 0x6D, 0xA6, 0xA0, 0x65, 0x3B, 0xA9, 0x07, 0x20, 0x69, 0x7B, 0x63, 0x63, 0xF9, 0xCF, 0x97, 0x46, 0xD0, 0xD1, 0x7D, 0x9F, 0x87, 0x45, 0xC1, 0xED, 0xE8, 0x3C, 0x62, 0x5F, 0x16, 0x35, 0xB2, 0x2E, 0x1C, 0x16, 0x89, 0x2D, 0x93, 0xD9, 0x98, 0x4F, 0x42, 0xDF, 0x63, 0xA5, 0xB9, 0xBB, 0x48, 0x6F, 0xA2, 0xE3, 0x6C, 0xB5, 0xB6, 0x6F, 0x37, 0x37, 0x6E, 0x15, 0xD5, 0x32, 0x75, 0x2E, 0x39, 0x34, 0xCE, 0x1A, 0x81, 0x9E, 0xE8, 0x0B, 0xCA, 0xCB, 0xB0, 0x69, 0xA3, 0xE2, 0xBE, 0x8A, 0xC1, 0xE3, 0xBC, 0xAD, 0x25, 0x6F, 0xCA, 0x80, 0xB0, 0xEC, 0x1B, 0x0F, 0x5C, 0x6B, 0x92, 0xA0, 0xCE, 0x61, 0x04, 0x86, 0x51, 0x57, 0x9C, 0x0F, 0xB9, 0xD5, 0x80, 0x16, 0x30, 0xE1, 0x3A, 0x25, 0x4D, 0xEF, 0x74, 0xC4, 0x94, 0x78, 0xB6, 0x84, 0xDF, 0xC0, 0xE5, 0x62, 0x5B, 0x16, 0x4D, 0xDA, 0x75, 0x71, 0xA9, 0xB0, 0x58, 0x7E, 0x95, 0x83
|
||||
};
|
||||
+86
-60
@@ -1,170 +1,196 @@
|
||||
#pragma once
|
||||
|
||||
/* CTR_SDK 1 (1.2.0) */
|
||||
/* CTR_SDK 1 (1.2.0) (2.27 - 2.28) */
|
||||
// DependencyList
|
||||
static const unsigned char sdk1_dep_list[0x180] =
|
||||
static const unsigned char fw1B_dep_list[0x180] =
|
||||
{
|
||||
0x02, 0x24, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x15, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x34, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x16, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x17, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x18, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x27, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x28, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1A, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x32, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x29, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x20, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x35, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x21, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x31, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x22, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x23, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// APP
|
||||
static const unsigned char app_1_desc_data[0x200] =
|
||||
static const unsigned char app_fw1B_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char app_1_acex_data[0x200] =
|
||||
static const unsigned char app_fw1B_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
// DLP
|
||||
static const unsigned char dlp_1_desc_data[0x200] =
|
||||
static const unsigned char dlp_fw1B_desc_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char dlp_1_acex_data[0x200] =
|
||||
static const unsigned char dlp_fw1B_acex_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
/* CTR_SDK 2 (2.3.4) */
|
||||
static const unsigned char sdk2_dep_list[0x180] =
|
||||
static const unsigned char fw1D_dep_list[0x180] =
|
||||
{
|
||||
0x02, 0x24, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x15, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x34, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x16, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x17, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x18, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x27, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x28, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1A, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x32, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x29, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x20, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x35, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x21, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x31, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x22, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x23, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// APP
|
||||
static const unsigned char app_2_desc_data[0x200] =
|
||||
// APP (2.29)
|
||||
static const unsigned char app_fw1D_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1D, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1D, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char app_2_acex_data[0x200] =
|
||||
static const unsigned char app_fw1D_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1D, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
// DLP
|
||||
static const unsigned char dlp_2_desc_data[0x200] =
|
||||
// APP (2.30)
|
||||
static const unsigned char app_fw1E_desc_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1D, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1E, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char dlp_2_acex_data[0x200] =
|
||||
static const unsigned char app_fw1E_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1E, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
// DLP (2.29)
|
||||
static const unsigned char dlp_fw1D_desc_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1D, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char dlp_fw1D_acex_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1D, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
// DEMO
|
||||
static const unsigned char demo_2_desc_data[0x200] =
|
||||
// DEMO (2.30)
|
||||
static const unsigned char demo_fw1E_desc_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1E, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1E, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char demo_2_acex_data[0x200] =
|
||||
static const unsigned char demo_fw1E_acex_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x1E, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
/* CTR_SDK 3 (3.2.5) */
|
||||
static const unsigned char sdk3_dep_list[0x180] =
|
||||
/* CTR_SDK 3 (3.2.5) (2.32) */
|
||||
static const unsigned char fw20_dep_list[0x180] =
|
||||
{
|
||||
0x02, 0x24, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x15, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x34, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x16, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x17, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x18, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x27, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x28, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1A, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x32, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x29, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x33, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x20, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x35, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x21, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x31, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x22, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x37, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x23, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// APP
|
||||
static const unsigned char app_3_desc_data[0x200] =
|
||||
static const unsigned char app_fw20_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char app_3_acex_data[0x200] =
|
||||
static const unsigned char app_fw20_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
/* CTR_SDK 4 (4.2.8) */
|
||||
// EC App
|
||||
static const unsigned char ecapp_fw20_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char ecapp_fw20_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
/* CTR_SDK 4 (4.2.8) (2.33) */
|
||||
// DependencyList
|
||||
static const unsigned char sdk4_dep_list[0x180] =
|
||||
static const unsigned char fw21_dep_list[0x180] =
|
||||
{
|
||||
0x02, 0x24, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x15, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x34, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x16, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x17, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x18, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x27, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x28, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1A, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x32, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x29, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x33, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x20, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x35, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x21, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x31, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x22, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x37, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x23, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// APP
|
||||
static const unsigned char app_4_desc_data[0x200] =
|
||||
static const unsigned char app_fw21_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x00, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
static const unsigned char app_4_acex_data[0x200] =
|
||||
static const unsigned char app_fw21_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
// EC App
|
||||
static const unsigned char ecapp_4_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char ecapp_4_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
// DEMO
|
||||
static const unsigned char demo_4_desc_data[0x200] =
|
||||
static const unsigned char demo_fw21_desc_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x00, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char demo_4_acex_data[0x200] =
|
||||
static const unsigned char demo_fw21_acex_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
// DLP
|
||||
static const unsigned char dlp_4_desc_data[0x200] =
|
||||
static const unsigned char dlp_fw21_desc_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x00, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char dlp_4_acex_data[0x200] =
|
||||
static const unsigned char dlp_fw21_acex_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x21, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
/* CTR_SDK 5 (5.2.3) */
|
||||
static const unsigned char sdk5_dep_list[0x180] =
|
||||
/* CTR_SDK 5 (5.2.3) (2.35) */
|
||||
static const unsigned char fw23_dep_list[0x180] =
|
||||
{
|
||||
0x02, 0x24, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x15, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x34, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x16, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x17, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x18, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x27, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x28, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1A, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x32, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x29, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x33, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x20, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x35, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x21, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x31, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x22, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x37, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x23, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// APP
|
||||
static const unsigned char app_5_desc_data[0x200] =
|
||||
static const unsigned char app_fw23_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x00, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char app_5_acex_data[0x200] =
|
||||
static const unsigned char app_fw23_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
// EC App
|
||||
static const unsigned char ecapp_5_desc_data[0x200] =
|
||||
static const unsigned char ecapp_fw23_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char ecapp_5_acex_data[0x200] =
|
||||
static const unsigned char ecapp_fw23_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
/* SDK 7 (7.1.0) */
|
||||
static const unsigned char sdk7_dep_list[0x180] =
|
||||
/* SDK 7 (7.1.0) (2.39) */
|
||||
static const unsigned char fw27_dep_list[0x180] =
|
||||
{
|
||||
0x02, 0x24, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x38, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x15, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x34, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x16, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x17, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x18, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x27, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x28, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1A, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x32, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x29, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x33, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x1F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x20, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2B, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x35, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2C, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2D, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x21, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x31, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x22, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x37, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2E, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x23, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x02, 0x2F, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// APP
|
||||
static const unsigned char app_7_desc_data[0x200] =
|
||||
static const unsigned char app_fw27_desc_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x41, 0x00, 0x00, 0x00, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x61, 0x63, 0x74, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x27, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char app_fw27_acex_data[0x200] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x41, 0x00, 0x00, 0x00, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x61, 0x63, 0x74, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x27, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char app_7_acex_data[0x200] =
|
||||
|
||||
/* FIRM (sdk irrelevant) */
|
||||
static const unsigned char firm_fwXX_dep_list[0x180] =
|
||||
{
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x68, 0x69, 0x6F, 0x46, 0x49, 0x4F, 0x00, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x30, 0x24, 0x68, 0x6F, 0x73, 0x74, 0x69, 0x6F, 0x31, 0x63, 0x66, 0x67, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x66, 0x73, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x67, 0x73, 0x70, 0x3A, 0x3A, 0x47, 0x70, 0x75, 0x68, 0x69, 0x64, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x6E, 0x64, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x70, 0x78, 0x69, 0x3A, 0x64, 0x65, 0x76, 0x00, 0x41, 0x50, 0x54, 0x3A, 0x41, 0x00, 0x00, 0x00, 0x61, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x61, 0x63, 0x74, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x61, 0x6D, 0x3A, 0x61, 0x70, 0x70, 0x00, 0x00, 0x62, 0x6F, 0x73, 0x73, 0x3A, 0x55, 0x00, 0x00, 0x63, 0x61, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x63, 0x65, 0x63, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x64, 0x6C, 0x70, 0x3A, 0x46, 0x4B, 0x43, 0x4C, 0x64, 0x6C, 0x70, 0x3A, 0x53, 0x52, 0x56, 0x52, 0x64, 0x73, 0x70, 0x3A, 0x3A, 0x44, 0x53, 0x50, 0x66, 0x72, 0x64, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x43, 0x00, 0x00, 0x69, 0x72, 0x3A, 0x55, 0x53, 0x45, 0x52, 0x00, 0x6C, 0x64, 0x72, 0x3A, 0x72, 0x6F, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x6E, 0x65, 0x77, 0x73, 0x3A, 0x75, 0x00, 0x00, 0x6E, 0x69, 0x6D, 0x3A, 0x61, 0x6F, 0x63, 0x00, 0x6E, 0x77, 0x6D, 0x3A, 0x3A, 0x55, 0x44, 0x53, 0x70, 0x74, 0x6D, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x73, 0x6F, 0x63, 0x3A, 0x55, 0x00, 0x00, 0x00, 0x73, 0x73, 0x6C, 0x3A, 0x43, 0x00, 0x00, 0x00, 0x79, 0x32, 0x72, 0x3A, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x9F, 0xFA, 0xF0, 0xFF, 0xBF, 0xFF, 0xF1, 0xE7, 0x3F, 0x00, 0xF2, 0x00, 0xF0, 0x91, 0xFF, 0x00, 0xF6, 0x91, 0xFF, 0x50, 0xFF, 0x81, 0xFF, 0x58, 0xFF, 0x81, 0xFF, 0x70, 0xFF, 0x81, 0xFF, 0x78, 0xFF, 0x81, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x02, 0x00, 0xFE, 0x27, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// FIRM
|
||||
static const unsigned char firm_fw26_desc_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x38, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xF1, 0x00, 0x01, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
static const unsigned char firm_fw26_acex_data[0x200] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x38, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x02, 0xF1, 0x00, 0x01, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
+72
-22
@@ -2,83 +2,133 @@
|
||||
|
||||
/* CTR_SDK 2 (2.3.4) */
|
||||
// APP
|
||||
static const unsigned char app_2_prod_hdrpub[0x100] =
|
||||
static const unsigned char app_fw1D_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xB4, 0xFE, 0x95, 0x00, 0xB5, 0xC3, 0x15, 0xC4, 0x44, 0xDF, 0x24, 0x4D, 0x31, 0x4E, 0x7B, 0xB1, 0x40, 0x69, 0x5B, 0xDD, 0xB7, 0x28, 0x6E, 0x66, 0x52, 0x1D, 0x8A, 0x48, 0x85, 0x64, 0x34, 0xEE, 0x0C, 0xE0, 0xEB, 0x19, 0x48, 0xE2, 0x35, 0x63, 0x6C, 0xEE, 0x57, 0x32, 0x1F, 0x85, 0xB0, 0xA2, 0x83, 0x99, 0xA9, 0x02, 0x36, 0xF9, 0xCF, 0x50, 0x22, 0xFE, 0xAE, 0x61, 0x65, 0x19, 0xC4, 0xAB, 0x09, 0xC9, 0xA4, 0x58, 0x5B, 0x73, 0x9E, 0x3E, 0x9A, 0xF7, 0xFD, 0x52, 0x74, 0xF5, 0x7E, 0x57, 0x21, 0xFC, 0x4F, 0x67, 0xFF, 0x33, 0x7D, 0x36, 0xD8, 0xFB, 0x01, 0x56, 0x4D, 0x5C, 0x3D, 0xB4, 0x42, 0x01, 0xEC, 0x22, 0xD2, 0x45, 0x86, 0x6A, 0x28, 0xC2, 0x01, 0xD6, 0xB5, 0xF3, 0x50, 0x49, 0x0B, 0x1C, 0x4C, 0x8E, 0xA4, 0xBD, 0x14, 0x4E, 0x53, 0x5F, 0xA3, 0xFD, 0x07, 0xC4, 0x7E, 0x4A, 0xF2, 0x9A, 0x39, 0x51, 0xB9, 0xC1, 0xC6, 0xE2, 0xF9, 0x25, 0x26, 0xFB, 0x18, 0xA7, 0xCD, 0x7E, 0x4E, 0xD4, 0x61, 0xB8, 0xCB, 0x0B, 0x28, 0xE8, 0xB5, 0x1C, 0xD1, 0xC0, 0xFE, 0xB8, 0xDC, 0xF9, 0x9F, 0x97, 0xEA, 0x2A, 0xF6, 0xDE, 0x19, 0x97, 0x73, 0x7A, 0x88, 0xDD, 0x70, 0x12, 0xBC, 0x00, 0x96, 0x2C, 0x2D, 0x3A, 0xDB, 0xC9, 0x74, 0x22, 0x22, 0x32, 0x24, 0xBE, 0xF0, 0xF7, 0xA6, 0x3A, 0x23, 0x8A, 0x41, 0xFF, 0x9D, 0x6B, 0x13, 0xEB, 0x37, 0x8E, 0x2E, 0x55, 0x5E, 0xFA, 0x99, 0x84, 0xA6, 0x91, 0x0D, 0xD2, 0xC7, 0x19, 0x06, 0x5E, 0x13, 0xC4, 0x2C, 0x58, 0x6C, 0x07, 0x5C, 0x84, 0xF0, 0x71, 0xFE, 0x01, 0x2F, 0xE1, 0x1B, 0x1B, 0x53, 0xBC, 0x4F, 0xE4, 0x80, 0x3E, 0x51, 0x4F, 0xEC, 0xEA, 0x3B, 0x29, 0x6E, 0x48, 0x6C, 0x7D, 0x43, 0x41, 0x2C, 0xC3, 0x9A, 0xE6, 0x82, 0x55
|
||||
0x9F, 0xA8, 0xD0, 0xBE, 0x14, 0x3F, 0x28, 0xE5, 0xBE, 0x0E, 0xEB, 0x5D, 0x95, 0xEE, 0xD4, 0x76, 0x7E, 0x1C, 0x11, 0x49, 0x13, 0x55, 0x87, 0x22, 0xCF, 0xA4, 0x2B, 0xDE, 0x59, 0x1A, 0xDB, 0xEB, 0x39, 0x14, 0xE0, 0x27, 0xFD, 0x0B, 0x6E, 0x5B, 0xD9, 0x0E, 0xCD, 0xCC, 0xAF, 0x8E, 0xEF, 0x92, 0xFC, 0x9A, 0x3B, 0x2E, 0xB8, 0x9C, 0xDA, 0x20, 0x22, 0x84, 0x0B, 0x7D, 0xFA, 0xCE, 0x4B, 0xB0, 0xC6, 0xAC, 0xC7, 0xB7, 0x44, 0x59, 0xB6, 0x94, 0xD2, 0xA6, 0x87, 0xEA, 0x36, 0xCB, 0xCB, 0x8E, 0x58, 0xB7, 0xE5, 0xD0, 0xDD, 0x62, 0x0E, 0x83, 0x40, 0x03, 0x21, 0x5B, 0x48, 0x9C, 0x6E, 0x4A, 0x6C, 0x1E, 0x10, 0x9D, 0x6B, 0x85, 0xC3, 0x00, 0x59, 0x3C, 0xE0, 0x35, 0x93, 0x87, 0x94, 0x9A, 0x7C, 0x2C, 0x3C, 0x44, 0xE3, 0x3B, 0x15, 0x20, 0x57, 0xAC, 0x86, 0x8B, 0xE8, 0x97, 0xBB, 0x1C, 0x84, 0x8D, 0x95, 0x83, 0xE7, 0x54, 0x39, 0x8F, 0x0B, 0x13, 0xC7, 0xD6, 0x26, 0x6D, 0xA8, 0xBF, 0x96, 0x79, 0x39, 0xF9, 0x11, 0x63, 0xB1, 0x9F, 0x8C, 0x5F, 0x7A, 0xA9, 0x7B, 0xCD, 0xDB, 0xEE, 0x44, 0x8C, 0xF2, 0x83, 0x7C, 0xA8, 0xD9, 0x8D, 0x4B, 0xB0, 0xD7, 0x86, 0x53, 0x1D, 0xD7, 0x94, 0xD1, 0xFA, 0x61, 0x8B, 0x94, 0x20, 0x4D, 0xD8, 0x5C, 0xB5, 0x2C, 0x6E, 0x7E, 0xAC, 0x85, 0xC7, 0x33, 0xBB, 0x4D, 0x34, 0xAB, 0xDC, 0xED, 0x3F, 0xA0, 0xA8, 0xC7, 0xC2, 0x18, 0x48, 0x70, 0x54, 0x06, 0x7E, 0xA9, 0x2E, 0x30, 0x92, 0x04, 0xBA, 0xFD, 0x2A, 0xF9, 0xEC, 0xD1, 0xD9, 0x5D, 0x45, 0xB3, 0x7E, 0x9A, 0x86, 0xB4, 0x7F, 0xD6, 0x7A, 0x7F, 0x02, 0xEE, 0xB1, 0x65, 0x77, 0x68, 0xCB, 0x3D, 0xB2, 0x6C, 0x70, 0xB1, 0xB6, 0x57, 0x1F, 0x67, 0xB3, 0x73, 0x31, 0x0D, 0x89, 0x83, 0x39
|
||||
};
|
||||
|
||||
static const unsigned char app_2_prod_acexsig[0x100] =
|
||||
static const unsigned char app_fw1D_prod_acexsig[0x100] =
|
||||
{
|
||||
0x88, 0x8E, 0x68, 0x07, 0x61, 0xA5, 0x45, 0x28, 0x3E, 0xB0, 0x16, 0xEE, 0x5A, 0xBB, 0xD8, 0xDA, 0xC6, 0x2D, 0x26, 0x3D, 0x9F, 0xC7, 0x2C, 0xEE, 0x5E, 0x18, 0xD4, 0x50, 0xCD, 0x6D, 0x56, 0xD7, 0x10, 0xD5, 0xCD, 0x57, 0xBE, 0xFB, 0x66, 0xF4, 0x0C, 0xDD, 0x49, 0x7D, 0xAE, 0xA5, 0x5C, 0x56, 0xC4, 0x1A, 0xE4, 0x01, 0xD4, 0xA4, 0xB0, 0x32, 0x2D, 0xFE, 0x1F, 0xA9, 0x1F, 0xC3, 0x10, 0x6B, 0x19, 0xC0, 0x42, 0x48, 0x81, 0x4D, 0xE4, 0x4C, 0xED, 0x4B, 0x63, 0x7F, 0xB3, 0x94, 0xD4, 0x65, 0x4F, 0x1B, 0x53, 0xC4, 0x20, 0x5E, 0x5F, 0xD8, 0x32, 0xD1, 0x2B, 0x79, 0xD1, 0xBD, 0x4F, 0xC5, 0x1F, 0xF2, 0xEB, 0x97, 0xC5, 0x19, 0xBB, 0x43, 0x4D, 0x75, 0xB5, 0x03, 0x11, 0x43, 0x1D, 0x5E, 0x35, 0x32, 0x67, 0xFA, 0xEC, 0xF7, 0xDA, 0x06, 0x23, 0x5B, 0x83, 0x95, 0x68, 0x23, 0x06, 0x49, 0xE2, 0x83, 0x43, 0xDC, 0xCC, 0x5F, 0x14, 0x0B, 0xA8, 0x50, 0xA5, 0xA5, 0xF6, 0x38, 0xB9, 0xDB, 0x9A, 0xC6, 0x6B, 0x64, 0x1C, 0xE9, 0xBD, 0x8A, 0x8D, 0x87, 0xB0, 0x6E, 0xE5, 0x09, 0x25, 0x00, 0x56, 0x81, 0x49, 0x6B, 0x28, 0x58, 0xD0, 0x77, 0xDE, 0x69, 0x86, 0x54, 0x17, 0x6A, 0x12, 0x52, 0xAD, 0x6B, 0x0E, 0xC1, 0xF4, 0x19, 0x5B, 0x56, 0x35, 0xA0, 0x95, 0x8F, 0x7B, 0xA4, 0xE5, 0xE3, 0xF9, 0xB0, 0xB0, 0xC1, 0x77, 0xA7, 0x18, 0x9B, 0x43, 0x7C, 0xE0, 0x0B, 0x6B, 0xD5, 0x39, 0x34, 0xCA, 0x1B, 0x32, 0xC5, 0x7E, 0xCF, 0xD8, 0x18, 0xD4, 0x75, 0x9A, 0xE4, 0xC0, 0xFE, 0xB7, 0xB1, 0x48, 0x14, 0x1A, 0x4E, 0x35, 0x51, 0x99, 0xB0, 0x01, 0x03, 0x6B, 0x60, 0xD4, 0x2A, 0x36, 0x7F, 0xE6, 0xEB, 0xAE, 0x73, 0xD9, 0xB2, 0x50, 0x11, 0x53, 0x44, 0x90, 0xE1, 0x02, 0x08, 0x83, 0x27
|
||||
0x05, 0x67, 0xFA, 0xAC, 0x18, 0x3A, 0xCC, 0xC9, 0x1B, 0xCD, 0x49, 0x7F, 0x28, 0x87, 0xF5, 0x8A, 0xD9, 0x86, 0x06, 0xAB, 0x1D, 0x36, 0x41, 0xDB, 0xFD, 0xE5, 0x97, 0x93, 0x1C, 0x9C, 0xAB, 0xB2, 0x62, 0xEB, 0x8B, 0xD6, 0x85, 0xCF, 0x06, 0xC4, 0xC5, 0xB9, 0x7F, 0x3B, 0x6F, 0x07, 0x83, 0x93, 0xBD, 0x26, 0x71, 0x8C, 0xEC, 0xBC, 0x0B, 0x3C, 0xD8, 0x42, 0xF3, 0x19, 0xBE, 0x91, 0xB9, 0xAB, 0x23, 0x39, 0x0F, 0x46, 0x8A, 0xCB, 0xC2, 0x34, 0xD2, 0x39, 0x63, 0xE3, 0x49, 0x59, 0xE0, 0x47, 0x73, 0x4F, 0x8E, 0xC8, 0x87, 0xE7, 0x54, 0xDD, 0xF9, 0x3B, 0x19, 0xD5, 0xB5, 0x78, 0xED, 0x47, 0x4F, 0x53, 0x8F, 0x6D, 0xB6, 0xA8, 0x3A, 0x06, 0x3C, 0x2D, 0x6B, 0xFE, 0x7C, 0x3C, 0x6B, 0x20, 0x47, 0xC9, 0xF5, 0xB7, 0x36, 0x8A, 0x92, 0x27, 0x1A, 0x41, 0x4E, 0xE6, 0x75, 0x6E, 0x88, 0x57, 0xAA, 0x01, 0x43, 0x93, 0x78, 0x5E, 0xE0, 0x3D, 0x59, 0x26, 0xFD, 0x46, 0x09, 0x02, 0xCA, 0x58, 0x45, 0x5A, 0xCB, 0xCC, 0x85, 0xBD, 0x0B, 0xDF, 0xAB, 0xE3, 0xDB, 0x35, 0x36, 0xCC, 0xCF, 0x57, 0x8B, 0x4A, 0x21, 0x1C, 0x3A, 0x2D, 0x90, 0xED, 0xA6, 0xCB, 0x20, 0x21, 0x4A, 0xE4, 0x08, 0xF6, 0xF3, 0x73, 0x5B, 0xA5, 0x73, 0x2B, 0x1C, 0x46, 0x3C, 0x77, 0xB6, 0x43, 0x33, 0xFF, 0xEA, 0xF7, 0xA3, 0xDC, 0x3B, 0xD0, 0xC0, 0xC9, 0x10, 0xF4, 0x86, 0xB5, 0xB1, 0x83, 0x71, 0xF5, 0x6E, 0x67, 0xCC, 0xCA, 0xEE, 0xC0, 0x53, 0xD2, 0x78, 0xA4, 0x2C, 0x86, 0xDF, 0x2F, 0xEF, 0x4D, 0x0C, 0x8B, 0x6B, 0xAE, 0x32, 0xAC, 0x07, 0x2D, 0x4D, 0x6B, 0x4A, 0xEF, 0x13, 0xCE, 0xA7, 0x7C, 0xC9, 0x30, 0x69, 0x88, 0x96, 0x95, 0x8E, 0x11, 0x5C, 0x2A, 0x6D, 0x84, 0x3E, 0x36, 0xDA, 0x9B, 0x2A, 0x20
|
||||
};
|
||||
|
||||
// APP
|
||||
static const unsigned char app_fw1E_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xC8, 0xC4, 0x8C, 0x65, 0xA1, 0x76, 0x9B, 0x68, 0x91, 0xF1, 0x2B, 0xDE, 0xDF, 0x0D, 0xE1, 0x44, 0x6B, 0xB2, 0xF9, 0xFA, 0x0C, 0xB8, 0x9A, 0xC7, 0x7E, 0x71, 0xA3, 0x27, 0x57, 0xF3, 0x27, 0x99, 0x15, 0xF2, 0x43, 0x6A, 0x1E, 0x75, 0x4C, 0xA2, 0x7A, 0x77, 0x71, 0x60, 0xFE, 0x14, 0xB6, 0xCB, 0xFC, 0x6E, 0x64, 0x2E, 0x86, 0x9B, 0xFD, 0x17, 0xB5, 0x89, 0xD1, 0xC2, 0x10, 0xFC, 0xCD, 0x81, 0x58, 0x8F, 0x58, 0x43, 0xEC, 0x52, 0x6D, 0xE8, 0x14, 0x32, 0x6E, 0xCD, 0x67, 0x35, 0xDC, 0xDC, 0x58, 0x97, 0xB0, 0xBF, 0xD3, 0xC0, 0x2C, 0xFE, 0x77, 0xEC, 0xE0, 0x33, 0x65, 0xA8, 0x56, 0x52, 0xFD, 0x5B, 0xAB, 0x09, 0xB9, 0xF4, 0x74, 0xB9, 0x98, 0xDA, 0x33, 0x2F, 0x79, 0xD6, 0x52, 0x5D, 0x5A, 0x72, 0xA2, 0xCE, 0x15, 0xC5, 0x4B, 0x0C, 0x92, 0xD6, 0xC9, 0x10, 0x75, 0xFF, 0x6C, 0x8D, 0x9B, 0xDC, 0x34, 0x7A, 0xAA, 0x66, 0x45, 0x60, 0xBC, 0xC6, 0xB6, 0x3B, 0x08, 0x4B, 0x62, 0x2C, 0x95, 0x29, 0xAD, 0xDC, 0xAF, 0xEB, 0x47, 0xB5, 0xF5, 0xD2, 0x1C, 0x6D, 0x23, 0xD4, 0xCA, 0xD8, 0xE5, 0x58, 0x5D, 0x0D, 0x56, 0x95, 0x36, 0x7C, 0x2D, 0xFF, 0x51, 0x8B, 0xA9, 0xC4, 0x2D, 0xA0, 0x60, 0x94, 0xE4, 0xBB, 0x05, 0xF9, 0xFA, 0x08, 0x8C, 0xC6, 0x64, 0x88, 0x07, 0x71, 0x4F, 0x91, 0xB7, 0x62, 0xF6, 0x12, 0xFC, 0xF4, 0xC8, 0x7F, 0x9A, 0x50, 0x7F, 0xFC, 0x73, 0x3B, 0xC4, 0xC6, 0x41, 0x3D, 0xA3, 0x5B, 0x03, 0x54, 0xF6, 0x6C, 0x8C, 0x66, 0xC8, 0xFE, 0xE8, 0x38, 0xA5, 0xC3, 0xDD, 0xC3, 0x9F, 0x25, 0x66, 0x77, 0x75, 0x77, 0x2E, 0xD9, 0xE5, 0x37, 0x15, 0xB6, 0x7D, 0x29, 0x5F, 0xC5, 0x94, 0x31, 0xE0, 0xB2, 0xBA, 0xF3, 0xF7, 0xB6, 0x41, 0x3F, 0xF1, 0x67, 0x03, 0xE3
|
||||
};
|
||||
|
||||
static const unsigned char app_fw1E_prod_acexsig[0x100] =
|
||||
{
|
||||
0x28, 0xBD, 0x6C, 0x5C, 0xE1, 0x57, 0xAB, 0x22, 0xEB, 0xBF, 0x76, 0xC3, 0x45, 0xDB, 0x13, 0x7E, 0x6F, 0x15, 0x7B, 0x13, 0x86, 0x1C, 0xFA, 0xEA, 0xAC, 0x58, 0x43, 0x48, 0xB1, 0xCD, 0x6D, 0xA8, 0xB9, 0x45, 0x9C, 0x03, 0xBE, 0xBA, 0xCA, 0xF9, 0x7D, 0xF5, 0x78, 0x35, 0x36, 0xB3, 0xFE, 0xD8, 0x07, 0x48, 0x46, 0x31, 0x8D, 0xB6, 0x61, 0x94, 0xF7, 0x27, 0xB5, 0x03, 0x5C, 0x01, 0x5A, 0xEC, 0x92, 0x88, 0x15, 0xEB, 0xC1, 0x19, 0xD1, 0x13, 0xF9, 0x69, 0x3F, 0x75, 0x24, 0x18, 0x36, 0xE0, 0x12, 0x1E, 0xE2, 0x34, 0xC0, 0x79, 0x85, 0x4D, 0xB0, 0xA1, 0x9B, 0x8C, 0x9D, 0x0F, 0xCC, 0x56, 0x45, 0xEB, 0x0E, 0x56, 0xA8, 0x1D, 0xA2, 0x81, 0x94, 0x45, 0x35, 0xE9, 0x4A, 0x5D, 0x29, 0x47, 0xBC, 0x40, 0x5B, 0xA8, 0x67, 0xE6, 0x7C, 0x51, 0x8D, 0xB7, 0x97, 0x4A, 0x88, 0xD2, 0x14, 0xFE, 0x20, 0xFF, 0x7A, 0x10, 0xB7, 0xAB, 0x92, 0x38, 0xF5, 0xAC, 0x12, 0xCB, 0x97, 0xAF, 0xFD, 0x78, 0x93, 0xC6, 0xCC, 0xFF, 0x4F, 0x8C, 0x7F, 0x2D, 0x87, 0xEC, 0x8B, 0x85, 0xAE, 0xB1, 0xBA, 0xF9, 0xE2, 0x88, 0xFA, 0x41, 0xCB, 0x27, 0xAA, 0x19, 0x41, 0xF4, 0x93, 0x90, 0x73, 0x1A, 0xFA, 0xC9, 0x15, 0x58, 0xC7, 0x51, 0x02, 0x83, 0xB4, 0xD2, 0xDD, 0x43, 0x3E, 0x2C, 0x11, 0xBB, 0x97, 0x02, 0xCA, 0x29, 0xD2, 0x28, 0x82, 0x4C, 0x5B, 0x7B, 0x94, 0xE4, 0x8C, 0x0B, 0x49, 0x8F, 0x0F, 0xFA, 0xDA, 0x43, 0xA6, 0x52, 0x81, 0xA2, 0x1F, 0x98, 0xB3, 0xB1, 0x8F, 0x3D, 0x64, 0x54, 0x2D, 0xA0, 0xCB, 0xA8, 0x0D, 0xC3, 0x9C, 0xB0, 0x2E, 0x38, 0xEF, 0x3A, 0x47, 0x28, 0xE9, 0x54, 0x95, 0x1A, 0x94, 0x86, 0x7D, 0x36, 0xB6, 0x4D, 0x90, 0x44, 0xF6, 0xC0, 0xA7, 0xC6, 0x31, 0x15, 0x99, 0x7A
|
||||
};
|
||||
|
||||
/* CTR_SDK 3 (3.2.5) */
|
||||
// APP
|
||||
static const unsigned char app_3_prod_hdrpub[0x100] =
|
||||
static const unsigned char app_fw20_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xC0, 0xDE, 0x75, 0x56, 0x5F, 0xC1, 0x95, 0x48, 0x9C, 0x1E, 0x00, 0x41, 0x49, 0x9F, 0xB2, 0x8C, 0x43, 0x30, 0xCA, 0x50, 0xC7, 0xCC, 0x7E, 0xF5, 0x56, 0xD0, 0x8F, 0x89, 0x6A, 0xC7, 0x15, 0x10, 0x70, 0x64, 0xB3, 0x29, 0x5B, 0xE8, 0x6B, 0xCA, 0xB1, 0xFE, 0x44, 0xEC, 0x4D, 0x5D, 0xB9, 0xFC, 0xA8, 0xE2, 0x95, 0xBC, 0xFA, 0x0F, 0x76, 0xA5, 0xE1, 0x07, 0xEA, 0x02, 0x13, 0x8C, 0xA6, 0x18, 0x55, 0xDA, 0xBD, 0x9C, 0xE3, 0x5F, 0xBD, 0x50, 0x1E, 0x89, 0xFC, 0x73, 0xC3, 0x37, 0x39, 0x05, 0xAF, 0xE4, 0xDA, 0xA8, 0x62, 0x9E, 0x58, 0x4B, 0x83, 0x9E, 0x5C, 0x26, 0xF2, 0x8B, 0x41, 0xB4, 0xB5, 0x89, 0xCD, 0x90, 0xC0, 0xB8, 0xA0, 0x9F, 0xFA, 0x83, 0x05, 0x11, 0x06, 0xD2, 0xED, 0x3A, 0xAB, 0xAF, 0x6D, 0x46, 0x8A, 0xE8, 0x0E, 0x39, 0xB1, 0xA3, 0xE6, 0x7A, 0x3E, 0x30, 0xE2, 0xA2, 0xDC, 0xC5, 0x4B, 0x8E, 0x3F, 0x9E, 0xB5, 0xC0, 0x9E, 0x05, 0x23, 0x72, 0x3F, 0x4E, 0xDD, 0x7C, 0xF4, 0x7D, 0xA6, 0x9B, 0x92, 0x45, 0x4B, 0x07, 0xD6, 0x19, 0x53, 0x1C, 0x98, 0x13, 0xB1, 0x50, 0x18, 0x6F, 0x74, 0xFD, 0x2D, 0x1C, 0xD5, 0x04, 0xBD, 0x59, 0x19, 0x05, 0xB0, 0xE8, 0x1E, 0x8A, 0xE8, 0x1C, 0xB0, 0x09, 0xB7, 0x82, 0x22, 0x77, 0x99, 0x93, 0xED, 0x33, 0x6D, 0xC8, 0x0C, 0x8F, 0x54, 0xA6, 0x51, 0x7C, 0x22, 0xC3, 0x13, 0x02, 0x5B, 0xC1, 0x44, 0xFE, 0x8E, 0x0D, 0x19, 0x8E, 0xD1, 0x0C, 0xB8, 0xED, 0xEF, 0xF4, 0x3D, 0x3B, 0x68, 0xA0, 0xA3, 0xB9, 0x52, 0x81, 0x98, 0xA9, 0xAE, 0xD0, 0xCD, 0xC2, 0x14, 0xF6, 0x67, 0x45, 0xC2, 0xC7, 0x68, 0x22, 0xB2, 0xC4, 0x20, 0xB8, 0x33, 0x48, 0x7B, 0xB6, 0x13, 0x2E, 0x7A, 0x3D, 0xC5, 0x5E, 0xB6, 0xAF, 0x2A, 0xF9, 0x7D, 0x53
|
||||
};
|
||||
|
||||
static const unsigned char app_3_prod_acexsig[0x100] =
|
||||
static const unsigned char app_fw20_prod_acexsig[0x100] =
|
||||
{
|
||||
0x19, 0xA5, 0x0A, 0x40, 0x4E, 0xF4, 0xDD, 0xE2, 0x8F, 0xA1, 0x50, 0xA5, 0x78, 0xFF, 0x1D, 0xBA, 0xE3, 0x2B, 0x9D, 0x7A, 0xB5, 0x7C, 0xC1, 0x59, 0x01, 0xB4, 0x2C, 0x46, 0xA8, 0x96, 0xDC, 0xD3, 0xD7, 0x41, 0x0D, 0x0F, 0xC8, 0x24, 0x0D, 0x20, 0xDA, 0xDF, 0x25, 0xE8, 0xC9, 0x88, 0x8C, 0x1B, 0xFF, 0x8B, 0x40, 0x89, 0x9C, 0x2F, 0x37, 0x43, 0x26, 0xDE, 0x18, 0xA3, 0xAB, 0x53, 0x5C, 0xB4, 0xFA, 0xD1, 0x80, 0x2E, 0x46, 0x57, 0x9A, 0x90, 0x49, 0x65, 0xCD, 0x66, 0xE5, 0xE6, 0xB8, 0xF5, 0x3C, 0x70, 0xAE, 0x57, 0xF3, 0x71, 0x31, 0xBA, 0x04, 0x3F, 0x9C, 0x2C, 0x28, 0x9A, 0x32, 0xB8, 0xCD, 0x22, 0x4A, 0x38, 0x7B, 0x91, 0xDA, 0xCC, 0x4D, 0x3A, 0x7D, 0x5C, 0xDC, 0x49, 0x85, 0x37, 0x7A, 0xFF, 0x20, 0xEA, 0x1D, 0x74, 0x2F, 0x83, 0xD8, 0x3C, 0x2E, 0x71, 0xBD, 0x0F, 0xFF, 0x90, 0x8F, 0x49, 0x1C, 0x1F, 0x2A, 0x34, 0xB0, 0x2E, 0x60, 0x78, 0x4B, 0x46, 0xDF, 0x27, 0xEC, 0x37, 0x36, 0xEA, 0xE9, 0xA0, 0xC5, 0x4A, 0x12, 0x1F, 0x36, 0x18, 0x07, 0x97, 0x52, 0xF6, 0xF3, 0xC2, 0x78, 0xA4, 0x70, 0xF2, 0xC3, 0xB6, 0xD8, 0xF1, 0xC9, 0x74, 0x2C, 0x11, 0x21, 0x1A, 0x54, 0xD9, 0x27, 0x6C, 0xB1, 0x24, 0xBD, 0xC8, 0x9B, 0xEC, 0x69, 0xD6, 0xAE, 0x16, 0x90, 0x43, 0x64, 0x58, 0x6F, 0xF8, 0x56, 0x29, 0x04, 0xDF, 0x2F, 0x4C, 0xEE, 0xCC, 0x4D, 0x22, 0x2D, 0xEB, 0x60, 0x35, 0x07, 0x20, 0xF5, 0x75, 0x69, 0x54, 0x26, 0x20, 0x02, 0xC2, 0x1A, 0xBD, 0xA5, 0xDE, 0xC8, 0x38, 0xCD, 0xDB, 0x32, 0x53, 0x5D, 0x08, 0x3F, 0x7D, 0xED, 0x7F, 0x6A, 0x6F, 0x29, 0xEB, 0x11, 0x8A, 0x9A, 0xEE, 0x9C, 0x3C, 0x87, 0x3F, 0xB7, 0x2B, 0x84, 0x7A, 0x74, 0x70, 0xE2, 0x90, 0x33, 0x29
|
||||
};
|
||||
|
||||
|
||||
/* CTR_SDK 4 (4.2.8) */
|
||||
// APP
|
||||
static const unsigned char app_4_prod_hdrpub[0x100] = // app_4_prod_hdrpub
|
||||
static const unsigned char app_fw20_2_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xCF, 0x00, 0x9C, 0xB3, 0x20, 0xA0, 0x32, 0x47, 0x65, 0x89, 0xE0, 0xA0, 0x40, 0xC5, 0x57, 0x03, 0xA5, 0xF6, 0x8E, 0x66, 0xF5, 0x20, 0x28, 0xEE, 0xA7, 0x44, 0x3E, 0x8E, 0x4F, 0xC0, 0xC9, 0xD3, 0xE4, 0x3A, 0x0B, 0x31, 0xEC, 0x8F, 0xCC, 0x8D, 0x4C, 0xA6, 0x14, 0x49, 0x14, 0xBE, 0x05, 0xC1, 0xB4, 0x22, 0xAD, 0xCE, 0x1D, 0xCD, 0x29, 0x7B, 0x45, 0x16, 0xE5, 0xB9, 0xD6, 0xD2, 0x7A, 0xD0, 0x63, 0xCE, 0x69, 0xB2, 0xCA, 0xB8, 0x6D, 0x10, 0x9B, 0x99, 0x62, 0xF9, 0x45, 0xC0, 0x2E, 0xB5, 0xA1, 0xCD, 0x6B, 0xAF, 0x77, 0x9B, 0xEF, 0xD8, 0x56, 0x48, 0x75, 0x34, 0x02, 0x6E, 0xBA, 0xBF, 0x30, 0x54, 0xBF, 0x33, 0x4D, 0xB1, 0x36, 0xDC, 0x2A, 0xCD, 0x68, 0x81, 0x8C, 0x4F, 0xCB, 0xC2, 0xA2, 0x1D, 0x6E, 0xB0, 0xC0, 0x02, 0xF5, 0xF8, 0x1C, 0x6C, 0xB4, 0xC9, 0xD6, 0x90, 0x27, 0x50, 0xCA, 0x61, 0xE4, 0x1E, 0xA6, 0x1E, 0x43, 0x94, 0x01, 0x81, 0xC3, 0x69, 0xD0, 0xE2, 0x2C, 0xD7, 0x86, 0x1B, 0x8B, 0x69, 0x4D, 0xF0, 0xF1, 0x54, 0x24, 0x20, 0x91, 0xDD, 0x87, 0x12, 0x0A, 0x23, 0x98, 0x09, 0x63, 0xFD, 0xB4, 0x00, 0x69, 0x06, 0xD2, 0xF1, 0xC3, 0xE7, 0x9D, 0xCC, 0x87, 0x99, 0x01, 0x20, 0xDA, 0xD6, 0xA4, 0x24, 0x58, 0x9A, 0x62, 0x52, 0xF0, 0x30, 0x98, 0x6C, 0x08, 0x90, 0xB4, 0xA6, 0xE4, 0x79, 0x47, 0xF3, 0x1D, 0x58, 0x86, 0x4D, 0x9B, 0xA3, 0xE8, 0xFC, 0x1A, 0x63, 0xC3, 0x2F, 0xDF, 0xD3, 0xC6, 0x3B, 0x8E, 0xDA, 0xFB, 0xEA, 0x6D, 0xE3, 0x92, 0x14, 0xC8, 0x21, 0x2C, 0xE3, 0xF2, 0xE3, 0x31, 0x2E, 0xF6, 0x73, 0x27, 0xE8, 0xF2, 0xD5, 0x38, 0xB7, 0x04, 0x46, 0xA7, 0xBE, 0x92, 0x14, 0x66, 0x1E, 0x8D, 0x88, 0xF7, 0xC0, 0x60, 0xB5, 0x7F, 0xF3, 0xCE, 0x43
|
||||
0xC7, 0x35, 0xC3, 0x09, 0x60, 0x43, 0xCD, 0xE6, 0x11, 0x07, 0x52, 0xCA, 0x8B, 0x6A, 0xF2, 0x5A, 0x72, 0xC9, 0xAA, 0xDF, 0x63, 0xF3, 0x1F, 0x2A, 0xDE, 0xE3, 0x56, 0x24, 0xE8, 0x95, 0x8D, 0xBA, 0x5D, 0x9F, 0xF7, 0x03, 0xD9, 0x3C, 0xC8, 0x58, 0x47, 0x00, 0x35, 0x1B, 0xDB, 0x16, 0x7B, 0xA7, 0x2B, 0x82, 0x38, 0xBD, 0x20, 0xA9, 0xB7, 0x1E, 0xF4, 0x78, 0xFC, 0x59, 0x28, 0x61, 0x29, 0x74, 0xE5, 0x63, 0x6F, 0xB2, 0x9E, 0x36, 0x2A, 0xA0, 0x5B, 0x50, 0x89, 0x3F, 0xE9, 0x0C, 0x76, 0x05, 0x41, 0xF3, 0x23, 0x9C, 0xCD, 0xA9, 0xC1, 0x3C, 0x0B, 0x48, 0xAC, 0x11, 0x17, 0xA9, 0x46, 0x4D, 0x64, 0xD9, 0xBF, 0x63, 0x13, 0xBF, 0x8A, 0xFF, 0xED, 0xF0, 0x24, 0x71, 0xD6, 0xA9, 0x50, 0x9D, 0x00, 0xFC, 0x9B, 0x33, 0xFF, 0x0F, 0x68, 0x22, 0x25, 0xE8, 0x49, 0x68, 0x76, 0xF4, 0x8D, 0x3B, 0x67, 0xF0, 0xD7, 0x49, 0x41, 0xDE, 0xBF, 0x55, 0xC3, 0x8F, 0xD9, 0xF6, 0x30, 0x39, 0xF3, 0x15, 0x2B, 0x79, 0x6D, 0x71, 0xAC, 0xE9, 0x93, 0x88, 0xBD, 0xDB, 0x24, 0x75, 0xB1, 0x19, 0x84, 0x51, 0xF8, 0xD3, 0xBB, 0xB1, 0xBC, 0xE4, 0x53, 0x51, 0x4E, 0x00, 0x29, 0x66, 0x05, 0xBC, 0x8E, 0x37, 0x80, 0xCD, 0xD3, 0x40, 0xF7, 0x4F, 0xE0, 0x6B, 0x88, 0xDB, 0xBD, 0xA6, 0xF2, 0x11, 0x9C, 0x26, 0xF8, 0xED, 0xB3, 0x37, 0xB0, 0x77, 0x1D, 0xF0, 0x63, 0x8F, 0x81, 0x07, 0xC0, 0x66, 0x91, 0xA1, 0x8D, 0x06, 0xC1, 0xE9, 0xD4, 0xEA, 0xD7, 0xA0, 0xCB, 0x6F, 0x20, 0x7D, 0xC4, 0xCB, 0x0B, 0x9E, 0x80, 0xB5, 0x3A, 0xDA, 0x57, 0xF5, 0x0E, 0x07, 0x9F, 0x2E, 0x92, 0xC7, 0xBC, 0x6E, 0x85, 0x34, 0xB5, 0x95, 0x15, 0xCA, 0x69, 0x37, 0x7B, 0x2C, 0x1D, 0x5A, 0x13, 0x81, 0x74, 0xA3, 0x3E, 0x9D
|
||||
};
|
||||
|
||||
static const unsigned char app_4_prod_acexsig[0x100] = // app_4_prod_acexsig
|
||||
static const unsigned char app_fw20_2_prod_acexsig[0x100] =
|
||||
{
|
||||
0x04, 0xE3, 0xD1, 0xD2, 0x32, 0xF4, 0x04, 0xE5, 0x79, 0x67, 0x1E, 0x74, 0xD8, 0x1B, 0x8F, 0x6C, 0xEB, 0xE2, 0xFE, 0x1B, 0xCE, 0xAB, 0x92, 0x03, 0xF0, 0x3C, 0xF5, 0x31, 0x07, 0xCE, 0x8E, 0x47, 0xB2, 0xE8, 0x52, 0x8F, 0xFF, 0xA7, 0x1B, 0xE1, 0xFF, 0x58, 0x5E, 0x99, 0xBA, 0x71, 0x90, 0x87, 0x01, 0x92, 0xE8, 0xD0, 0x67, 0x6E, 0x29, 0xD3, 0x1E, 0xA6, 0x22, 0x8F, 0x52, 0xAD, 0x6B, 0xB1, 0xB6, 0xC0, 0xC6, 0x44, 0x5D, 0x41, 0xD8, 0xCE, 0x3A, 0xEB, 0x04, 0x5A, 0x8C, 0x4D, 0x03, 0x9F, 0x31, 0xDC, 0x4E, 0x37, 0xEF, 0x7B, 0x42, 0x02, 0x19, 0x6A, 0x33, 0x60, 0xEF, 0xB9, 0x01, 0x11, 0xAC, 0x82, 0x10, 0xFD, 0x79, 0xD8, 0x2D, 0x5F, 0x42, 0xDE, 0xEC, 0x38, 0x79, 0xF6, 0x70, 0x84, 0x5A, 0xA8, 0x83, 0x58, 0xEF, 0x57, 0x2A, 0x04, 0x1E, 0x9B, 0xAF, 0xB3, 0xCC, 0x67, 0x62, 0xD1, 0x9B, 0xB0, 0xA4, 0x3C, 0x16, 0xB8, 0x0B, 0xC1, 0x7B, 0xE9, 0x39, 0x96, 0x32, 0xF5, 0xC4, 0xA0, 0xAB, 0xE8, 0xEA, 0x2F, 0x2D, 0x83, 0xF4, 0x8C, 0x62, 0xA3, 0x03, 0xDC, 0x6E, 0xAD, 0x9C, 0x46, 0x56, 0xD6, 0xF5, 0xDD, 0xB1, 0x95, 0x47, 0xE9, 0xAB, 0x40, 0x28, 0x87, 0x2B, 0x97, 0x42, 0x1A, 0x71, 0x9F, 0xB7, 0x7D, 0x45, 0x4A, 0x2B, 0xF6, 0xF7, 0xA8, 0x01, 0x14, 0x40, 0x77, 0x14, 0x49, 0x2B, 0x5D, 0x84, 0xA5, 0xC4, 0xA8, 0x10, 0xCD, 0x4B, 0x85, 0x34, 0x58, 0x74, 0x99, 0xD2, 0x44, 0x26, 0x37, 0xC7, 0x7A, 0x7A, 0x60, 0x85, 0x77, 0x73, 0xE9, 0x75, 0xB1, 0x6B, 0xDA, 0x43, 0x02, 0xAD, 0xD2, 0xC6, 0x7F, 0x53, 0xC4, 0xD3, 0x0F, 0x1D, 0xA0, 0x6F, 0xD8, 0x3B, 0xAF, 0xFF, 0x94, 0xF6, 0x27, 0x27, 0x7A, 0xEF, 0xF3, 0x96, 0xA5, 0x29, 0x4A, 0x47, 0xB1, 0x09, 0x2D, 0x34, 0xF5
|
||||
0x33, 0x38, 0x2A, 0x9D, 0xBD, 0xBB, 0x2A, 0xE0, 0x63, 0x1E, 0xAA, 0xA5, 0x5D, 0x43, 0xD5, 0x95, 0xD7, 0xA7, 0xFF, 0x28, 0xA1, 0xD4, 0x2A, 0x70, 0x7E, 0x46, 0x0F, 0x8B, 0x00, 0xA0, 0x7E, 0x74, 0x5D, 0x1C, 0x96, 0x89, 0x5C, 0x38, 0xAF, 0x19, 0xF0, 0x2D, 0x88, 0x28, 0x8B, 0x6D, 0xE4, 0xC9, 0xF5, 0x2F, 0xCD, 0x94, 0xDB, 0xF4, 0x2E, 0x1E, 0xF1, 0x17, 0x2D, 0xB6, 0x1E, 0x21, 0x30, 0x28, 0xCE, 0xEA, 0x2E, 0xED, 0x6F, 0x95, 0xC8, 0x9E, 0xF5, 0x1E, 0x91, 0xC5, 0x38, 0x68, 0x1A, 0x4D, 0x74, 0x91, 0x2C, 0xDA, 0x72, 0xE1, 0xCE, 0x58, 0x2D, 0x4C, 0xD9, 0x9F, 0x24, 0xC1, 0xA2, 0xFA, 0xBD, 0x96, 0x95, 0x95, 0x29, 0x25, 0x58, 0x62, 0x39, 0xDD, 0xE7, 0xD7, 0xD3, 0xBF, 0xDB, 0x35, 0x0C, 0x26, 0xAE, 0x7C, 0xA5, 0x5D, 0x0E, 0x0B, 0x6D, 0xBF, 0x87, 0x72, 0xAA, 0x40, 0xA2, 0x55, 0x89, 0xDF, 0x1B, 0xBA, 0x2D, 0x5E, 0xDC, 0xB3, 0x40, 0x0F, 0x8C, 0xBA, 0xDF, 0xF5, 0xB7, 0x50, 0xC2, 0x94, 0x02, 0x4E, 0xFB, 0x8F, 0x5F, 0x8C, 0xE6, 0xE8, 0x38, 0x28, 0x5F, 0xB6, 0xA2, 0x66, 0x67, 0x73, 0x7F, 0xF8, 0x70, 0xFF, 0xE1, 0x30, 0xEC, 0xCE, 0x0D, 0x61, 0x9A, 0xE2, 0xD9, 0x4B, 0x40, 0xB7, 0xE2, 0x31, 0xC5, 0x6F, 0x06, 0x5C, 0x9A, 0x61, 0x5A, 0x14, 0xF6, 0x36, 0x44, 0xF5, 0x93, 0x30, 0x53, 0xB1, 0x97, 0x44, 0x50, 0x79, 0x9F, 0x3A, 0xFB, 0x2D, 0x42, 0xF1, 0x6C, 0x14, 0x8D, 0x35, 0xD6, 0x16, 0x22, 0xC3, 0x8B, 0x79, 0xFD, 0x26, 0xF8, 0x64, 0x76, 0x53, 0xA1, 0x32, 0x90, 0xBE, 0xA3, 0x9A, 0x6B, 0x5A, 0xCF, 0xC0, 0x34, 0xDE, 0x2F, 0xDC, 0x39, 0x14, 0x8F, 0x98, 0x01, 0x45, 0x57, 0x9E, 0x02, 0x05, 0xEB, 0x8E, 0x6D, 0x16, 0x0B, 0xCF, 0x43, 0xBF, 0xE5, 0xE5
|
||||
};
|
||||
|
||||
static const unsigned char app_fw20_3_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xBF, 0x3C, 0x41, 0xF1, 0xD2, 0xDC, 0x47, 0xBE, 0xF2, 0xAE, 0x18, 0xA0, 0xCD, 0xAD, 0x0B, 0xEA, 0xB0, 0x8B, 0x69, 0x4E, 0x58, 0x36, 0x59, 0x59, 0x18, 0xA9, 0x02, 0x0C, 0xE6, 0xA9, 0x9D, 0xDA, 0x0A, 0x1E, 0xDA, 0x51, 0x08, 0xD9, 0xC3, 0x1F, 0xA3, 0x36, 0x55, 0xDE, 0xC3, 0xA0, 0x24, 0x1C, 0xB8, 0x67, 0x71, 0x98, 0xC0, 0x60, 0x15, 0x72, 0x47, 0x7E, 0xDC, 0x7E, 0xEB, 0x43, 0x5E, 0x35, 0x23, 0x95, 0xB2, 0x34, 0x1F, 0x31, 0xE8, 0xC7, 0x1E, 0xA4, 0x9B, 0x88, 0x51, 0x39, 0x75, 0xEE, 0x92, 0xA6, 0xF9, 0xD5, 0x5C, 0xFE, 0x84, 0xED, 0x5B, 0xE8, 0x3F, 0xC0, 0xBE, 0xA7, 0x49, 0x63, 0x5D, 0xF1, 0x89, 0xDC, 0x79, 0x75, 0xBC, 0xB1, 0xF5, 0x20, 0x2A, 0x50, 0xBC, 0x8D, 0x2F, 0xC0, 0x27, 0x14, 0x85, 0x58, 0x8B, 0x11, 0xE0, 0xBA, 0xDE, 0x5F, 0x41, 0x44, 0xEE, 0x4F, 0x3D, 0xB6, 0x8D, 0x7A, 0x2F, 0x9C, 0xE3, 0x2A, 0xC1, 0x5E, 0x82, 0x04, 0x3C, 0xFD, 0x68, 0xFD, 0x0A, 0x14, 0x91, 0xF8, 0x5E, 0xBA, 0xD1, 0x80, 0xF6, 0xF5, 0x89, 0xE2, 0x12, 0xE1, 0x86, 0xE7, 0xF1, 0x78, 0x6F, 0x43, 0x5C, 0xF7, 0xD1, 0x57, 0xDA, 0x83, 0x1E, 0x6E, 0xEF, 0x3C, 0xDF, 0xED, 0x03, 0x95, 0xB7, 0xD4, 0x15, 0x6E, 0x1C, 0xDE, 0xD3, 0x17, 0x02, 0x52, 0x15, 0xBF, 0xDA, 0xFB, 0x62, 0x2E, 0xB5, 0x47, 0x0A, 0x29, 0x08, 0xC5, 0x3C, 0x3C, 0x17, 0x00, 0xC3, 0x50, 0x13, 0x3C, 0xBF, 0xE6, 0xEF, 0x8A, 0x7C, 0x12, 0x22, 0x13, 0x19, 0x06, 0x56, 0xDE, 0xBC, 0xDC, 0xCC, 0xC5, 0xE7, 0xEE, 0xC4, 0x88, 0x48, 0x47, 0xE3, 0xA9, 0x76, 0xFA, 0x51, 0x7B, 0xB7, 0x1D, 0xAF, 0x48, 0x80, 0x25, 0xFD, 0x1C, 0xB8, 0x8C, 0x21, 0xA3, 0x37, 0x48, 0x77, 0xD6, 0x7E, 0x16, 0x8C, 0xC4, 0x0C, 0x05
|
||||
};
|
||||
|
||||
static const unsigned char app_fw20_3_prod_acexsig[0x100] =
|
||||
{
|
||||
0x5E, 0x3C, 0xF9, 0xB5, 0x50, 0x08, 0x3E, 0x49, 0x71, 0x21, 0x4F, 0x22, 0x5A, 0xDB, 0x32, 0x66, 0x8D, 0x64, 0x48, 0x96, 0x59, 0x47, 0xBF, 0xF0, 0x20, 0x4C, 0x6D, 0xE2, 0xCE, 0xE5, 0x44, 0x58, 0x78, 0x15, 0xCD, 0xA8, 0x58, 0xF7, 0x8A, 0xF2, 0x88, 0x04, 0xF1, 0x05, 0x7F, 0xF6, 0x1A, 0x61, 0x68, 0x22, 0xE9, 0x29, 0x01, 0xEF, 0x1C, 0x33, 0xB8, 0x30, 0x18, 0x96, 0xA2, 0x65, 0x15, 0xE6, 0x9C, 0x57, 0x95, 0x90, 0xF0, 0xB6, 0xBC, 0xB2, 0xCB, 0xDF, 0x43, 0xBD, 0x24, 0x6E, 0xD8, 0xC8, 0xAE, 0xA2, 0x32, 0xEA, 0x8A, 0x90, 0x50, 0x5D, 0xE1, 0x1B, 0x82, 0x72, 0x7C, 0x90, 0x24, 0x55, 0x2D, 0x3D, 0x8B, 0x95, 0xFC, 0xA4, 0xDA, 0xEF, 0x82, 0x2B, 0x25, 0xFA, 0x95, 0x28, 0xD0, 0x14, 0x5E, 0x67, 0xE6, 0x24, 0x0C, 0x5D, 0x56, 0x07, 0x79, 0x4F, 0x38, 0x4E, 0xF8, 0xDC, 0x74, 0x32, 0xFC, 0x92, 0xED, 0x99, 0x28, 0xC2, 0x1A, 0x52, 0xE5, 0x48, 0x21, 0xDB, 0x9C, 0x42, 0xF5, 0x71, 0xD3, 0x61, 0xF5, 0xCC, 0xF5, 0xC7, 0x7D, 0xC9, 0x60, 0x5C, 0x92, 0x68, 0x5A, 0xE6, 0x36, 0xF1, 0x7F, 0xCC, 0x85, 0x4C, 0x5C, 0x50, 0x6F, 0xA1, 0x0B, 0xA6, 0xC5, 0x57, 0x76, 0x6A, 0x81, 0x0B, 0x5B, 0xAB, 0x30, 0x85, 0xA8, 0x6B, 0x29, 0xC9, 0x9A, 0x96, 0xFF, 0xCD, 0x9B, 0x3A, 0x89, 0x94, 0x31, 0xC3, 0x4F, 0x0E, 0xC4, 0xA4, 0x19, 0x2F, 0xA4, 0x86, 0xCD, 0x07, 0x6D, 0xE4, 0xC7, 0x38, 0x32, 0xDF, 0x8E, 0xE7, 0xBE, 0x7B, 0xC1, 0x52, 0xBF, 0x4D, 0xB1, 0x66, 0x06, 0xBD, 0xBE, 0x98, 0xE9, 0x63, 0x9B, 0xFD, 0x43, 0x6B, 0x96, 0x9A, 0x8E, 0x78, 0x97, 0x1B, 0x7C, 0x8A, 0xE2, 0x8B, 0x28, 0xB8, 0xD0, 0xBD, 0x32, 0x05, 0x53, 0x92, 0xF7, 0x24, 0x04, 0xD0, 0x25, 0xB1, 0xF7, 0xDF
|
||||
};
|
||||
|
||||
// EC APP
|
||||
static const unsigned char ecapp_4_prod_hdrpub[0x100] = // ecapp_4_prod_hdrpub
|
||||
static const unsigned char ecapp_fw20_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xE1, 0xF2, 0xF8, 0x92, 0xEC, 0x5D, 0xD9, 0xB2, 0x38, 0xCE, 0x52, 0x72, 0x10, 0x3A, 0x51, 0xB2, 0x47, 0xD9, 0xC7, 0x00, 0xF9, 0xEB, 0xE2, 0x1E, 0xE8, 0x53, 0x2F, 0xFF, 0xB0, 0x0D, 0x9E, 0x1B, 0x21, 0x48, 0x0B, 0xBF, 0x53, 0x48, 0x93, 0x9E, 0x20, 0x55, 0xF2, 0x8F, 0xFE, 0x5E, 0x0D, 0xE6, 0xBF, 0xDD, 0xF5, 0xE6, 0xDF, 0x95, 0xA6, 0x5B, 0x38, 0x81, 0x49, 0x1E, 0xE9, 0x77, 0xB1, 0x96, 0xEA, 0xAA, 0x83, 0x18, 0x09, 0x2F, 0x77, 0x59, 0x16, 0x0B, 0xA9, 0xF1, 0xE8, 0xE8, 0x3A, 0x05, 0xEA, 0x35, 0x4F, 0x1D, 0xD4, 0xF9, 0xC5, 0x1A, 0xA2, 0x9E, 0xF7, 0xBD, 0x3B, 0x90, 0xDA, 0x80, 0xA9, 0xA3, 0xED, 0xFC, 0xE3, 0xBF, 0x7A, 0xF1, 0x43, 0x67, 0x5F, 0x35, 0x24, 0xD1, 0x4B, 0xCF, 0x1F, 0x59, 0xF5, 0xF4, 0x5E, 0x88, 0xDE, 0x3D, 0x19, 0xDD, 0x5E, 0x04, 0xB2, 0x39, 0xB3, 0x29, 0x32, 0xBA, 0xA3, 0x1C, 0x18, 0x75, 0x01, 0xE0, 0xC9, 0x22, 0x23, 0xA1, 0x95, 0x04, 0xA6, 0x0F, 0xFB, 0x5D, 0x25, 0xC2, 0x88, 0x21, 0x5F, 0xFD, 0x13, 0xFE, 0x9F, 0x06, 0xE6, 0x5E, 0x53, 0x69, 0x1A, 0x15, 0xD0, 0xAB, 0xBE, 0x16, 0xC5, 0x01, 0x52, 0xEA, 0x87, 0x5F, 0xFE, 0xE6, 0xC3, 0xD1, 0x4F, 0xB9, 0xC3, 0x6B, 0xBD, 0x7D, 0x4E, 0x1D, 0xA9, 0xCD, 0xD8, 0x89, 0x1B, 0x0E, 0x64, 0x97, 0x57, 0x7E, 0x23, 0xF4, 0x85, 0xD0, 0xE9, 0x68, 0x00, 0xBF, 0x7E, 0x8B, 0xB2, 0x42, 0xED, 0x9B, 0xDD, 0xD8, 0x62, 0x13, 0x26, 0x93, 0xF8, 0x66, 0x0B, 0x32, 0x30, 0x8A, 0x9C, 0xF0, 0x7A, 0x7E, 0xD2, 0x04, 0x5D, 0xF1, 0xF2, 0xB2, 0x4A, 0xF2, 0x18, 0xF4, 0xAF, 0xA4, 0x34, 0x06, 0xE7, 0x09, 0x77, 0x01, 0x8F, 0xEE, 0x17, 0x27, 0x89, 0x9B, 0xF0, 0x76, 0x00, 0x25, 0x01, 0x09, 0xC1, 0x51
|
||||
};
|
||||
|
||||
static const unsigned char ecapp_4_prod_acexsig[0x100] = // ecapp_4_prod_acexsig
|
||||
static const unsigned char ecapp_fw20_prod_acexsig[0x100] =
|
||||
{
|
||||
0x6F, 0x5C, 0xA2, 0xD4, 0xDB, 0x21, 0x69, 0x54, 0xFE, 0x63, 0x55, 0x4C, 0x18, 0x86, 0xFF, 0x47, 0x73, 0x9B, 0x3A, 0x6B, 0xF3, 0x63, 0x47, 0x7E, 0x76, 0x86, 0x3B, 0xF1, 0xC6, 0x05, 0xE4, 0x4B, 0x8B, 0x61, 0xF3, 0x06, 0x02, 0x9B, 0x1B, 0xD1, 0x48, 0xCC, 0x51, 0xAF, 0x78, 0xE5, 0x58, 0xEE, 0xC4, 0x93, 0x83, 0xC2, 0xC9, 0x91, 0xD4, 0x4E, 0x00, 0xAD, 0xA8, 0x12, 0x40, 0x77, 0x20, 0xF8, 0xED, 0x11, 0xC1, 0x1D, 0x71, 0x14, 0x75, 0x1D, 0xB6, 0x89, 0xCC, 0xE1, 0x38, 0x3B, 0x8E, 0xAD, 0xA5, 0x17, 0x88, 0x90, 0xC1, 0xBE, 0x95, 0xBB, 0x0F, 0x0B, 0x12, 0xF9, 0x9E, 0xA9, 0x4F, 0x16, 0x34, 0x06, 0x2D, 0xFD, 0x1B, 0x51, 0x92, 0xE1, 0xD3, 0x7D, 0x6B, 0x31, 0xF0, 0xB4, 0xC0, 0x75, 0x91, 0x75, 0x2A, 0x0C, 0x99, 0x46, 0x2F, 0x4B, 0x34, 0xF3, 0x72, 0x10, 0x04, 0x23, 0x62, 0xC8, 0x94, 0xAD, 0x06, 0xC7, 0x69, 0x2A, 0x78, 0x3A, 0xCE, 0x8B, 0xE0, 0x16, 0x7D, 0x28, 0x35, 0xB2, 0xE1, 0x71, 0x49, 0x1C, 0x55, 0xD7, 0xA8, 0x6D, 0xCB, 0xA6, 0xF3, 0xB9, 0x35, 0xEA, 0x9D, 0xB0, 0x04, 0xE8, 0xB5, 0xEC, 0x15, 0xC6, 0xB1, 0x01, 0x69, 0xFB, 0x01, 0x87, 0x58, 0x83, 0xCC, 0xF5, 0x91, 0xC3, 0x3C, 0x2D, 0x7E, 0xAF, 0x43, 0xB9, 0xCD, 0x95, 0x20, 0xF9, 0x8F, 0x6F, 0x39, 0xDE, 0x95, 0x7B, 0x3F, 0xAD, 0x56, 0xF3, 0x07, 0xA3, 0x52, 0x12, 0x0F, 0x56, 0xA4, 0xF7, 0xAC, 0x55, 0xC2, 0x2F, 0x01, 0x0E, 0xFD, 0x26, 0xC9, 0x06, 0x8B, 0xCB, 0x6A, 0x4A, 0xE3, 0xF4, 0x58, 0x04, 0xAB, 0x64, 0x02, 0x99, 0xB9, 0xC5, 0xDA, 0x1F, 0x96, 0xEA, 0xEE, 0xB0, 0x33, 0xFD, 0xE9, 0x74, 0x90, 0x48, 0x7B, 0x88, 0xDE, 0x72, 0x57, 0x4C, 0x69, 0x47, 0x89, 0x03, 0xD6, 0x6B, 0x22, 0xFF
|
||||
};
|
||||
|
||||
/* CTR_SDK 5 (5.2.3) */
|
||||
/* CTR_SDK 4 (4.2.8) */
|
||||
// APP
|
||||
static const unsigned char app_5_prod_hdrpub[0x100] = // app_4_prod_hdrpub
|
||||
static const unsigned char app_fw21_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xCF, 0x00, 0x9C, 0xB3, 0x20, 0xA0, 0x32, 0x47, 0x65, 0x89, 0xE0, 0xA0, 0x40, 0xC5, 0x57, 0x03, 0xA5, 0xF6, 0x8E, 0x66, 0xF5, 0x20, 0x28, 0xEE, 0xA7, 0x44, 0x3E, 0x8E, 0x4F, 0xC0, 0xC9, 0xD3, 0xE4, 0x3A, 0x0B, 0x31, 0xEC, 0x8F, 0xCC, 0x8D, 0x4C, 0xA6, 0x14, 0x49, 0x14, 0xBE, 0x05, 0xC1, 0xB4, 0x22, 0xAD, 0xCE, 0x1D, 0xCD, 0x29, 0x7B, 0x45, 0x16, 0xE5, 0xB9, 0xD6, 0xD2, 0x7A, 0xD0, 0x63, 0xCE, 0x69, 0xB2, 0xCA, 0xB8, 0x6D, 0x10, 0x9B, 0x99, 0x62, 0xF9, 0x45, 0xC0, 0x2E, 0xB5, 0xA1, 0xCD, 0x6B, 0xAF, 0x77, 0x9B, 0xEF, 0xD8, 0x56, 0x48, 0x75, 0x34, 0x02, 0x6E, 0xBA, 0xBF, 0x30, 0x54, 0xBF, 0x33, 0x4D, 0xB1, 0x36, 0xDC, 0x2A, 0xCD, 0x68, 0x81, 0x8C, 0x4F, 0xCB, 0xC2, 0xA2, 0x1D, 0x6E, 0xB0, 0xC0, 0x02, 0xF5, 0xF8, 0x1C, 0x6C, 0xB4, 0xC9, 0xD6, 0x90, 0x27, 0x50, 0xCA, 0x61, 0xE4, 0x1E, 0xA6, 0x1E, 0x43, 0x94, 0x01, 0x81, 0xC3, 0x69, 0xD0, 0xE2, 0x2C, 0xD7, 0x86, 0x1B, 0x8B, 0x69, 0x4D, 0xF0, 0xF1, 0x54, 0x24, 0x20, 0x91, 0xDD, 0x87, 0x12, 0x0A, 0x23, 0x98, 0x09, 0x63, 0xFD, 0xB4, 0x00, 0x69, 0x06, 0xD2, 0xF1, 0xC3, 0xE7, 0x9D, 0xCC, 0x87, 0x99, 0x01, 0x20, 0xDA, 0xD6, 0xA4, 0x24, 0x58, 0x9A, 0x62, 0x52, 0xF0, 0x30, 0x98, 0x6C, 0x08, 0x90, 0xB4, 0xA6, 0xE4, 0x79, 0x47, 0xF3, 0x1D, 0x58, 0x86, 0x4D, 0x9B, 0xA3, 0xE8, 0xFC, 0x1A, 0x63, 0xC3, 0x2F, 0xDF, 0xD3, 0xC6, 0x3B, 0x8E, 0xDA, 0xFB, 0xEA, 0x6D, 0xE3, 0x92, 0x14, 0xC8, 0x21, 0x2C, 0xE3, 0xF2, 0xE3, 0x31, 0x2E, 0xF6, 0x73, 0x27, 0xE8, 0xF2, 0xD5, 0x38, 0xB7, 0x04, 0x46, 0xA7, 0xBE, 0x92, 0x14, 0x66, 0x1E, 0x8D, 0x88, 0xF7, 0xC0, 0x60, 0xB5, 0x7F, 0xF3, 0xCE, 0x43
|
||||
};
|
||||
|
||||
static const unsigned char app_5_prod_acexsig[0x100] = // app_4_prod_acexsig
|
||||
static const unsigned char app_fw21_prod_acexsig[0x100] =
|
||||
{
|
||||
0x04, 0xE3, 0xD1, 0xD2, 0x32, 0xF4, 0x04, 0xE5, 0x79, 0x67, 0x1E, 0x74, 0xD8, 0x1B, 0x8F, 0x6C, 0xEB, 0xE2, 0xFE, 0x1B, 0xCE, 0xAB, 0x92, 0x03, 0xF0, 0x3C, 0xF5, 0x31, 0x07, 0xCE, 0x8E, 0x47, 0xB2, 0xE8, 0x52, 0x8F, 0xFF, 0xA7, 0x1B, 0xE1, 0xFF, 0x58, 0x5E, 0x99, 0xBA, 0x71, 0x90, 0x87, 0x01, 0x92, 0xE8, 0xD0, 0x67, 0x6E, 0x29, 0xD3, 0x1E, 0xA6, 0x22, 0x8F, 0x52, 0xAD, 0x6B, 0xB1, 0xB6, 0xC0, 0xC6, 0x44, 0x5D, 0x41, 0xD8, 0xCE, 0x3A, 0xEB, 0x04, 0x5A, 0x8C, 0x4D, 0x03, 0x9F, 0x31, 0xDC, 0x4E, 0x37, 0xEF, 0x7B, 0x42, 0x02, 0x19, 0x6A, 0x33, 0x60, 0xEF, 0xB9, 0x01, 0x11, 0xAC, 0x82, 0x10, 0xFD, 0x79, 0xD8, 0x2D, 0x5F, 0x42, 0xDE, 0xEC, 0x38, 0x79, 0xF6, 0x70, 0x84, 0x5A, 0xA8, 0x83, 0x58, 0xEF, 0x57, 0x2A, 0x04, 0x1E, 0x9B, 0xAF, 0xB3, 0xCC, 0x67, 0x62, 0xD1, 0x9B, 0xB0, 0xA4, 0x3C, 0x16, 0xB8, 0x0B, 0xC1, 0x7B, 0xE9, 0x39, 0x96, 0x32, 0xF5, 0xC4, 0xA0, 0xAB, 0xE8, 0xEA, 0x2F, 0x2D, 0x83, 0xF4, 0x8C, 0x62, 0xA3, 0x03, 0xDC, 0x6E, 0xAD, 0x9C, 0x46, 0x56, 0xD6, 0xF5, 0xDD, 0xB1, 0x95, 0x47, 0xE9, 0xAB, 0x40, 0x28, 0x87, 0x2B, 0x97, 0x42, 0x1A, 0x71, 0x9F, 0xB7, 0x7D, 0x45, 0x4A, 0x2B, 0xF6, 0xF7, 0xA8, 0x01, 0x14, 0x40, 0x77, 0x14, 0x49, 0x2B, 0x5D, 0x84, 0xA5, 0xC4, 0xA8, 0x10, 0xCD, 0x4B, 0x85, 0x34, 0x58, 0x74, 0x99, 0xD2, 0x44, 0x26, 0x37, 0xC7, 0x7A, 0x7A, 0x60, 0x85, 0x77, 0x73, 0xE9, 0x75, 0xB1, 0x6B, 0xDA, 0x43, 0x02, 0xAD, 0xD2, 0xC6, 0x7F, 0x53, 0xC4, 0xD3, 0x0F, 0x1D, 0xA0, 0x6F, 0xD8, 0x3B, 0xAF, 0xFF, 0x94, 0xF6, 0x27, 0x27, 0x7A, 0xEF, 0xF3, 0x96, 0xA5, 0x29, 0x4A, 0x47, 0xB1, 0x09, 0x2D, 0x34, 0xF5
|
||||
};
|
||||
|
||||
/* CTR_SDK 5 (5.2.3) */
|
||||
// APP
|
||||
static const unsigned char app_fw23_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xDD, 0x51, 0x85, 0xCB, 0x8C, 0x22, 0xBB, 0x76, 0x08, 0x31, 0xE1, 0xD3, 0x04, 0x30, 0xDB, 0x70, 0x78, 0x6F, 0xD5, 0xCB, 0x79, 0xD4, 0x87, 0x19, 0x3E, 0x39, 0x99, 0x07, 0x12, 0x1C, 0xC9, 0x7C, 0xC9, 0x34, 0x16, 0x37, 0x31, 0xFD, 0x7C, 0x56, 0xB4, 0x53, 0x5D, 0x9D, 0x1F, 0xFE, 0x87, 0x0A, 0x86, 0x2A, 0x9B, 0xF8, 0xE1, 0x2F, 0xE3, 0x98, 0xCD, 0xA0, 0xD2, 0xBF, 0xBF, 0x2D, 0x56, 0x73, 0xC2, 0x7B, 0x38, 0x89, 0x33, 0xA6, 0xC4, 0xC0, 0x7E, 0xF2, 0x54, 0xF6, 0x2F, 0x32, 0xD7, 0x88, 0x88, 0xCD, 0x4D, 0x2B, 0xB5, 0x6D, 0x97, 0xB7, 0x97, 0xF2, 0x5A, 0xCD, 0x93, 0xC8, 0x11, 0x3F, 0x44, 0xB3, 0xF8, 0x2B, 0x45, 0x3F, 0xE1, 0x44, 0x5D, 0x7D, 0xB8, 0x0C, 0x48, 0xD1, 0x53, 0xA8, 0xEF, 0x26, 0xCC, 0x5B, 0x25, 0x82, 0x92, 0x52, 0x2E, 0xAC, 0x32, 0x48, 0x27, 0x4F, 0x24, 0xD7, 0xF8, 0x1B, 0x64, 0x2F, 0x8C, 0x10, 0x84, 0xD3, 0xF7, 0x31, 0x6A, 0xD0, 0x79, 0xC3, 0x19, 0xF3, 0x4A, 0xB7, 0xC7, 0x4B, 0xD8, 0x32, 0x43, 0x29, 0x90, 0xED, 0x93, 0x70, 0x6D, 0xC0, 0x45, 0x1E, 0x6D, 0x3A, 0x8A, 0xCB, 0x43, 0xB1, 0xC3, 0xEB, 0x8D, 0xC0, 0xC3, 0x5C, 0x20, 0xA4, 0xFD, 0xF8, 0xFF, 0xED, 0x4E, 0x5A, 0x15, 0x22, 0x8E, 0x8E, 0xE8, 0x0D, 0x32, 0x0E, 0x15, 0xC4, 0xCF, 0x1F, 0xDF, 0x74, 0x42, 0x73, 0x3D, 0xF8, 0x3F, 0x32, 0x9B, 0xEE, 0xD6, 0xE4, 0x8F, 0x99, 0xAA, 0xF7, 0xFA, 0x72, 0xC0, 0xB6, 0xF6, 0x97, 0x22, 0xDB, 0xDB, 0x2E, 0xD0, 0xBF, 0x40, 0x58, 0x01, 0xE5, 0xBA, 0x07, 0x09, 0x70, 0x1E, 0x8F, 0x8B, 0xAF, 0x73, 0xF9, 0x0E, 0xB2, 0xC7, 0xF4, 0xB8, 0x88, 0xDD, 0xAF, 0xF5, 0x88, 0xA7, 0x1A, 0xE9, 0x39, 0xDF, 0x6C, 0x32, 0xE7, 0x7C, 0xAB, 0x33, 0xCD
|
||||
};
|
||||
|
||||
static const unsigned char app_fw23_prod_acexsig[0x100] =
|
||||
{
|
||||
0xA6, 0x8B, 0x83, 0x98, 0x0A, 0x4C, 0x37, 0x75, 0x54, 0x25, 0xFE, 0xC9, 0x8A, 0x1E, 0x1A, 0x47, 0x0C, 0xD8, 0x12, 0x2E, 0xC0, 0xE4, 0x0D, 0x3D, 0xB9, 0x1E, 0x14, 0xEF, 0x05, 0xD4, 0x4F, 0xC1, 0x9E, 0xFD, 0xDF, 0xF1, 0x2C, 0xDE, 0x45, 0xC2, 0x1A, 0x83, 0xCD, 0x88, 0xFA, 0x51, 0x4F, 0x4A, 0x1F, 0xA3, 0x71, 0x1D, 0xC9, 0x81, 0xF0, 0xB4, 0x68, 0x86, 0x18, 0xCF, 0xF4, 0xE4, 0x58, 0x68, 0x54, 0xAE, 0x00, 0x9E, 0xC4, 0xA5, 0x0B, 0xFF, 0x52, 0x2D, 0x29, 0x83, 0xEF, 0x1F, 0x5A, 0x30, 0xD0, 0xA7, 0x1D, 0x1D, 0x0C, 0x17, 0xAA, 0x7F, 0x54, 0x50, 0xA9, 0x47, 0xA8, 0x2F, 0x31, 0xAE, 0x21, 0x0A, 0x2A, 0xF8, 0xDA, 0x59, 0x1F, 0x90, 0x92, 0x21, 0x56, 0x65, 0x0C, 0x20, 0xBE, 0x1E, 0x53, 0xBF, 0x56, 0x78, 0x38, 0xE0, 0x04, 0xBA, 0x43, 0x6C, 0xB3, 0xFC, 0xFB, 0x1F, 0x38, 0x41, 0x4D, 0xD5, 0xFE, 0xD8, 0x31, 0xC8, 0x53, 0xAD, 0xE1, 0x3F, 0x2C, 0x52, 0x84, 0x40, 0x90, 0x9B, 0xC4, 0xDB, 0xAB, 0x09, 0xAD, 0x41, 0x51, 0x77, 0x9D, 0x0D, 0x06, 0x56, 0x15, 0xEF, 0x45, 0x9D, 0x3A, 0xC3, 0x30, 0x1A, 0x7F, 0xBA, 0xB7, 0xB9, 0xA4, 0xAA, 0x3F, 0x0F, 0xB8, 0x9A, 0x5B, 0xE8, 0xE9, 0x59, 0x7B, 0x5E, 0x5D, 0x0A, 0x3C, 0x5D, 0x54, 0x3D, 0x48, 0x7B, 0x4C, 0x28, 0xD0, 0x91, 0xF6, 0xF1, 0x43, 0x52, 0xBC, 0xE6, 0x08, 0x52, 0x09, 0x0D, 0x64, 0xAE, 0x18, 0x67, 0x3E, 0x8C, 0xAD, 0xE7, 0x45, 0xD4, 0xE1, 0xA0, 0x65, 0xC2, 0x09, 0xE6, 0x44, 0xF4, 0xDE, 0xDD, 0xC5, 0x4C, 0x86, 0x9D, 0x60, 0x81, 0x28, 0x9F, 0x59, 0x78, 0xA5, 0x9F, 0x97, 0x09, 0x11, 0xD9, 0x1C, 0x0B, 0x98, 0x84, 0x83, 0x73, 0xEA, 0xF7, 0xFA, 0x27, 0x99, 0x3C, 0x12, 0xFB, 0x50, 0x43, 0x97, 0x17
|
||||
};
|
||||
|
||||
static const unsigned char app_fw23_2_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xB0, 0x21, 0x4F, 0x59, 0x5E, 0xDA, 0xC8, 0x66, 0x28, 0xAC, 0x0F, 0xD6, 0xAA, 0xAA, 0xC3, 0xCD, 0x2E, 0x0C, 0xAF, 0x37, 0x44, 0xD2, 0x3A, 0x00, 0x5B, 0x8E, 0x06, 0x79, 0x7A, 0x26, 0x71, 0x0E, 0xF6, 0xC9, 0x41, 0x6D, 0x28, 0x9C, 0xC6, 0xF4, 0x74, 0x44, 0xFA, 0xAA, 0x06, 0xF9, 0xB7, 0x0B, 0x83, 0x04, 0xA2, 0x15, 0xA9, 0x2F, 0xD4, 0x66, 0x94, 0x3F, 0xCC, 0xE5, 0x09, 0xA6, 0xAC, 0xFF, 0x7A, 0x7D, 0x27, 0x44, 0x36, 0xE6, 0x83, 0x72, 0x37, 0x69, 0x64, 0x3E, 0x83, 0xFF, 0xED, 0x1A, 0x06, 0xBA, 0x7E, 0x7C, 0xED, 0x2F, 0xB0, 0x99, 0x06, 0x12, 0xC0, 0x74, 0xDF, 0xD3, 0xF9, 0xC9, 0x7D, 0xF1, 0xE1, 0xE3, 0x35, 0x3B, 0x8D, 0x35, 0xB9, 0x0D, 0xF0, 0x30, 0x0E, 0xA8, 0xCC, 0x3E, 0xDE, 0xA5, 0x53, 0x5A, 0xCD, 0x00, 0xCE, 0xBF, 0x6A, 0x62, 0x18, 0x44, 0xA1, 0xBB, 0xDF, 0xDE, 0x78, 0x54, 0xA4, 0x07, 0x3E, 0x63, 0xDB, 0x52, 0x8B, 0x12, 0x20, 0x87, 0x3B, 0x3F, 0xB0, 0xFA, 0xDD, 0x26, 0xB4, 0x32, 0x0B, 0x19, 0x97, 0x91, 0xD6, 0xA6, 0x98, 0xDB, 0xA7, 0xA7, 0xF7, 0xBD, 0x9A, 0xF8, 0x5F, 0x62, 0x9C, 0xFB, 0x70, 0x3D, 0xA2, 0x74, 0x4C, 0x00, 0xA9, 0xCD, 0xF3, 0x98, 0x69, 0x58, 0x40, 0xA1, 0xD8, 0x0F, 0x36, 0x15, 0xAC, 0xCA, 0x1C, 0xC0, 0xD4, 0x80, 0xC8, 0x66, 0x50, 0xBD, 0x78, 0x2C, 0x7C, 0xED, 0x3D, 0x87, 0x20, 0x85, 0x81, 0xAD, 0xBB, 0x8E, 0x6F, 0x79, 0x03, 0xBA, 0xBA, 0xFA, 0x26, 0x73, 0x21, 0xC1, 0xE4, 0xD8, 0x91, 0x1F, 0xE2, 0x86, 0xF1, 0x68, 0x6E, 0xC3, 0xC3, 0x91, 0x2F, 0x73, 0x92, 0xDA, 0x4B, 0x49, 0xE5, 0x4F, 0xD2, 0xA9, 0x82, 0xFE, 0x98, 0x83, 0xCB, 0x4C, 0xA2, 0xC3, 0x3F, 0x0E, 0xCC, 0x38, 0x9E, 0x82, 0xBA, 0xAD, 0x5C, 0xEB
|
||||
};
|
||||
|
||||
static const unsigned char app_fw23_2_prod_acexsig[0x100] =
|
||||
{
|
||||
0x7B, 0xEB, 0x5A, 0xA0, 0x36, 0x1E, 0x1A, 0x75, 0x26, 0x22, 0x72, 0x46, 0xC0, 0x8D, 0x11, 0x8F, 0x9F, 0x7F, 0xDB, 0x8A, 0x06, 0xA9, 0xF9, 0x3E, 0xDC, 0x71, 0x49, 0xD3, 0x40, 0xBE, 0xC7, 0x3A, 0xFF, 0x67, 0xB4, 0x10, 0x23, 0x58, 0x0F, 0xBD, 0x24, 0x39, 0xBF, 0x3B, 0xEB, 0x73, 0x4D, 0x5B, 0xC8, 0xA7, 0x10, 0xDB, 0xFF, 0x54, 0x17, 0x1E, 0x65, 0x29, 0x3C, 0x63, 0x61, 0xB0, 0x9F, 0xC4, 0x80, 0x04, 0x53, 0xDD, 0xE9, 0x9F, 0xA8, 0xC6, 0x4A, 0x41, 0x16, 0x51, 0x4C, 0xF5, 0x7C, 0x38, 0x11, 0x43, 0xF2, 0xFC, 0x4B, 0xCA, 0x87, 0x99, 0x80, 0x20, 0x74, 0xE8, 0x31, 0x59, 0xAB, 0xA2, 0x6E, 0x07, 0xBA, 0xE0, 0x7B, 0xD1, 0x28, 0x1E, 0x37, 0x26, 0xA3, 0x70, 0xD2, 0x25, 0x82, 0xA6, 0x07, 0xE7, 0xBB, 0x18, 0xDE, 0xAA, 0x76, 0xB4, 0xCD, 0x83, 0xAF, 0xC7, 0xC5, 0x03, 0xE8, 0x96, 0x1A, 0xD5, 0x2C, 0x9F, 0xAC, 0x87, 0x70, 0x87, 0x90, 0x69, 0x65, 0x7C, 0xD4, 0x65, 0x0E, 0x64, 0xE1, 0x90, 0x7E, 0x09, 0x98, 0xC5, 0x30, 0x48, 0x5E, 0x7F, 0x4D, 0xB7, 0x08, 0x51, 0xF0, 0xD7, 0x00, 0xBE, 0x23, 0x17, 0xF6, 0x86, 0x09, 0x8B, 0xF2, 0x75, 0x67, 0x31, 0xE3, 0xB0, 0x0D, 0x7A, 0xF0, 0x56, 0x67, 0x21, 0x67, 0xC8, 0x9C, 0x4E, 0x16, 0x34, 0x6D, 0x1A, 0xB7, 0xB5, 0x7B, 0x02, 0x4D, 0x6B, 0xFA, 0xF8, 0x83, 0x09, 0x6C, 0x14, 0x06, 0x9B, 0x1F, 0x2E, 0x26, 0x61, 0xE9, 0xAD, 0xDE, 0xDD, 0x55, 0x92, 0xB3, 0x50, 0x41, 0xCB, 0x75, 0x47, 0xC1, 0xF8, 0x72, 0x44, 0xE5, 0xEA, 0xC9, 0x11, 0x91, 0xAF, 0x4E, 0xC5, 0xBA, 0xEA, 0x2F, 0x26, 0xE4, 0x73, 0xE3, 0x8A, 0xCD, 0x47, 0xB9, 0x53, 0x75, 0xFC, 0x74, 0xD5, 0x74, 0xCF, 0x1F, 0x75, 0x57, 0x9A, 0x1F, 0xA5, 0x56, 0xEF
|
||||
};
|
||||
|
||||
static const unsigned char app_fw23_3_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xB1, 0x75, 0x6B, 0x2D, 0x39, 0xB2, 0x1A, 0xFF, 0x5C, 0xE5, 0x49, 0xF9, 0x96, 0x5A, 0xAF, 0x3F, 0x5E, 0x64, 0xEB, 0xFC, 0x18, 0x50, 0x13, 0xCF, 0x52, 0xB8, 0x06, 0x8A, 0x5A, 0xEC, 0xB1, 0x2F, 0x61, 0x38, 0xFD, 0x9F, 0xC0, 0x2A, 0x51, 0x4F, 0x3B, 0x0E, 0xBA, 0xE7, 0xBA, 0xB8, 0x7C, 0xAA, 0x31, 0xC1, 0x66, 0x38, 0x10, 0x8B, 0xE4, 0x92, 0x42, 0xAB, 0xD7, 0x56, 0x1F, 0xEC, 0x23, 0xF4, 0x75, 0xFD, 0x7D, 0x87, 0xD3, 0xF4, 0x01, 0x3B, 0xA0, 0xF9, 0xD0, 0x17, 0xE4, 0x45, 0xAD, 0xB9, 0xF2, 0xB8, 0x74, 0x7A, 0x24, 0x98, 0x5F, 0x17, 0xD7, 0x21, 0x22, 0x4F, 0xDF, 0x4E, 0x1F, 0x6B, 0x60, 0x84, 0x88, 0x1D, 0xDB, 0xCF, 0x5C, 0xC6, 0xA7, 0xBF, 0x9D, 0x36, 0x88, 0xE2, 0xFD, 0x79, 0x43, 0x95, 0xE8, 0x1E, 0x9F, 0x89, 0x47, 0x40, 0x96, 0xFE, 0xE7, 0xD6, 0x67, 0xDA, 0x3A, 0x3C, 0x81, 0xBD, 0x65, 0x7C, 0xD1, 0xE4, 0xE1, 0x9E, 0x2C, 0xA9, 0xE4, 0xAE, 0x5B, 0xE6, 0x27, 0xAD, 0x25, 0xE6, 0xE4, 0x9F, 0x60, 0xB0, 0x95, 0xC3, 0xCC, 0x4C, 0xEC, 0x6D, 0xFB, 0x70, 0x17, 0xB5, 0x57, 0xC5, 0x47, 0x1C, 0xD2, 0x19, 0x4C, 0xF1, 0x33, 0xF3, 0x83, 0x62, 0x20, 0x8C, 0x23, 0x3D, 0xC3, 0x79, 0xD6, 0xD1, 0x7B, 0x12, 0x8C, 0xA2, 0x1A, 0x9F, 0xF2, 0xC4, 0x01, 0x5E, 0xA0, 0xA4, 0xC9, 0xCC, 0xDC, 0xC3, 0x67, 0xEC, 0x62, 0x81, 0x86, 0x6D, 0x14, 0x2E, 0xF9, 0xC9, 0xF9, 0xD3, 0x7B, 0x4B, 0xC6, 0x1A, 0xD6, 0x1E, 0xA8, 0x20, 0xA9, 0x19, 0xCF, 0xB1, 0xD8, 0xCB, 0xD3, 0xF4, 0x8E, 0x5C, 0xEC, 0x83, 0xD3, 0x54, 0xA2, 0x65, 0x78, 0xFF, 0x4B, 0x7E, 0xC2, 0x2C, 0xFC, 0xBE, 0x90, 0x53, 0x48, 0x06, 0x42, 0x45, 0xBA, 0xCC, 0xCE, 0xE0, 0x70, 0x5C, 0x47, 0xCE, 0xB5, 0xAD
|
||||
};
|
||||
|
||||
static const unsigned char app_fw23_3_prod_acexsig[0x100] =
|
||||
{
|
||||
0x59, 0xB7, 0xA4, 0x4D, 0x58, 0x89, 0x33, 0xA0, 0x85, 0x77, 0xF7, 0x44, 0xE2, 0x14, 0x61, 0xFD, 0x42, 0xDF, 0x42, 0xEE, 0x08, 0x66, 0x2D, 0x28, 0x0C, 0xF9, 0x25, 0x12, 0x45, 0x50, 0x8C, 0x86, 0xF9, 0xCD, 0x86, 0xAB, 0x19, 0x4C, 0x1F, 0x1C, 0x0B, 0xDF, 0x21, 0xB5, 0x9C, 0x89, 0xFA, 0x90, 0xB3, 0x77, 0x3E, 0xA9, 0xCB, 0xDD, 0x6B, 0x15, 0x57, 0x12, 0xA1, 0xC1, 0x02, 0x4A, 0xED, 0xFC, 0x94, 0x02, 0xFF, 0x74, 0x87, 0x42, 0x5D, 0x6F, 0xBD, 0xD5, 0xAE, 0x25, 0xCA, 0x19, 0xF4, 0x89, 0x5A, 0x8E, 0x56, 0x22, 0xA2, 0xC9, 0xDE, 0x15, 0x32, 0xC9, 0x01, 0x43, 0x33, 0x3A, 0xBA, 0xCC, 0x52, 0x98, 0xCD, 0x6E, 0xD4, 0xC4, 0x51, 0x9F, 0xF4, 0xF1, 0xFC, 0xD3, 0x77, 0x22, 0x21, 0xAB, 0x79, 0xAA, 0x44, 0xDD, 0xA5, 0x88, 0xD5, 0x57, 0x26, 0x38, 0xFF, 0xBC, 0x31, 0xAF, 0xF2, 0xB2, 0xF1, 0xF2, 0x13, 0x22, 0xA8, 0xAA, 0x00, 0xA3, 0xFA, 0x82, 0x4A, 0xD6, 0xE6, 0xAF, 0xD7, 0x70, 0x0A, 0xEC, 0x1F, 0xC6, 0x7C, 0xA4, 0x5C, 0xEA, 0x1B, 0xBB, 0x4E, 0xF9, 0x8B, 0xEC, 0x06, 0x88, 0xC6, 0x16, 0x14, 0xB7, 0xCC, 0x77, 0xC1, 0x0B, 0xB4, 0x1D, 0x88, 0xE7, 0xDE, 0x0D, 0x64, 0xDF, 0xD0, 0x71, 0x76, 0xF5, 0x40, 0x38, 0xF5, 0x09, 0xAB, 0x57, 0x91, 0x02, 0x96, 0x39, 0x09, 0x6D, 0x30, 0xEB, 0x4C, 0x69, 0x34, 0x1E, 0xDD, 0xA3, 0x1B, 0xAD, 0xC9, 0xFC, 0xD3, 0xD0, 0x8A, 0x34, 0xD9, 0xDC, 0x48, 0x27, 0x7C, 0x3A, 0xB4, 0x5D, 0xB2, 0x34, 0x56, 0xAA, 0x51, 0x09, 0xD8, 0x74, 0xF0, 0xE3, 0xF2, 0xA0, 0x94, 0xC4, 0x35, 0x4C, 0xFD, 0xE7, 0xFB, 0x51, 0x6A, 0xCD, 0xAA, 0xDE, 0x32, 0x68, 0xE0, 0x5E, 0x3A, 0xC3, 0x62, 0x8E, 0xAB, 0xBA, 0x2B, 0x1D, 0xCE, 0x35, 0x24, 0x3F
|
||||
};
|
||||
|
||||
// EC APP
|
||||
static const unsigned char ecapp_5_prod_hdrpub[0x100] = // ecapp_4_prod_hdrpub
|
||||
static const unsigned char ecapp_fw23_prod_hdrpub[0x100] =
|
||||
{
|
||||
0xC1, 0xFB, 0x30, 0x9C, 0x96, 0xB3, 0xA9, 0x09, 0x62, 0x06, 0xFF, 0xA2, 0x8B, 0xAE, 0xD2, 0xB2, 0xC1, 0x8C, 0x47, 0xA2, 0xC4, 0x49, 0x15, 0x52, 0xE7, 0xD6, 0xA3, 0xEF, 0x7F, 0xD8, 0xB8, 0x28, 0xF1, 0x56, 0x31, 0xF4, 0x6C, 0x23, 0x69, 0xAA, 0x64, 0x8C, 0xC1, 0xD9, 0x37, 0xAA, 0xBB, 0x47, 0xB4, 0xAE, 0x5B, 0xFB, 0x19, 0xFA, 0xC4, 0xD5, 0x89, 0xB0, 0x36, 0x9F, 0xF9, 0x47, 0x56, 0xE8, 0x64, 0xC4, 0xB5, 0x46, 0x3A, 0x18, 0xD5, 0x12, 0x24, 0x61, 0x8D, 0xB2, 0xC8, 0xA6, 0xAC, 0x5C, 0x39, 0x38, 0x6B, 0x34, 0xC4, 0x68, 0x65, 0xF3, 0x72, 0xC7, 0x43, 0x9B, 0x91, 0xE9, 0xC5, 0x48, 0x2F, 0xC9, 0x84, 0xF7, 0xAC, 0xEA, 0xE1, 0x2C, 0xA8, 0xCB, 0x8F, 0xC4, 0x15, 0x4E, 0x85, 0x13, 0x83, 0x6E, 0x7F, 0x44, 0xD9, 0x6C, 0x69, 0x82, 0x38, 0x69, 0xE8, 0x90, 0xA4, 0x82, 0x52, 0xD7, 0xF2, 0x51, 0xAB, 0xEC, 0x26, 0xAD, 0x35, 0x21, 0x40, 0x7B, 0x6D, 0xA6, 0xC2, 0x78, 0xB3, 0xD1, 0xCC, 0xE8, 0x58, 0xC1, 0xF5, 0xC5, 0x47, 0xED, 0x7F, 0xBA, 0x64, 0xD4, 0x24, 0x14, 0x78, 0x8D, 0xD4, 0x81, 0xDE, 0x45, 0x17, 0x30, 0x30, 0x8F, 0xCA, 0x7E, 0x26, 0x74, 0x11, 0x04, 0x21, 0x9E, 0xE9, 0x07, 0x29, 0xEC, 0x20, 0x86, 0x13, 0x7B, 0x56, 0xA4, 0x2D, 0x8A, 0xCB, 0x7C, 0xED, 0x00, 0x84, 0xDE, 0x23, 0xDB, 0x3B, 0x6D, 0xBD, 0x1F, 0xAA, 0x6F, 0xB9, 0x37, 0x2B, 0xCF, 0x6E, 0x88, 0x3E, 0xDB, 0x1A, 0x79, 0xEC, 0x41, 0x8C, 0x63, 0xDA, 0x83, 0x2F, 0xFC, 0x8E, 0x65, 0xAB, 0x71, 0xAC, 0x94, 0xBC, 0x97, 0x8B, 0x5A, 0x04, 0x18, 0x72, 0xF4, 0x22, 0x37, 0x3B, 0xB4, 0x02, 0xF0, 0x25, 0x50, 0x78, 0xDC, 0xCF, 0x76, 0xBD, 0x59, 0xFC, 0x4C, 0xC6, 0x93, 0xCD, 0x64, 0x55, 0x59
|
||||
};
|
||||
|
||||
static const unsigned char ecapp_5_prod_acexsig[0x100] = // ecapp_4_prod_acexsig
|
||||
static const unsigned char ecapp_fw23_prod_acexsig[0x100] =
|
||||
{
|
||||
0x70, 0xF8, 0x6E, 0x2F, 0xC5, 0xE1, 0x2A, 0x05, 0x29, 0x3F, 0x04, 0xA1, 0xD8, 0x30, 0xEC, 0x09, 0x60, 0xC0, 0x90, 0x17, 0x53, 0x1E, 0x3C, 0x14, 0x56, 0xE2, 0xF9, 0x80, 0xD9, 0x22, 0x4A, 0xA7, 0xC7, 0xC6, 0x39, 0xC1, 0x77, 0x2F, 0xC5, 0x35, 0x2D, 0x7E, 0xC9, 0xED, 0x7E, 0xB6, 0x8F, 0x9A, 0x5F, 0xF1, 0x4B, 0xE2, 0xE7, 0x25, 0x37, 0xD1, 0xB6, 0xE5, 0x12, 0x00, 0xA2, 0x84, 0x8F, 0x43, 0xBB, 0xB7, 0x1E, 0x7B, 0xBA, 0x42, 0x45, 0x04, 0x6F, 0xB5, 0x39, 0x67, 0x2E, 0xD1, 0xA2, 0x01, 0xF9, 0x87, 0xF8, 0x6E, 0x88, 0x5B, 0x82, 0xB7, 0xA3, 0xCE, 0xA7, 0xE6, 0xD3, 0xB3, 0x73, 0x93, 0xCC, 0xD1, 0x69, 0x03, 0x53, 0xFD, 0xD3, 0xF1, 0x46, 0xF4, 0xAB, 0xC9, 0xB3, 0xEA, 0x09, 0xC4, 0x36, 0x27, 0x09, 0xFF, 0xBF, 0xA4, 0xF3, 0xC8, 0xB5, 0xD2, 0xC8, 0x0D, 0xC2, 0x6F, 0xA3, 0x7D, 0x63, 0xAD, 0xBE, 0x99, 0x2F, 0xAD, 0x0C, 0xC4, 0x22, 0xC5, 0x3C, 0x17, 0xF8, 0x06, 0x96, 0xBA, 0x1F, 0xEF, 0x77, 0xF5, 0xC6, 0xB4, 0x87, 0x8F, 0x27, 0xE3, 0x38, 0x27, 0x16, 0x13, 0x99, 0x70, 0x35, 0xF2, 0xB1, 0x79, 0x3C, 0x99, 0xB6, 0x2B, 0x32, 0x3D, 0x0F, 0x9A, 0x2D, 0xDB, 0x61, 0xAF, 0x76, 0x74, 0xBF, 0x9E, 0x04, 0x3B, 0xE7, 0xEA, 0xC6, 0x34, 0xC1, 0x53, 0xFF, 0x8E, 0x10, 0x1E, 0x3E, 0x6E, 0x72, 0xAB, 0x75, 0x13, 0x44, 0x94, 0x91, 0x94, 0x34, 0x45, 0xD0, 0x44, 0xD7, 0xC9, 0x17, 0x62, 0xC3, 0xB9, 0x72, 0xE2, 0x88, 0x6A, 0x8C, 0x1D, 0xEF, 0xF2, 0x93, 0x22, 0xF6, 0x88, 0xFC, 0x29, 0xB4, 0x8A, 0x9D, 0xF2, 0x4E, 0xF9, 0x3E, 0xEA, 0x4D, 0x41, 0x00, 0xB3, 0xC4, 0x8B, 0x80, 0xE0, 0xB2, 0xB4, 0xB4, 0x2B, 0xA5, 0xC0, 0x0F, 0x57, 0x90, 0xED, 0x64, 0x8D, 0xC0, 0xEE
|
||||
};
|
||||
|
||||
/* SDK 7 (7.1.0) */
|
||||
// APP
|
||||
static const unsigned char app_7_prod_hdrpub[0x100] =
|
||||
static const unsigned char app_fw27_prod_hdrpub[0x100] =
|
||||
{
|
||||
0x9B, 0x3B, 0x52, 0x2D, 0x61, 0xF5, 0x0D, 0x14, 0x96, 0x09, 0x7A, 0x66, 0xC9, 0x86, 0x4C, 0x51, 0x61, 0x7D, 0xF8, 0x9B, 0xFD, 0xB0, 0x3E, 0x44, 0xC5, 0x0D, 0xC2, 0x6B, 0x6C, 0x66, 0x63, 0x3E, 0xE7, 0xC8, 0x04, 0xCB, 0x06, 0xC8, 0x35, 0xC5, 0x6D, 0xDB, 0x38, 0x36, 0xC5, 0x54, 0x32, 0xF0, 0x60, 0x11, 0x44, 0x9F, 0xD9, 0xFA, 0x6A, 0x43, 0xE1, 0x79, 0x56, 0xBF, 0xCF, 0xDD, 0xA8, 0x35, 0x15, 0x23, 0x51, 0xF9, 0x4B, 0xDA, 0x1A, 0xD9, 0x9D, 0x28, 0xF6, 0xCC, 0x1D, 0x53, 0x00, 0xC0, 0x3C, 0x13, 0x32, 0xBC, 0x7F, 0x75, 0x82, 0xCD, 0x79, 0xEF, 0x65, 0xBC, 0xCA, 0x98, 0x31, 0x0A, 0x7B, 0xEF, 0x18, 0xD8, 0xF3, 0x8D, 0x3A, 0x10, 0x22, 0xA0, 0xF2, 0x8D, 0xA5, 0xA8, 0xBE, 0xA0, 0x62, 0xEC, 0xE2, 0xC7, 0x6C, 0xCF, 0x06, 0x6B, 0xA7, 0xB5, 0xB8, 0x8C, 0xD5, 0x8E, 0xEF, 0xE3, 0x42, 0xC9, 0xAD, 0x44, 0x46, 0x3A, 0x4E, 0x77, 0x63, 0x02, 0xB4, 0x4E, 0xB4, 0x42, 0x65, 0x1D, 0x68, 0x98, 0x37, 0x7A, 0x27, 0x87, 0x31, 0xBE, 0x48, 0xFA, 0x4E, 0xD3, 0x85, 0xA6, 0xD6, 0xD2, 0x2D, 0xCD, 0x10, 0xC9, 0x13, 0x59, 0x12, 0x48, 0x14, 0x67, 0x3E, 0x40, 0xD3, 0xF8, 0x60, 0xA0, 0xBD, 0x77, 0x31, 0x76, 0x78, 0x85, 0x55, 0x53, 0x16, 0xF1, 0xB9, 0xFF, 0x7F, 0x3D, 0x9A, 0xF1, 0x33, 0x1E, 0x67, 0x8F, 0x6B, 0x4A, 0x7A, 0x79, 0x54, 0x8B, 0x43, 0xB5, 0xC2, 0xAF, 0xB8, 0x75, 0x11, 0xDE, 0x4D, 0x34, 0x6A, 0xD6, 0x5A, 0x3B, 0x48, 0x1F, 0x41, 0x9D, 0xF4, 0x58, 0x90, 0x67, 0xA8, 0x71, 0xD4, 0x09, 0x67, 0xF7, 0x55, 0xEF, 0xD3, 0x7C, 0x7D, 0x2F, 0x76, 0x84, 0x70, 0x6E, 0xAA, 0x75, 0x7D, 0xA9, 0x95, 0x42, 0xEF, 0x28, 0x29, 0x48, 0xCD, 0x79, 0xA8, 0x16, 0xB6, 0xB5
|
||||
};
|
||||
|
||||
static const unsigned char app_7_prod_acexsig[0x100] =
|
||||
static const unsigned char app_fw27_prod_acexsig[0x100] =
|
||||
{
|
||||
0x06, 0xDD, 0x68, 0x17, 0xAA, 0x40, 0x3A, 0x75, 0xD2, 0xCF, 0xA2, 0x5A, 0xC8, 0x1B, 0x74, 0x9D, 0x91, 0xCD, 0x38, 0x4E, 0xCA, 0x19, 0x60, 0x8E, 0x39, 0x71, 0x6C, 0xB9, 0xF9, 0x9F, 0x68, 0x44, 0xCF, 0x33, 0x94, 0x54, 0x72, 0xCC, 0xC6, 0x33, 0x96, 0x9F, 0x12, 0x07, 0xE9, 0x38, 0x87, 0x70, 0x11, 0x51, 0xFD, 0xBF, 0xD9, 0x2D, 0xFA, 0x3F, 0x70, 0x42, 0x75, 0x39, 0xE3, 0x97, 0x85, 0xAF, 0x7B, 0xC5, 0x87, 0x9B, 0x0B, 0xF9, 0xE4, 0x1C, 0xC5, 0x6B, 0x44, 0x2A, 0x10, 0x14, 0x86, 0xAA, 0xFE, 0x9E, 0x5B, 0x1D, 0x15, 0xBA, 0x8C, 0x34, 0xA2, 0xAF, 0x14, 0xD0, 0xD4, 0x0E, 0x7B, 0x3A, 0xD5, 0x3C, 0x53, 0xDB, 0x7C, 0xBE, 0x44, 0x58, 0x79, 0x42, 0x23, 0x3A, 0x77, 0xA3, 0x2C, 0xB9, 0xEB, 0x62, 0x19, 0x94, 0x2B, 0xA0, 0x67, 0x94, 0xC6, 0xB2, 0x90, 0xC6, 0x61, 0xFD, 0x43, 0xEC, 0xEA, 0x27, 0x7E, 0xA6, 0xB1, 0xED, 0xA9, 0x67, 0xED, 0x56, 0x91, 0x90, 0xF9, 0x32, 0x4E, 0xC3, 0x29, 0x5A, 0x84, 0x4C, 0xAB, 0x99, 0x75, 0x40, 0x8E, 0x19, 0xD9, 0x12, 0xD1, 0x06, 0x2D, 0xD0, 0x2C, 0xD9, 0x6C, 0x41, 0x35, 0x64, 0xDB, 0x80, 0x63, 0xB2, 0x01, 0xF8, 0x29, 0xAB, 0xF5, 0x70, 0x79, 0x4E, 0x0F, 0xFA, 0x23, 0x20, 0x2E, 0x04, 0x75, 0x48, 0x15, 0x9B, 0x71, 0xD5, 0x85, 0x09, 0x67, 0x7D, 0xAC, 0x6A, 0xFA, 0xC0, 0x16, 0xAF, 0x58, 0x26, 0xCD, 0x6F, 0x1F, 0xB8, 0xF5, 0x8D, 0xD1, 0x7D, 0x3D, 0x70, 0x2F, 0x08, 0xB8, 0x23, 0x61, 0x24, 0xAE, 0x94, 0x31, 0xA3, 0xBD, 0x1E, 0x18, 0xD7, 0x82, 0x92, 0xDD, 0x11, 0x79, 0x7D, 0x1F, 0xEC, 0x03, 0x08, 0x82, 0xCC, 0x52, 0x62, 0xC9, 0x27, 0x2D, 0x08, 0xD5, 0x6B, 0x4E, 0x86, 0x2E, 0x3F, 0x50, 0x5C, 0xA3, 0xC1, 0xDF, 0xF5
|
||||
};
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
#endif
|
||||
|
||||
// AES KEYS
|
||||
static const unsigned char ctr_unfixed_ncch_keyX_dpki[2][16] = // Dummy
|
||||
static const unsigned char dev_unfixed_ncch_keyX[2][16] = // Dummy
|
||||
{
|
||||
{0x82, 0xAD, 0xED, 0xC7, 0xBA, 0x0A, 0x3F, 0x3D, 0x5F, 0xDD, 0x30, 0x0F, 0x0E, 0x9B, 0xE1, 0x5B} , // Normal
|
||||
{0xE5, 0x70, 0x6F, 0x65, 0x6A, 0xF4, 0xD9, 0x3F, 0x1E, 0x2F, 0x29, 0x3F, 0x16, 0x15, 0x4E, 0xD8} , // 7.X new Crypto
|
||||
};
|
||||
|
||||
static const unsigned char ctr_fixed_ncch_key_dpki[2][16] =
|
||||
static const unsigned char dev_fixed_ncch_key[2][16] =
|
||||
{
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} , // NormalFixedKey
|
||||
{0x52, 0x7C, 0xE6, 0x30, 0xA9, 0xCA, 0x30, 0x5F, 0x36, 0x96, 0xF3, 0xCD, 0xE9, 0x54, 0x19, 0x4B} , // systemFixedKey
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} , // Normal FixedKey
|
||||
{0x52, 0x7C, 0xE6, 0x30, 0xA9, 0xCA, 0x30, 0x5F, 0x36, 0x96, 0xF3, 0xCD, 0xE9, 0x54, 0x19, 0x4B} , // System FixedKey
|
||||
};
|
||||
|
||||
static const unsigned char ctr_common_etd_key_dpki[2][16] =
|
||||
|
||||
+31
-19
@@ -113,7 +113,7 @@ int get_ExHeaderSettingsFromNcchset(exheader_settings *exhdrset, ncch_settings *
|
||||
/* Transfer settings */
|
||||
exhdrset->keys = ncchset->keys;
|
||||
exhdrset->rsf = ncchset->rsfSet;
|
||||
exhdrset->useAccessDescPreset = ncchset->keys->accessDescSign.presetType != not_preset;
|
||||
exhdrset->useAccessDescPreset = ncchset->keys->accessDescSign.presetType != desc_preset_NONE;
|
||||
|
||||
/* Creating Output Buffer */
|
||||
ncchset->sections.exhdr.size = 0x800;
|
||||
@@ -158,9 +158,9 @@ int get_ExHeaderSettingsFromNcchset(exheader_settings *exhdrset, ncch_settings *
|
||||
|
||||
/* Set Simple Flags */
|
||||
if(ncchset->options.CompressCode)
|
||||
exhdrset->exHdr->codeSetInfo.flag |= Compress;
|
||||
exhdrset->exHdr->codeSetInfo.flag |= infoflag_COMPRESS_EXEFS_0;
|
||||
if(ncchset->options.UseOnSD)
|
||||
exhdrset->exHdr->codeSetInfo.flag |= RetailSDAppFlag;
|
||||
exhdrset->exHdr->codeSetInfo.flag |= infoflag_SD_APPLICATION;
|
||||
if(!ncchset->options.UseRomFS) // Move this later
|
||||
exhdrset->exHdr->arm11SystemLocalCapabilities.storageInfo.otherAttributes |= attribute_NOT_USE_ROMFS;
|
||||
|
||||
@@ -187,10 +187,9 @@ int get_ExHeaderSettingsFromYaml(exheader_settings *exhdrset)
|
||||
if(!exhdrset->useAccessDescPreset){
|
||||
result = get_ExHeaderARM11KernelInfo(&exhdrset->exHdr->arm11KernelCapabilities, exhdrset->rsf);
|
||||
if(result) goto finish;
|
||||
|
||||
}
|
||||
result = get_ExHeaderARM9AccessControlInfo(&exhdrset->exHdr->arm9AccessControlInfo, exhdrset->rsf);
|
||||
if(result) goto finish;
|
||||
}
|
||||
|
||||
finish:
|
||||
return result;
|
||||
@@ -247,9 +246,9 @@ int get_ExHeaderDependencyList(u8 *DependencyList, rsf_settings *rsf)
|
||||
int get_ExHeaderSystemInfo(exhdr_SystemInfo *SystemInfo, rsf_settings *rsf)
|
||||
{
|
||||
/* SaveDataSize */
|
||||
if(rsf->Rom.SaveDataSize){
|
||||
if(rsf->SystemControlInfo.SaveDataSize){
|
||||
u64 SaveDataSize = 0;
|
||||
int ret = GetSaveDataSizeFromString(&SaveDataSize,rsf->Rom.SaveDataSize);
|
||||
int ret = GetSaveDataSizeFromString(&SaveDataSize,rsf->SystemControlInfo.SaveDataSize,"EXHEADER");
|
||||
if(ret) return ret;
|
||||
u64_to_u8(SystemInfo->savedataSize,SaveDataSize,LE);
|
||||
}
|
||||
@@ -1142,8 +1141,9 @@ int get_ExHeaderARM9AccessControlInfo(exhdr_ARM9AccessControlInfo *arm9, rsf_set
|
||||
arm9->descriptors[15] = strtol(rsf->AccessControlInfo.DescVersion,NULL,0);
|
||||
}
|
||||
else{
|
||||
ErrorParamNotFound("AccessControlInfo/DescVersion");
|
||||
return EXHDR_BAD_YAML_OPT;
|
||||
//ErrorParamNotFound("AccessControlInfo/DescVersion");
|
||||
//return EXHDR_BAD_YAML_OPT;
|
||||
arm9->descriptors[15] = 2; // Makerom generates a desc version 2 anyway, so if not specified, it will be set to 2
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -1212,10 +1212,16 @@ int GetDependencyList_frm_exhdr(u8 *Dest, extended_hdr *hdr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ExHeader Settings Read from Yaml */
|
||||
int GetSaveDataSizeFromString(u64 *out, char *string)
|
||||
/* ExHeader Settings Read from RSF */
|
||||
int GetSaveDataSizeFromString(u64 *out, char *string, char *moduleName)
|
||||
{
|
||||
if(!string){
|
||||
*out = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
u64 SaveDataSize = strtoull(string,NULL,10);
|
||||
|
||||
if(strstr(string,"K")){
|
||||
char *str = strstr(string,"K");
|
||||
if(strcmp(str,"K") == 0 || strcmp(str,"KB") == 0 ){
|
||||
@@ -1235,10 +1241,16 @@ int GetSaveDataSizeFromString(u64 *out, char *string)
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(moduleName)
|
||||
fprintf(stderr,"[%s ERROR] Invalid save data size format.\n",moduleName);
|
||||
else
|
||||
fprintf(stderr,"[ERROR] Invalid save data size format.\n");
|
||||
return EXHDR_BAD_YAML_OPT;
|
||||
}
|
||||
if((SaveDataSize & 65536) != 0){
|
||||
if(moduleName)
|
||||
fprintf(stderr,"[%s ERROR] Save data size must be aligned to 64K.\n",moduleName);
|
||||
else
|
||||
fprintf(stderr,"[ERROR] Save data size must be aligned to 64K.\n");
|
||||
return EXHDR_BAD_YAML_OPT;
|
||||
}
|
||||
@@ -1249,22 +1261,22 @@ int GetSaveDataSizeFromString(u64 *out, char *string)
|
||||
int GetSaveDataSize_rsf(u64 *SaveDataSize, user_settings *usrset)
|
||||
{
|
||||
|
||||
if(usrset->common.rsfSet.Rom.SaveDataSize){
|
||||
*SaveDataSize = strtoull(usrset->common.rsfSet.Rom.SaveDataSize,NULL,10);
|
||||
if(strstr(usrset->common.rsfSet.Rom.SaveDataSize,"K")){
|
||||
char *str = strstr(usrset->common.rsfSet.Rom.SaveDataSize,"K");
|
||||
if(usrset->common.rsfSet.SystemControlInfo.SaveDataSize){
|
||||
*SaveDataSize = strtoull(usrset->common.rsfSet.SystemControlInfo.SaveDataSize,NULL,10);
|
||||
if(strstr(usrset->common.rsfSet.SystemControlInfo.SaveDataSize,"K")){
|
||||
char *str = strstr(usrset->common.rsfSet.SystemControlInfo.SaveDataSize,"K");
|
||||
if(strcmp(str,"K") == 0 || strcmp(str,"KB") == 0 ){
|
||||
*SaveDataSize = *SaveDataSize*KB;
|
||||
}
|
||||
}
|
||||
else if(strstr(usrset->common.rsfSet.Rom.SaveDataSize,"M")){
|
||||
char *str = strstr(usrset->common.rsfSet.Rom.SaveDataSize,"M");
|
||||
else if(strstr(usrset->common.rsfSet.SystemControlInfo.SaveDataSize,"M")){
|
||||
char *str = strstr(usrset->common.rsfSet.SystemControlInfo.SaveDataSize,"M");
|
||||
if(strcmp(str,"M") == 0 || strcmp(str,"MB") == 0 ){
|
||||
*SaveDataSize = *SaveDataSize*MB;
|
||||
}
|
||||
}
|
||||
else if(strstr(usrset->common.rsfSet.Rom.SaveDataSize,"G")){
|
||||
char *str = strstr(usrset->common.rsfSet.Rom.SaveDataSize,"G");
|
||||
else if(strstr(usrset->common.rsfSet.SystemControlInfo.SaveDataSize,"G")){
|
||||
char *str = strstr(usrset->common.rsfSet.SystemControlInfo.SaveDataSize,"G");
|
||||
if(strcmp(str,"G") == 0 || strcmp(str,"GB") == 0 ){
|
||||
*SaveDataSize = *SaveDataSize*GB;
|
||||
}
|
||||
|
||||
+10
-11
@@ -9,8 +9,8 @@ typedef enum
|
||||
|
||||
typedef enum
|
||||
{
|
||||
Compress = 1,
|
||||
RetailSDAppFlag = 2,
|
||||
infoflag_COMPRESS_EXEFS_0 = 1,
|
||||
infoflag_SD_APPLICATION = 2,
|
||||
} system_info_flags;
|
||||
|
||||
typedef enum
|
||||
@@ -50,7 +50,7 @@ typedef enum
|
||||
|
||||
typedef enum
|
||||
{
|
||||
fsaccess_CATEGORY_SYSTEM_APPLICATION = (1 << 0), // 0x00000001
|
||||
fsaccess_CATEGORY_SYSTEM_APPLICATION = (1 << 0), // 0x00000001 used by all sys apps?
|
||||
fsaccess_CATEGORY_HARDWARE_CHECK = (1 << 1), // 0x00000002
|
||||
fsaccess_CATEGORY_FILE_SYSTEM_TOOL = (1 << 2), // 0x00000004
|
||||
fsaccess_DEBUG = (1 << 3), // 0x00000008
|
||||
@@ -63,14 +63,14 @@ typedef enum
|
||||
fsaccess_CTR_NAND_RW = (1 << 10), // 0x00000400
|
||||
fsaccess_CTR_NAND_RO_WRITE = (1 << 11), // 0x00000800
|
||||
fsaccess_CATEGORY_SYSTEM_SETTINGS = (1 << 12), // 0x00001000
|
||||
fsaccess_CARD_BOARD = (1 << 13), // 0x00002000
|
||||
fsaccess_CARD_BOARD = (1 << 13), // 0x00002000 probably used by sys transfer
|
||||
fsaccess_EXPORT_IMPORT_IVS = (1 << 14), // 0x00004000
|
||||
fsaccess_DIRECT_SDMC_WRITE = (1 << 15), // 0x00008000
|
||||
fsaccess_SWITCH_CLEANUP = (1 << 16), // 0x00010000
|
||||
fsaccess_SAVE_DATA_MOVE = (1 << 17), // 0x00020000
|
||||
fsaccess_SHOP = (1 << 18), // 0x00040000
|
||||
fsaccess_SHELL = (1 << 19), // 0x00080000
|
||||
fsaccess_CATEGORY_HOME_MENU = (1 << 20), // 0x00100000
|
||||
fsaccess_SWITCH_CLEANUP = (1 << 16), // 0x00010000 reference to Sys Transfer?
|
||||
fsaccess_SAVE_DATA_MOVE = (1 << 17), // 0x00020000 used by save transfer tool
|
||||
fsaccess_SHOP = (1 << 18), // 0x00040000 probably used by eshop
|
||||
fsaccess_SHELL = (1 << 19), // 0x00080000 reference to "Nintendo [User Interface] Shell" (NS)?
|
||||
fsaccess_CATEGORY_HOME_MENU = (1 << 20), // 0x00100000 used by homemenu
|
||||
} file_system_access;
|
||||
|
||||
typedef enum
|
||||
@@ -226,8 +226,7 @@ int GetDependencyList_frm_exhdr(u8 *Dest,extended_hdr *hdr);
|
||||
void GetCoreVersion_frm_exhdr(u8 *Dest, extended_hdr *hdr);
|
||||
|
||||
/* ExHeader Settings Read from Yaml */
|
||||
int GetSaveDataSize_rsf(u64 *SaveDataSize, user_settings *usrset);
|
||||
int GetSaveDataSizeFromString(u64 *out, char *string);
|
||||
int GetSaveDataSizeFromString(u64 *out, char *string, char *moduleName);
|
||||
int GetRemasterVersion_rsf(u16 *RemasterVersion, user_settings *usrset);
|
||||
|
||||
void ErrorParamNotFound(char *string);
|
||||
@@ -25,6 +25,10 @@ int SetCaCert(keys_struct *keys, u8 *Cert);
|
||||
int SetTikCert(keys_struct *keys, u8 *Cert);
|
||||
int SetTmdCert(keys_struct *keys, u8 *Cert);
|
||||
|
||||
int LoadKeysFromResources(keys_struct *keys);
|
||||
int LoadKeysFromKeyfile(keys_struct *keys);
|
||||
void CheckAccessDescKey(keys_struct *keys);
|
||||
void DumpKeyset(keys_struct *keys);
|
||||
|
||||
// Code
|
||||
void InitKeys(keys_struct *keys)
|
||||
@@ -44,16 +48,37 @@ void PrintBadKeySize(char *path, u32 size)
|
||||
|
||||
int SetKeys(keys_struct *keys)
|
||||
{
|
||||
if(keys->keyset == pki_TEST){ // Ergo False Sign
|
||||
int result = 0;
|
||||
result = LoadKeysFromResources(keys);
|
||||
if(result) return KEYSET_ERROR;
|
||||
|
||||
if(!keys->keysetLoaded){
|
||||
result = LoadKeysFromKeyfile(keys);
|
||||
if(result) return KEYSET_ERROR;
|
||||
}
|
||||
|
||||
CheckAccessDescKey(keys);
|
||||
|
||||
if(keys->dumpkeys)
|
||||
DumpKeyset(keys);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int LoadKeysFromResources(keys_struct *keys)
|
||||
{
|
||||
if(keys->keyset == pki_TEST){
|
||||
keys->keysetLoaded = true;
|
||||
/* AES Keys */
|
||||
// CIA
|
||||
//SetCommonKey(keys,(u8*)zeros_aesKey,1);
|
||||
if(keys->aes.currentCommonKey > 0xff)
|
||||
SetCurrentCommonKey(keys,1);
|
||||
SetCurrentCommonKey(keys,0);
|
||||
|
||||
// NCCH
|
||||
keys->aes.normalKey = (u8*)zeros_aesKey;
|
||||
keys->aes.normalKey = NULL;
|
||||
keys->aes.systemFixedKey = NULL;
|
||||
//SetNormalKey(keys,zeros_aesKey);
|
||||
//SetSystemFixedKey(keys,(u8*)zeros_aesKey);
|
||||
|
||||
/* RSA Keys */
|
||||
@@ -71,154 +96,9 @@ int SetKeys(keys_struct *keys)
|
||||
SetTikCert(keys,(u8*)xsC_tpki_cert);
|
||||
SetTmdCert(keys,(u8*)cpB_tpki_cert);
|
||||
}
|
||||
else if(keys->keyset == pki_CUSTOM || keys->keyset == pki_BETA){
|
||||
char *cwd = calloc(100,sizeof(char));
|
||||
getcwdir(cwd,100);
|
||||
|
||||
chdir(keys->keydir);
|
||||
|
||||
// NCCH
|
||||
keys->aes.normalKey = (u8*)zeros_aesKey;
|
||||
if(DoesFileExist("systemfixed.aesKey")){
|
||||
keys->aes.systemFixedKey = ImportFile("systemfixed.aesKey",16);
|
||||
if(!keys->aes.systemFixedKey)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
// commonKeys
|
||||
char common_key_name[30];
|
||||
for(int i = 0; i < 256; i++){
|
||||
memset(common_key_name,0,sizeof(char)*30);
|
||||
sprintf(common_key_name,"common_etd_%d.aesKey",i);
|
||||
if(DoesFileExist(common_key_name)){
|
||||
keys->aes.commonKey[i] = ImportFile(common_key_name,16);
|
||||
if(!keys->aes.commonKey[i])
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
if(keys->aes.currentCommonKey > 0xff)
|
||||
SetCurrentCommonKey(keys,i);
|
||||
}
|
||||
}
|
||||
|
||||
// Certs
|
||||
if(DoesFileExist("ca_cpki.cert")){
|
||||
keys->certs.caCert = ImportFile("ca_cpki.cert",0);
|
||||
if(!keys->certs.caCert)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("ca_cpki.cert");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("xs_cpki.cert")){
|
||||
keys->certs.xsCert = ImportFile("xs_cpki.cert",0);
|
||||
if(!keys->certs.xsCert)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("xs_cpki.cert");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("cp_cpki.cert")){
|
||||
keys->certs.cpCert = ImportFile("cp_cpki.cert",0);
|
||||
if(!keys->certs.cpCert)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("cp_cpki.cert");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
// RSA Keys
|
||||
if(DoesFileExist("cp_cpki.rsaPubKey")){
|
||||
keys->rsa.cpPub = ImportFile("cp_cpki.rsaPubKey",RSA_2048_KEY_SIZE);
|
||||
if(!keys->rsa.cpPub)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("cp_cpki.rsaPubKey");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("cp_cpki.rsaPvtKey")){
|
||||
keys->rsa.cpPvt = ImportFile("cp_cpki.rsaPvtKey",RSA_2048_KEY_SIZE);
|
||||
if(!keys->rsa.cpPvt)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("cp_cpki.rsaPvtKey");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("xs_cpki.rsaPubKey")){
|
||||
keys->rsa.xsPub = ImportFile("xs_cpki.rsaPubKey",RSA_2048_KEY_SIZE);
|
||||
if(!keys->rsa.xsPub)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("xs_cpki.rsaPubKey");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("xs_cpki.rsaPvtKey")){
|
||||
keys->rsa.xsPvt = ImportFile("xs_cpki.rsaPvtKey",RSA_2048_KEY_SIZE);
|
||||
if(!keys->rsa.xsPvt)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("xs_cpki.rsaPvtKey");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("ncsd_cfa.rsaPubKey")){
|
||||
keys->rsa.cciCfaPub = ImportFile("ncsd_cfa.rsaPubKey",RSA_2048_KEY_SIZE);
|
||||
if(!keys->rsa.cciCfaPub)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("ncsd_cfa.rsaPubKey");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("ncsd_cfa.rsaPvtKey")){
|
||||
keys->rsa.cciCfaPvt = ImportFile("ncsd_cfa.rsaPvtKey",RSA_2048_KEY_SIZE);
|
||||
if(!keys->rsa.cciCfaPvt)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("ncsd_cfa.rsaPvtKey");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("acex.rsaPubKey")){
|
||||
keys->rsa.acexPub = ImportFile("acex.rsaPubKey",RSA_2048_KEY_SIZE);
|
||||
if(!keys->rsa.acexPub)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("acex.rsaPubKey");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
if(DoesFileExist("acex.rsaPvtKey")){
|
||||
keys->rsa.acexPvt = ImportFile("acex.rsaPvtKey",RSA_2048_KEY_SIZE);
|
||||
if(!keys->rsa.acexPvt)
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
else{
|
||||
keysetOpenError("acex.rsaPvtKey");
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
chdir(cwd);
|
||||
free(cwd);
|
||||
#ifdef DEBUG
|
||||
fprintf(stdout,"[DEBUG] freed path\n");
|
||||
#endif
|
||||
}
|
||||
#ifndef PUBLIC_BUILD
|
||||
#ifndef PUBLIC_BUILD
|
||||
else if(keys->keyset == pki_DEVELOPMENT){
|
||||
keys->keysetLoaded = true;
|
||||
/* AES Keys */
|
||||
// CIA
|
||||
for(int i = 0; i < 2; i++){
|
||||
@@ -228,12 +108,12 @@ int SetKeys(keys_struct *keys)
|
||||
SetCurrentCommonKey(keys,0);
|
||||
|
||||
// NCCH
|
||||
keys->aes.normalKey = (u8*)ctr_fixed_ncch_key_dpki[0];
|
||||
SetSystemFixedKey(keys,(u8*)ctr_fixed_ncch_key_dpki[1]);
|
||||
SetNormalKey(keys,(u8*)dev_fixed_ncch_key[0]);
|
||||
SetSystemFixedKey(keys,(u8*)dev_fixed_ncch_key[1]);
|
||||
|
||||
/*
|
||||
keys->aes.ncchKeyX0 = (u8*)ctr_unfixed_ncch_keyX_dpki[0];
|
||||
keys->aes.ncchKeyX1 = (u8*)ctr_unfixed_ncch_keyX_dpki[1];
|
||||
keys->aes.ncchKeyX0 = (u8*)dev_unfixed_ncch_keyX[0];
|
||||
keys->aes.ncchKeyX1 = (u8*)dev_unfixed_ncch_keyX[1];
|
||||
*/
|
||||
|
||||
/* RSA Keys */
|
||||
@@ -251,6 +131,7 @@ int SetKeys(keys_struct *keys)
|
||||
SetTmdCert(keys,(u8*)cpA_dpki_cert);
|
||||
}
|
||||
else if(keys->keyset == pki_PRODUCTION){
|
||||
keys->keysetLoaded = true;
|
||||
/* AES Keys */
|
||||
// CIA
|
||||
for(int i = 0; i < 6; i++){
|
||||
@@ -260,10 +141,11 @@ int SetKeys(keys_struct *keys)
|
||||
SetCurrentCommonKey(keys,1);
|
||||
|
||||
// NCCH
|
||||
keys->aes.normalKey = (u8*)zeros_aesKey;
|
||||
keys->aes.normalKey = NULL;
|
||||
keys->aes.systemFixedKey = NULL;
|
||||
/*
|
||||
keys->aes.ncchKeyX0 = (u8*)ctr_unfixed_ncch_keyX_ppki[0];
|
||||
keys->aes.ncchKeyX1 = (u8*)ctr_unfixed_ncch_keyX_ppki[1];
|
||||
keys->aes.ncchKeyX0 = (u8*)prod_unfixed_ncch_keyX[0];
|
||||
keys->aes.ncchKeyX1 = (u8*)prod_unfixed_ncch_keyX[1];
|
||||
*/
|
||||
|
||||
/* RSA Keys */
|
||||
@@ -280,40 +162,59 @@ int SetKeys(keys_struct *keys)
|
||||
SetTikCert(keys,(u8*)xsC_ppki_cert);
|
||||
SetTmdCert(keys,(u8*)cpB_ppki_cert);
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
fprintf(stdout,"[DEBUG] Checking if access desc\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int LoadKeysFromKeyfile(keys_struct *keys)
|
||||
{
|
||||
//else
|
||||
printf("[KEYSET ERROR] Target not supported\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CheckAccessDescKey(keys_struct *keys)
|
||||
{
|
||||
// Checking if AccessDesc can be signed
|
||||
u8 *tmp = malloc(0x100);
|
||||
memset(tmp,0,0x100);
|
||||
if(memcmp(tmp,keys->rsa.acexPvt,0x100) == 0)
|
||||
u8 *tmp = calloc(1,RSA_2048_KEY_SIZE);
|
||||
if(memcmp(tmp,keys->rsa.acexPvt,RSA_2048_KEY_SIZE) == 0)
|
||||
keys->rsa.requiresPresignedDesc = true;
|
||||
else
|
||||
keys->rsa.requiresPresignedDesc = false;
|
||||
|
||||
free(tmp);
|
||||
}
|
||||
|
||||
void DumpKeyset(keys_struct *keys)
|
||||
{
|
||||
bool showNcchFixedKeys = (keys->aes.normalKey || keys->aes.systemFixedKey);
|
||||
bool showCommonKeys = false;
|
||||
for(int i = 0; i < 256; i++){
|
||||
if(keys->aes.commonKey[i]){
|
||||
showCommonKeys = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(keys->dumpkeys)
|
||||
{
|
||||
printf("[+] Keys\n");
|
||||
printf("[*] Keyset\n");
|
||||
|
||||
if(showCommonKeys){
|
||||
printf(" > eTicket Common Keys\n");
|
||||
for(int i = 0; i < 256; i++)
|
||||
{
|
||||
if(keys->aes.commonKey[i])
|
||||
{
|
||||
for(int i = 0; i < 256; i++){
|
||||
if(keys->aes.commonKey[i]){
|
||||
printf(" [0x%02x] ",i);
|
||||
memdump(stdout,"",keys->aes.commonKey[i],16);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(showNcchFixedKeys){
|
||||
printf(" > Fixed NCCH Keys\n");
|
||||
if(keys->aes.normalKey)
|
||||
memdump(stdout," [Normal] ",keys->aes.normalKey,16);
|
||||
if(keys->aes.systemFixedKey)
|
||||
memdump(stdout," [System] ",keys->aes.systemFixedKey,16);
|
||||
}
|
||||
|
||||
printf(" > TIK RSA Keys\n");
|
||||
memdump(stdout," [PUB] ",keys->rsa.xsPub,0x100);
|
||||
memdump(stdout," [PVT] ",keys->rsa.xsPvt,0x100);
|
||||
@@ -326,12 +227,6 @@ int SetKeys(keys_struct *keys)
|
||||
printf(" > NcsdCfa RSA Keys\n");
|
||||
memdump(stdout," [PUB] ",keys->rsa.cciCfaPub,0x100);
|
||||
memdump(stdout," [PVT] ",keys->rsa.cciCfaPvt,0x100);
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stdout,"[DEBUG] Done setting keys\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
FILE* keyset_OpenFile(char *dir, char *name, bool FileRequired)
|
||||
@@ -365,6 +260,7 @@ void FreeKeys(keys_struct *keys)
|
||||
}
|
||||
}
|
||||
free(keys->aes.commonKey);
|
||||
free(keys->aes.normalKey);
|
||||
free(keys->aes.systemFixedKey);
|
||||
free(keys->aes.unFixedKey0);
|
||||
free(keys->aes.unFixedKey1);
|
||||
@@ -425,6 +321,12 @@ int SetCurrentCommonKey(keys_struct *keys, u8 Index)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetNormalKey(keys_struct *keys, u8 *systemFixedKey)
|
||||
{
|
||||
if(!keys) return -1;
|
||||
return CopyData(&keys->aes.normalKey,systemFixedKey,16);
|
||||
}
|
||||
|
||||
int SetSystemFixedKey(keys_struct *keys, u8 *systemFixedKey)
|
||||
{
|
||||
if(!keys) return -1;
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
typedef enum
|
||||
{
|
||||
KEYSET_ERROR = -10,
|
||||
} keyset_errors;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
RSA_1024_KEY_SIZE = 0x80,
|
||||
@@ -9,7 +15,7 @@ typedef enum
|
||||
typedef enum
|
||||
{
|
||||
pki_TEST,
|
||||
pki_BETA,
|
||||
pki_BETA, // Not used, but is here for completeness
|
||||
pki_DEVELOPMENT,
|
||||
pki_PRODUCTION,
|
||||
pki_CUSTOM,
|
||||
@@ -17,20 +23,20 @@ typedef enum
|
||||
|
||||
typedef enum
|
||||
{
|
||||
not_preset,
|
||||
app,
|
||||
ec_app,
|
||||
dlp,
|
||||
demo,
|
||||
desc_preset_NONE,
|
||||
desc_preset_APP,
|
||||
desc_preset_EC_APP,
|
||||
desc_preset_DLP,
|
||||
desc_preset_DEMO,
|
||||
desc_preset_FIRM,
|
||||
} fixed_accessdesc_type;
|
||||
|
||||
// Structs
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *keydir;
|
||||
pki_keyset keyset;
|
||||
|
||||
bool keysetLoaded;
|
||||
bool dumpkeys;
|
||||
|
||||
struct
|
||||
@@ -92,6 +98,8 @@ void FreeKeys(keys_struct *keys);
|
||||
|
||||
int SetCommonKey(keys_struct *keys, u8 *commonKey, u8 Index);
|
||||
int SetCurrentCommonKey(keys_struct *keys, u8 Index);
|
||||
int SetNormalKey(keys_struct *keys, u8 *systemFixedKey);
|
||||
int SetSystemFixedKey(keys_struct *keys, u8 *systemFixedKey);
|
||||
|
||||
|
||||
int SetNcchUnfixedKeys(keys_struct *keys, u8 *ncchSig);
|
||||
@@ -12,6 +12,7 @@ int main(int argc, char *argv[])
|
||||
return -1;
|
||||
}
|
||||
init_UserSettings(usrset);
|
||||
initRand();
|
||||
|
||||
int result;
|
||||
|
||||
@@ -34,29 +35,38 @@ int main(int argc, char *argv[])
|
||||
// Setup Content 0
|
||||
if(!usrset->ncch.buildNcch0){ // Import Content
|
||||
if(usrset->common.workingFileType == infile_ncch){
|
||||
FILE *ncch0 = fopen(usrset->common.contentPath[0],"rb");
|
||||
if(!ncch0) {
|
||||
if(!AssertFile(usrset->common.contentPath[0])){
|
||||
fprintf(stderr,"[MAKEROM ERROR] Failed to open Content 0: %s\n",usrset->common.contentPath[0]);
|
||||
goto finish;
|
||||
}
|
||||
u64 fileSize = GetFileSize_u64(usrset->common.contentPath[0]);
|
||||
u64 calcSize = 0;
|
||||
|
||||
FILE *ncch0 = fopen(usrset->common.contentPath[0],"rb");
|
||||
|
||||
ncch_hdr hdr;
|
||||
GetNCCH_CommonHDR(&hdr,ncch0,NULL);
|
||||
calcSize = GetNCCH_MediaSize(&hdr) * GetNCCH_MediaUnitSize(&hdr);
|
||||
if(calcSize != fileSize){
|
||||
fprintf(stderr,"[MAKEROM ERROR] Content 0 is corrupt\n");
|
||||
fclose(ncch0);
|
||||
usrset->common.workingFile.size = GetFileSize_u64(usrset->common.contentPath[0]);
|
||||
usrset->common.workingFile.buffer = malloc(usrset->common.workingFile.size);
|
||||
ncch0 = fopen(usrset->common.contentPath[0],"rb");
|
||||
goto finish;
|
||||
}
|
||||
|
||||
usrset->common.workingFile.size = fileSize;
|
||||
usrset->common.workingFile.buffer = malloc(fileSize);
|
||||
ReadFile_64(usrset->common.workingFile.buffer, usrset->common.workingFile.size,0,ncch0);
|
||||
fclose(ncch0);
|
||||
}
|
||||
else if(usrset->common.workingFileType == infile_srl || usrset->common.workingFileType == infile_ncsd){
|
||||
FILE *fp = fopen(usrset->common.workingFilePath,"rb");
|
||||
if(!fp) {
|
||||
if(!AssertFile(usrset->common.workingFilePath)) {
|
||||
fprintf(stderr,"[MAKEROM ERROR] Failed to open %s: %s\n",usrset->common.workingFileType == infile_srl? "SRL":"CCI",usrset->common.workingFilePath);
|
||||
goto finish;
|
||||
}
|
||||
fclose(fp);
|
||||
u64 size = GetFileSize_u64(usrset->common.workingFilePath);
|
||||
usrset->common.workingFile.size = align(size,0x10);
|
||||
usrset->common.workingFile.buffer = malloc(usrset->common.workingFile.size);
|
||||
fp = fopen(usrset->common.workingFilePath,"rb");
|
||||
FILE *fp = fopen(usrset->common.workingFilePath,"rb");
|
||||
ReadFile_64(usrset->common.workingFile.buffer,size,0,fp);
|
||||
fclose(fp);
|
||||
}
|
||||
@@ -101,7 +111,7 @@ int main(int argc, char *argv[])
|
||||
#endif
|
||||
FILE *ncch_out = fopen(usrset->common.outFileName,"wb");
|
||||
if(!ncch_out) {
|
||||
fprintf(stderr,"[ERROR] Failed to create '%s'\n",usrset->common.outFileName);
|
||||
fprintf(stderr,"[MAKEROM ERROR] Failed to create '%s'\n",usrset->common.outFileName);
|
||||
fprintf(stderr,"[RESULT] Failed to build '%s'\n",usrset->common.outFormat == CXI? "CXI" : "CFA");
|
||||
result = FAILED_TO_CREATE_OUTFILE;
|
||||
goto finish;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "lib.h"
|
||||
#include "dir.h"
|
||||
#include "ncch.h"
|
||||
#include "exheader.h"
|
||||
#include "elf.h"
|
||||
@@ -397,7 +398,7 @@ int SetupNcch(ncch_settings *ncchset, romfs_buildctx *romfs)
|
||||
plnRgnSize = 0;
|
||||
|
||||
if(ncchset->sections.exeFs.size){
|
||||
exefsHashSize = ncchset->options.mediaSize;
|
||||
exefsHashSize = align(sizeof(exefs_hdr),ncchset->options.mediaSize);
|
||||
exefsSize = align(ncchset->sections.exeFs.size,ncchset->options.mediaSize);
|
||||
exefsOffset = align(ncchSize,ncchset->options.mediaSize);
|
||||
ncchSize = exefsOffset + exefsSize;
|
||||
@@ -406,9 +407,9 @@ int SetupNcch(ncch_settings *ncchset, romfs_buildctx *romfs)
|
||||
exefsSize = 0;
|
||||
|
||||
if(romfs->romfsSize){
|
||||
romfsHashSize = ncchset->options.mediaSize;
|
||||
romfsHashSize = align(romfs->romfsHeaderSize,ncchset->options.mediaSize);
|
||||
romfsSize = align(romfs->romfsSize,ncchset->options.mediaSize);
|
||||
//romfsOffset = align(ncchSize,0x200); // Old makerom method, SDK 3.x and prior
|
||||
//romfsOffset = align(ncchSize,0x200); // Old makerom method, SDK 2.x and prior
|
||||
romfsOffset = align(ncchSize,0x1000);
|
||||
ncchSize = romfsOffset + romfsSize;
|
||||
}
|
||||
@@ -580,9 +581,11 @@ int SetCommonHeaderBasicData(ncch_settings *ncchset, ncch_hdr *hdr)
|
||||
/* NCCH Magic */
|
||||
memcpy(hdr->magic,"NCCH",4);
|
||||
|
||||
/* NCCH Format titleVersion */
|
||||
/* NCCH Format Version */
|
||||
if(!ncchset->options.IsCfa)
|
||||
u16_to_u8(hdr->formatVersion,0x2,LE);
|
||||
|
||||
|
||||
/* Setting ProgramId/TitleId */
|
||||
u64 ProgramId = 0;
|
||||
int result = GetProgramID(&ProgramId,ncchset->rsfSet,false);
|
||||
@@ -614,12 +617,20 @@ int SetCommonHeaderBasicData(ncch_settings *ncchset, ncch_hdr *hdr)
|
||||
if(!ncchset->options.Encrypt)
|
||||
hdr->flags[OtherFlag] = (NoCrypto|FixedCryptoKey);
|
||||
else if(ncchset->keys->aes.ncchKeyX0){
|
||||
hdr->flags[OtherFlag] = 0;
|
||||
hdr->flags[OtherFlag] = UnFixedCryptoKey;
|
||||
if(ncchset->keys->aes.ncchKeyX1)
|
||||
hdr->flags[SecureCrypto2] = 1;
|
||||
}
|
||||
else
|
||||
else{
|
||||
hdr->flags[OtherFlag] = FixedCryptoKey;
|
||||
u8 *key = GetNCCHKey(GetNCCHKeyType(hdr),ncchset->keys);
|
||||
if(!key){ // for detecting absense of fixed aes keys
|
||||
hdr->flags[OtherFlag] = (NoCrypto|FixedCryptoKey);
|
||||
fprintf(stderr,"[NCCH WARNING] NCCH AES Key could not be loaded, NCCH will not be encrypted\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Set ContentUnitSize */
|
||||
hdr->flags[ContentUnitSize] = 0; // 0x200
|
||||
@@ -969,11 +980,11 @@ bool IsCfa(ncch_hdr* hdr)
|
||||
|
||||
u32 GetNCCH_MediaUnitSize(ncch_hdr* hdr)
|
||||
{
|
||||
u16 titleVersion = u8_to_u16(hdr->formatVersion,LE);
|
||||
u16 formatVersion = u8_to_u16(hdr->formatVersion,LE);
|
||||
u32 ret = 0;
|
||||
if (titleVersion == 1)
|
||||
if (formatVersion == 1)
|
||||
ret = 1;
|
||||
else if (titleVersion == 2 || titleVersion == 0)
|
||||
else if (formatVersion == 2 || formatVersion == 0)
|
||||
ret = 1 << (hdr->flags[ContentUnitSize] + 9);
|
||||
return ret;
|
||||
//return 0x200*pow(2,hdr->flags[ContentUnitSize]);
|
||||
@@ -1006,7 +1017,8 @@ u8* GetNCCHKey(ncch_key_type keytype, keys_struct *keys)
|
||||
{
|
||||
switch(keytype){
|
||||
case NoKey: return NULL;
|
||||
case KeyIsNormalFixed: return keys->aes.normalKey;
|
||||
case KeyIsNormalFixed:
|
||||
return keys->aes.normalKey;
|
||||
case KeyIsSystemFixed:
|
||||
return keys->aes.systemFixedKey;
|
||||
case KeyIsUnFixed:
|
||||
|
||||
@@ -53,6 +53,7 @@ typedef enum
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UnFixedCryptoKey = 0x0,
|
||||
FixedCryptoKey = 0x1,
|
||||
NoMountRomFs = 0x2,
|
||||
NoCrypto = 0x4,
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
// Private Prototypes
|
||||
|
||||
/* RSA Crypto */
|
||||
int SignCCI(u8 *Signature, u8 *NCSD_HDR);
|
||||
int CheckCCISignature(u8 *Signature, u8 *NCSD_HDR);
|
||||
int SignCCI(u8 *Signature, u8 *NCSD_HDR, keys_struct *keys);
|
||||
int CheckCCISignature(u8 *Signature, u8 *NCSD_HDR, keys_struct *keys);
|
||||
|
||||
/* cci_settings tools */
|
||||
void init_CCISettings(cci_settings *set);
|
||||
@@ -17,16 +17,18 @@ int get_CCISettings(cci_settings *cciset, user_settings *usrset);
|
||||
void free_CCISettings(cci_settings *set);
|
||||
|
||||
/* CCI Data Gen/Write */
|
||||
int BuildNCSDHeader(cci_settings *cciset, user_settings *usrset);
|
||||
int BuildCCIHeader(cci_settings *cciset, user_settings *usrset);
|
||||
int BuildCardInfoHeader(cci_settings *cciset, user_settings *usrset);
|
||||
int WriteCCI_HDR_ToFile(cci_settings *cciset);
|
||||
int WriteCCI_Content_ToFile(cci_settings *cciset,user_settings *usrset);
|
||||
int WriteCCI_DummyBytes(cci_settings *cciset);
|
||||
int WriteHeaderToFile(cci_settings *cciset);
|
||||
int WriteContentToFile(cci_settings *cciset,user_settings *usrset);
|
||||
int WriteDummyBytes(cci_settings *cciset);
|
||||
|
||||
/* Get Data from Content Files */
|
||||
int CheckContent0(cci_settings *cciset, user_settings *usrset);
|
||||
int GetDataFromContent0(cci_settings *cciset, user_settings *usrset);
|
||||
int GetContentFP(cci_settings *cciset, user_settings *usrset);
|
||||
int ImportNcchPartitions(cci_settings *cciset);
|
||||
int ImportCverDetails(cci_settings *cciset, user_settings *usrset);
|
||||
|
||||
/* Get Data from YAML Settings */
|
||||
int GetNCSDFlags(cci_settings *cciset, rsf_settings *yaml);
|
||||
@@ -38,6 +40,7 @@ int GetCardInfoBitmask(cci_settings *cciset, user_settings *usrset);
|
||||
int CheckMediaSize(cci_settings *cciset);
|
||||
|
||||
static InternalCCI_Context ctx;
|
||||
const int NCCH0_OFFSET = 0x4000;
|
||||
|
||||
// Code
|
||||
int build_CCI(user_settings *usrset)
|
||||
@@ -56,6 +59,10 @@ int build_CCI(user_settings *usrset)
|
||||
result = get_CCISettings(cciset,usrset);
|
||||
if(result) goto finish;
|
||||
|
||||
// Import Content
|
||||
result = ImportNcchPartitions(cciset);
|
||||
if(result) goto finish;
|
||||
|
||||
// Create Output File
|
||||
cciset->out = fopen(usrset->common.outFileName,"wb");
|
||||
if(!cciset->out){
|
||||
@@ -65,20 +72,19 @@ int build_CCI(user_settings *usrset)
|
||||
}
|
||||
|
||||
// Generate NCSD Header and Additional Header
|
||||
result = BuildNCSDHeader(cciset,usrset);
|
||||
if(result)
|
||||
goto finish;
|
||||
result = BuildCCIHeader(cciset,usrset);
|
||||
if(result) goto finish;
|
||||
BuildCardInfoHeader(cciset,usrset);
|
||||
|
||||
// Write to File
|
||||
WriteCCI_HDR_ToFile(cciset);
|
||||
result = WriteCCI_Content_ToFile(cciset,usrset);
|
||||
WriteHeaderToFile(cciset);
|
||||
result = WriteContentToFile(cciset,usrset);
|
||||
if(result)
|
||||
goto finish;
|
||||
|
||||
// Fill out file if necessary
|
||||
if(cciset->fillOutCci)
|
||||
WriteCCI_DummyBytes(cciset);
|
||||
if(cciset->option.fillOutCci)
|
||||
WriteDummyBytes(cciset);
|
||||
|
||||
// Close output file
|
||||
finish:
|
||||
@@ -88,14 +94,14 @@ finish:
|
||||
}
|
||||
|
||||
|
||||
int SignCCI(u8 *Signature, u8 *NCSD_HDR)
|
||||
int SignCCI(u8 *Signature, u8 *NCSD_HDR, keys_struct *keys)
|
||||
{
|
||||
return ctr_sig(NCSD_HDR,sizeof(cci_hdr),Signature,ctx.keys->rsa.cciCfaPub,ctx.keys->rsa.cciCfaPvt,RSA_2048_SHA256,CTR_RSA_SIGN);
|
||||
return ctr_sig(NCSD_HDR,sizeof(cci_hdr),Signature,keys->rsa.cciCfaPub,keys->rsa.cciCfaPvt,RSA_2048_SHA256,CTR_RSA_SIGN);
|
||||
}
|
||||
|
||||
int CheckCCISignature(u8 *Signature, u8 *NCSD_HDR)
|
||||
int CheckCCISignature(u8 *Signature, u8 *NCSD_HDR, keys_struct *keys)
|
||||
{
|
||||
return ctr_sig(NCSD_HDR,sizeof(cci_hdr),Signature,ctx.keys->rsa.cciCfaPub,NULL,RSA_2048_SHA256,CTR_RSA_VERIFY);
|
||||
return ctr_sig(NCSD_HDR,sizeof(cci_hdr),Signature,keys->rsa.cciCfaPub,NULL,RSA_2048_SHA256,CTR_RSA_VERIFY);
|
||||
}
|
||||
|
||||
void init_CCISettings(cci_settings *set)
|
||||
@@ -106,7 +112,7 @@ void init_CCISettings(cci_settings *set)
|
||||
|
||||
int get_CCISettings(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
ctx.keys = &usrset->common.keys;
|
||||
cciset->keys = &usrset->common.keys;
|
||||
int result = 0;
|
||||
|
||||
/* Importing Data from Content */
|
||||
@@ -120,7 +126,6 @@ int get_CCISettings(cci_settings *cciset, user_settings *usrset)
|
||||
if(result) return result;
|
||||
|
||||
|
||||
|
||||
/* Getting Data from YAML */
|
||||
result = GetNCSDFlags(cciset,&usrset->common.rsfSet);
|
||||
if(result) return result;
|
||||
@@ -147,27 +152,33 @@ int get_CCISettings(cci_settings *cciset, user_settings *usrset)
|
||||
|
||||
void free_CCISettings(cci_settings *set)
|
||||
{
|
||||
if(set->content){
|
||||
if(set->content.filePtrs){
|
||||
for(int i = 1; i < 8; i++) {
|
||||
if(set->content[i]) fclose(set->content[i]);
|
||||
if(set->content.filePtrs[i]) fclose(set->content.filePtrs[i]);
|
||||
}
|
||||
free(set->content);
|
||||
free(set->content.filePtrs);
|
||||
}
|
||||
free(set);
|
||||
}
|
||||
|
||||
int BuildNCSDHeader(cci_settings *cciset, user_settings *usrset)
|
||||
int BuildCCIHeader(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
memcpy((u8*)ctx.cciHdr.magic,"NCSD",4);
|
||||
u32_to_u8((u8*)ctx.cciHdr.mediaSize,(cciset->mediaSize/cciset->mediaUnit),LE);
|
||||
memcpy((u8*)ctx.cciHdr.titleId,cciset->mediaId,8);
|
||||
u32_to_u8((u8*)ctx.cciHdr.mediaSize,(cciset->header.mediaSize/cciset->option.mediaUnit),LE);
|
||||
memcpy((u8*)ctx.cciHdr.titleId,cciset->header.mediaId,8);
|
||||
memcpy((u8*)ctx.cciHdr.flags,cciset->header.flags,8);
|
||||
|
||||
// Content
|
||||
for(int i = 0; i < 8; i++){
|
||||
u32_to_u8((u8*)ctx.cciHdr.offset_sizeTable[i].offset,(cciset->contentOffset[i]/cciset->mediaUnit),LE);
|
||||
u32_to_u8((u8*)ctx.cciHdr.offset_sizeTable[i].size,(cciset->contentSize[i]/cciset->mediaUnit),LE);
|
||||
memcpy((u8*)ctx.cciHdr.partitionIdTable[i],cciset->contentTitleId[i],8);
|
||||
u32_to_u8((u8*)ctx.cciHdr.offset_sizeTable[i].offset,(cciset->content.offset[i]/cciset->option.mediaUnit),LE);
|
||||
u32_to_u8((u8*)ctx.cciHdr.offset_sizeTable[i].size,(cciset->content.size[i]/cciset->option.mediaUnit),LE);
|
||||
memcpy((u8*)ctx.cciHdr.contentIdTable[i],cciset->content.titleId[i],8);
|
||||
ctx.cciHdr.contentFsType[i] = cciset->content.fsType[i];
|
||||
ctx.cciHdr.contentCryptoType[i] = cciset->content.cryptoType[i];
|
||||
}
|
||||
memcpy((u8*)ctx.cciHdr.partitionFlags,cciset->flags,8);
|
||||
if(SignCCI(ctx.signature,(u8*)&ctx.cciHdr) != Good){
|
||||
|
||||
// Signature
|
||||
if(SignCCI(ctx.signature,(u8*)&ctx.cciHdr,cciset->keys) != Good){
|
||||
fprintf(stderr,"[CCI ERROR] Failed to sign CCI\n");
|
||||
return CCI_SIG_FAIL;
|
||||
}
|
||||
@@ -176,27 +187,49 @@ int BuildNCSDHeader(cci_settings *cciset, user_settings *usrset)
|
||||
|
||||
int BuildCardInfoHeader(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
u32_to_u8((u8*)ctx.cardinfo.writableAddress,(cciset->writableAddress/cciset->mediaUnit),LE);
|
||||
u32_to_u8((u8*)ctx.cardinfo.cardInfoBitmask,cciset->cardInfoBitmask,BE);
|
||||
u32_to_u8((u8*)ctx.cardinfo.mediaSizeUsed,cciset->cciTotalSize,LE);
|
||||
memcpy(ctx.cardinfo.cverTitleId,cciset->cverTitleId,8);
|
||||
memcpy(ctx.cardinfo.cverTitleVersion,cciset->cverTitleVersion,2);
|
||||
memcpy((u8*)ctx.cardinfo.ncch0TitleId,cciset->contentTitleId[0],8);
|
||||
memcpy((u8*)ctx.cardinfo.initialData,cciset->initialData,0x30);
|
||||
memcpy((u8*)ctx.cardinfo.ncch0Hdr,cciset->ncchHdr,0x100);
|
||||
memcpy((u8*)ctx.devcardinfo.titleKey,cciset->titleKey,0x10);
|
||||
u32_to_u8((u8*)ctx.cardinfo.writableAddress,(cciset->cardinfo.writableAddress/cciset->option.mediaUnit),LE);
|
||||
u32_to_u8((u8*)ctx.cardinfo.cardInfoBitmask,cciset->cardinfo.cardInfoBitmask,BE);
|
||||
u32_to_u8((u8*)ctx.cardinfo.mediaSizeUsed,cciset->cardinfo.cciTotalSize,LE);
|
||||
memcpy(ctx.cardinfo.cverTitleId,cciset->cardinfo.cverTitleId,8);
|
||||
memcpy(ctx.cardinfo.cverTitleVersion,cciset->cardinfo.cverTitleVersion,2);
|
||||
memcpy((u8*)ctx.cardinfo.ncch0TitleId,cciset->content.titleId[0],8);
|
||||
memcpy((u8*)ctx.cardinfo.initialData,cciset->cardinfo.initialData,0x30);
|
||||
memcpy((u8*)ctx.cardinfo.ncch0Hdr,&cciset->cardinfo.ncchHdr,0x100);
|
||||
memcpy((u8*)ctx.devcardinfo.titleKey,cciset->cardinfo.titleKey,0x10);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int WriteCCI_HDR_ToFile(cci_settings *cciset)
|
||||
int ImportNcchPartitions(cci_settings *cciset)
|
||||
{
|
||||
cciset->content.data->buffer = realloc(cciset->content.data->buffer,cciset->content.data->size);
|
||||
if(!cciset->content.data->buffer){
|
||||
fprintf(stderr,"[CCI ERROR] Not enough memory\n");
|
||||
return MEM_ERROR;
|
||||
}
|
||||
|
||||
ncch_hdr *ncch0hdr = (ncch_hdr*)(cciset->content.data->buffer+0x100);
|
||||
for(int i = 1; i < CCI_MAX_CONTENT; i++){
|
||||
if(!cciset->content.size[i])
|
||||
continue;
|
||||
|
||||
u8 *ncchpos = (u8*)(cciset->content.data->buffer+cciset->content.offset[i]-cciset->content.offset[0]);
|
||||
|
||||
ReadFile_64(ncchpos, cciset->content.fileSize[i], 0, cciset->content.filePtrs[i]);
|
||||
if(ModifyNcchIds(ncchpos, cciset->content.titleId[i], ncch0hdr->programId, cciset->keys) != 0)
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int WriteHeaderToFile(cci_settings *cciset)
|
||||
{
|
||||
WriteBuffer(ctx.signature,0x100,0,cciset->out);
|
||||
WriteBuffer((u8*)&ctx.cciHdr,sizeof(cci_hdr),0x100,cciset->out);
|
||||
WriteBuffer((u8*)&ctx.cardinfo,sizeof(cardinfo_hdr),0x200,cciset->out);
|
||||
if(memcmp(ctx.devcardinfo.titleKey,ctx.keys->aes.normalKey,16) == 0){
|
||||
if(!cciset->option.useDevCardInfo){
|
||||
// Creating Buffer of Dummy Bytes
|
||||
u64 len = cciset->contentOffset[0] - 0x1200;
|
||||
u64 len = NCCH0_OFFSET - 0x1200;
|
||||
u8 *dummy_bytes = malloc(len);
|
||||
memset(dummy_bytes,0xff,len);
|
||||
WriteBuffer(dummy_bytes,len,0x1200,cciset->out);
|
||||
@@ -206,93 +239,85 @@ int WriteCCI_HDR_ToFile(cci_settings *cciset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int WriteCCI_Content_ToFile(cci_settings *cciset,user_settings *usrset)
|
||||
int WriteContentToFile(cci_settings *cciset,user_settings *usrset)
|
||||
{
|
||||
// Write Content 0
|
||||
WriteBuffer(cciset->ncch0,cciset->contentSize[0],cciset->contentOffset[0],cciset->out);
|
||||
free(usrset->common.workingFile.buffer);
|
||||
usrset->common.workingFile.buffer = NULL;
|
||||
usrset->common.workingFile.size = 0;
|
||||
|
||||
// Add additional contents, recreating them with their new TitleID
|
||||
for(int i = 1; i < 8; i++){
|
||||
if(cciset->content[i]){
|
||||
u8 *ncch = RetargetNCCH(cciset->content[i],cciset->contentSize[i],cciset->contentTitleId[i],cciset->mediaId,ctx.keys);
|
||||
if(!ncch){
|
||||
fprintf(stderr,"[CCI ERROR] Could not import content %d to CCI\n",i);
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
WriteBuffer(ncch,cciset->contentSize[i],cciset->contentOffset[i],cciset->out);
|
||||
free(ncch);
|
||||
}
|
||||
}
|
||||
WriteBuffer(cciset->content.data->buffer,cciset->content.data->size,NCCH0_OFFSET,cciset->out);
|
||||
free(cciset->content.data->buffer);
|
||||
cciset->content.data->buffer = NULL;
|
||||
cciset->content.data->size = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int WriteCCI_DummyBytes(cci_settings *cciset)
|
||||
int WriteDummyBytes(cci_settings *cciset)
|
||||
{
|
||||
// Seeking end of CCI Data
|
||||
fseek_64(cciset->out,cciset->cciTotalSize);
|
||||
fseek_64(cciset->out,cciset->cardinfo.cciTotalSize);
|
||||
|
||||
// Determining Size of Dummy Bytes
|
||||
u64 len = cciset->mediaSize - cciset->cciTotalSize;
|
||||
u64 len = cciset->header.mediaSize - cciset->cardinfo.cciTotalSize;
|
||||
|
||||
// Creating Buffer of Dummy Bytes
|
||||
u8 *dummy_bytes = malloc(cciset->mediaUnit);
|
||||
memset(dummy_bytes,0xff,cciset->mediaUnit);
|
||||
u8 *dummy_bytes = malloc(cciset->option.mediaUnit);
|
||||
memset(dummy_bytes,0xff,cciset->option.mediaUnit);
|
||||
|
||||
// Writing Dummy Bytes to file
|
||||
for(u64 i = 0; i < len; i += cciset->mediaUnit)
|
||||
fwrite(dummy_bytes,cciset->mediaUnit,1,cciset->out);
|
||||
for(u64 i = 0; i < len; i += cciset->option.mediaUnit)
|
||||
fwrite(dummy_bytes,cciset->option.mediaUnit,1,cciset->out);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int GetContentFP(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
cciset->content = malloc(sizeof(FILE*)*8);
|
||||
if(!cciset->content){
|
||||
cciset->content.filePtrs = calloc(8,sizeof(FILE*));
|
||||
if(!cciset->content.filePtrs){
|
||||
fprintf(stderr,"[CCI ERROR] Not enough memory\n");
|
||||
return MEM_ERROR;
|
||||
}
|
||||
memset(cciset->content,0,sizeof(FILE*)*8);
|
||||
|
||||
for(int i = 1; i < 8; i++){
|
||||
if(usrset->common.contentPath[i]){
|
||||
cciset->content[i] = fopen(usrset->common.contentPath[i],"rb");
|
||||
if(!cciset->content[i]){ // Checking if file could be opened
|
||||
if(!AssertFile(usrset->common.contentPath[i])){ // Checking if file could be opened
|
||||
fprintf(stderr,"[CCI ERROR] Failed to open '%s'\n",usrset->common.contentPath[i]);
|
||||
return FAILED_TO_OPEN_FILE;
|
||||
}
|
||||
if(!IsNCCH(cciset->content[i],NULL)){ // Checking if NCCH
|
||||
|
||||
cciset->content.fileSize[i] = GetFileSize_u64(usrset->common.contentPath[i]);
|
||||
cciset->content.filePtrs[i] = fopen(usrset->common.contentPath[i],"rb");
|
||||
/*
|
||||
if(!cciset->content.filePtrs[i]){ // Checking if file could be opened
|
||||
fprintf(stderr,"[CCI ERROR] Failed to open '%s'\n",usrset->common.contentPath[i]);
|
||||
return FAILED_TO_OPEN_FILE;
|
||||
}
|
||||
*/
|
||||
if(!IsNCCH(cciset->content.filePtrs[i],NULL)){ // Checking if NCCH
|
||||
fprintf(stderr,"[CCI ERROR] Content '%s' is invalid\n",usrset->common.contentPath[i]);
|
||||
return NCSD_INVALID_NCCH0;
|
||||
return NCSD_INVALID_NCCH;
|
||||
}
|
||||
|
||||
// Getting NCCH Header
|
||||
ncch_hdr *hdr = malloc(sizeof(ncch_hdr));
|
||||
GetNCCH_CommonHDR(hdr,cciset->content[i],NULL);
|
||||
|
||||
if(GetNCCH_MediaUnitSize(hdr) != cciset->mediaUnit){ // Checking if Media Unit Size matches CCI
|
||||
fprintf(stderr,"[CCI ERROR] Content '%s' is invalid\n",usrset->common.contentPath[i]);
|
||||
return NCSD_INVALID_NCCH0;
|
||||
}
|
||||
GetNCCH_CommonHDR(hdr,cciset->content.filePtrs[i],NULL);
|
||||
|
||||
if(usrset->cci.dontModifyNcchTitleID)
|
||||
memcpy(&cciset->contentTitleId[i],hdr->titleId,8);
|
||||
memcpy(&cciset->content.titleId[i], hdr->titleId, 8);
|
||||
else{
|
||||
memcpy(&cciset->contentTitleId[i],cciset->mediaId,8); // Set TitleID
|
||||
|
||||
// Modify TitleID Accordingly
|
||||
u16 tmp = u8_to_u16(&hdr->titleId[6],LE);
|
||||
tmp |= (i+4);
|
||||
u16_to_u8(&cciset->contentTitleId[i][6],tmp,LE);
|
||||
memcpy(&cciset->content.titleId[i], cciset->header.mediaId, 8); // Set TitleID
|
||||
u16_to_u8(&cciset->content.titleId[i][6], (i+4), LE);
|
||||
}
|
||||
|
||||
cciset->contentSize[i] = GetNCCH_MediaSize(hdr)*cciset->mediaUnit;
|
||||
cciset->contentOffset[i] = cciset->cciTotalSize;
|
||||
u64 contentSize = (u64)GetNCCH_MediaSize(hdr)* (u64)GetNCCH_MediaUnitSize(hdr);
|
||||
if(contentSize != cciset->content.fileSize[i]){
|
||||
fprintf(stderr,"[CCI ERROR] Content '%s' is corrupt\n",usrset->common.contentPath[i]);
|
||||
return NCSD_INVALID_NCCH;
|
||||
}
|
||||
|
||||
cciset->cciTotalSize += cciset->contentSize[i];
|
||||
cciset->content.size[i] = align(contentSize,cciset->option.mediaUnit);
|
||||
cciset->content.offset[i] = cciset->cardinfo.cciTotalSize;
|
||||
|
||||
cciset->content.data->size += cciset->content.size[i];
|
||||
cciset->cardinfo.cciTotalSize += cciset->content.size[i];
|
||||
|
||||
free(hdr);
|
||||
}
|
||||
@@ -302,12 +327,11 @@ int GetContentFP(cci_settings *cciset, user_settings *usrset)
|
||||
|
||||
int CheckContent0(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
if(!usrset->common.workingFile.buffer)
|
||||
if(!usrset->common.workingFile.buffer || !usrset->common.workingFile.size)
|
||||
return NCSD_NO_NCCH0;
|
||||
cciset->ncch0 = usrset->common.workingFile.buffer;
|
||||
cciset->ncch0_FileLen = usrset->common.workingFile.size;
|
||||
cciset->content.data = &usrset->common.workingFile;
|
||||
|
||||
if(!IsNCCH(NULL,cciset->ncch0))
|
||||
if(!IsNCCH(NULL,cciset->content.data->buffer))
|
||||
return NCSD_INVALID_NCCH0;
|
||||
|
||||
return 0;
|
||||
@@ -315,68 +339,85 @@ int CheckContent0(cci_settings *cciset, user_settings *usrset)
|
||||
|
||||
int GetDataFromContent0(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
cciset->cciTotalSize = 0x4000;
|
||||
|
||||
cciset->cardinfo.cciTotalSize = NCCH0_OFFSET;
|
||||
ncch_hdr *hdr;
|
||||
|
||||
hdr = GetNCCH_CommonHDR(NULL,NULL,cciset->ncch0);
|
||||
hdr = GetNCCH_CommonHDR(NULL,NULL,cciset->content.data->buffer);
|
||||
|
||||
cciset->ncchHdr = hdr;
|
||||
memcpy(&cciset->cardinfo.ncchHdr,hdr,sizeof(ncch_hdr));
|
||||
|
||||
u16 ncch_format_ver = u8_to_u16(hdr->formatVersion,LE);
|
||||
if(ncch_format_ver != 0 && ncch_format_ver != 2){
|
||||
fprintf(stderr,"[CCI ERROR] NCCH type %d Not Supported\n",ncch_format_ver);
|
||||
if(ncch_format_ver > 2){
|
||||
fprintf(stderr,"[CCI ERROR] NCCH type %d not supported\n",ncch_format_ver);
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
|
||||
//memdump(stdout,"ncch0 head: ",(cciset->ncch0+0x100),0x100);
|
||||
//memdump(stdout,"ncch0 head: ",(u8*)(hdr),0x100);
|
||||
|
||||
memcpy(cciset->mediaId,hdr->titleId,8);
|
||||
memcpy(&cciset->contentTitleId[0],hdr->titleId,8);
|
||||
memcpy(cciset->header.mediaId,hdr->titleId,8);
|
||||
memcpy(&cciset->content.titleId[0],hdr->titleId,8);
|
||||
#ifndef PUBLIC_BUILD
|
||||
if(usrset->cci.useSDKStockData){
|
||||
memcpy(cciset->initialData,stock_initial_data,0x30);
|
||||
memcpy(cciset->titleKey,stock_title_key,0x10);
|
||||
memcpy(cciset->cardinfo.initialData,stock_initial_data,0x30);
|
||||
memcpy(cciset->cardinfo.titleKey,stock_title_key,0x10);
|
||||
cciset->option.useDevCardInfo = true;
|
||||
}
|
||||
else{
|
||||
u8 Hash[0x40];
|
||||
ctr_sha(cciset->ncch0,0x80,Hash,CTR_SHA_256);
|
||||
ctr_sha((cciset->ncch0+0x80),0x80,(Hash+0x20),CTR_SHA_256);
|
||||
memcpy(cciset->initialData,Hash,0x2C);
|
||||
//memcpy(cciset->titleKey,(Hash+0x30),0x10); // Might Remove
|
||||
for(int i = 0; i < 0x2c/sizeof(u32); i++)
|
||||
{
|
||||
u32 val = u32GetRand();
|
||||
memcpy((cciset->cardinfo.initialData+i*sizeof(u32)),&val,4);
|
||||
}
|
||||
/*
|
||||
for(int i = 0; i < 2; i++)
|
||||
{
|
||||
u64 val = u64GetRand();
|
||||
memcpy((cciset->cardinfo.titleKey+i*8),&val,8);
|
||||
}
|
||||
cciset->option.useDevCardInfo = true;
|
||||
*/
|
||||
}
|
||||
#else
|
||||
for(int i = 0; i < 0x2c/sizeof(u32); i++)
|
||||
{
|
||||
u32 val = u32GetRand();
|
||||
memcpy((cciset->cardinfo.initialData+i*sizeof(u32)),&val,4);
|
||||
}
|
||||
#endif
|
||||
|
||||
cciset->flags[MediaUnitSize] = hdr->flags[ContentUnitSize];
|
||||
cciset->mediaUnit = GetNCCH_MediaUnitSize(hdr);
|
||||
cciset->header.flags[MediaUnitSize] = hdr->flags[ContentUnitSize];
|
||||
cciset->option.mediaUnit = GetNCCH_MediaUnitSize(hdr);
|
||||
|
||||
cciset->contentSize[0] = (u64)(GetNCCH_MediaSize(hdr) * cciset->mediaUnit);
|
||||
cciset->contentOffset[0] = cciset->cciTotalSize;
|
||||
cciset->content.size[0] = (u64)(GetNCCH_MediaSize(hdr) * cciset->option.mediaUnit);
|
||||
cciset->content.offset[0] = cciset->cardinfo.cciTotalSize;
|
||||
|
||||
cciset->cciTotalSize += cciset->contentSize[0];
|
||||
cciset->content.data->size = cciset->content.size[0];
|
||||
cciset->cardinfo.cciTotalSize += cciset->content.size[0];
|
||||
return 0;
|
||||
}
|
||||
|
||||
int GetMediaSize(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
char *MediaSizeStr = usrset->common.rsfSet.BasicInfo.MediaSize;
|
||||
if(!MediaSizeStr) cciset->mediaSize = (u64)GB*2;
|
||||
char *mediaSizeStr = usrset->common.rsfSet.CardInfo.MediaSize;
|
||||
if(!mediaSizeStr) cciset->header.mediaSize = (u64)GB*2;
|
||||
else{
|
||||
if(strcasecmp(MediaSizeStr,"128MB") == 0) cciset->mediaSize = (u64)MB*128;
|
||||
else if(strcasecmp(MediaSizeStr,"256MB") == 0) cciset->mediaSize = (u64)MB*256;
|
||||
else if(strcasecmp(MediaSizeStr,"512MB") == 0) cciset->mediaSize = (u64)MB*512;
|
||||
else if(strcasecmp(MediaSizeStr,"1GB") == 0) cciset->mediaSize = (u64)GB*1;
|
||||
else if(strcasecmp(MediaSizeStr,"2GB") == 0) cciset->mediaSize = (u64)GB*2;
|
||||
else if(strcasecmp(MediaSizeStr,"4GB") == 0) cciset->mediaSize = (u64)GB*4;
|
||||
else if(strcasecmp(MediaSizeStr,"8GB") == 0) cciset->mediaSize = (u64)GB*8;
|
||||
else if(strcasecmp(MediaSizeStr,"16GB") == 0) cciset->mediaSize = (u64)GB*16;
|
||||
else if(strcasecmp(MediaSizeStr,"32GB") == 0) cciset->mediaSize = (u64)GB*32;
|
||||
if(strcasecmp(mediaSizeStr,"128MB") == 0) cciset->header.mediaSize = (u64)MB*128;
|
||||
else if(strcasecmp(mediaSizeStr,"256MB") == 0) cciset->header.mediaSize = (u64)MB*256;
|
||||
else if(strcasecmp(mediaSizeStr,"512MB") == 0) cciset->header.mediaSize = (u64)MB*512;
|
||||
else if(strcasecmp(mediaSizeStr,"1GB") == 0) cciset->header.mediaSize = (u64)GB*1;
|
||||
else if(strcasecmp(mediaSizeStr,"2GB") == 0) cciset->header.mediaSize = (u64)GB*2;
|
||||
else if(strcasecmp(mediaSizeStr,"4GB") == 0) cciset->header.mediaSize = (u64)GB*4;
|
||||
else if(strcasecmp(mediaSizeStr,"8GB") == 0) cciset->header.mediaSize = (u64)GB*8;
|
||||
else if(strcasecmp(mediaSizeStr,"16GB") == 0) cciset->header.mediaSize = (u64)GB*16;
|
||||
else if(strcasecmp(mediaSizeStr,"32GB") == 0) cciset->header.mediaSize = (u64)GB*32;
|
||||
else {
|
||||
fprintf(stderr,"[CCI ERROR] Invalid MediaSize: %s\n",MediaSizeStr);
|
||||
fprintf(stderr,"[CCI ERROR] Invalid MediaSize: %s\n",mediaSizeStr);
|
||||
return INVALID_YAML_OPT;
|
||||
}
|
||||
}
|
||||
|
||||
if(usrset->common.rsfSet.BasicInfo.MediaFootPadding != -1) cciset->fillOutCci = usrset->common.rsfSet.BasicInfo.MediaFootPadding;
|
||||
cciset->option.fillOutCci = usrset->common.rsfSet.Option.MediaFootPadding;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -411,21 +452,21 @@ u64 GetUnusedSize(u64 MediaSize, u8 CardType)
|
||||
int GetNCSDFlags(cci_settings *cciset, rsf_settings *yaml)
|
||||
{
|
||||
/* BackupWriteWaitTime */
|
||||
cciset->flags[FW6x_BackupWriteWaitTime] = 0;
|
||||
cciset->header.flags[FW6x_BackupWriteWaitTime] = 0;
|
||||
if(yaml->CardInfo.BackupWriteWaitTime){
|
||||
u32 WaitTime = strtoul(yaml->CardInfo.BackupWriteWaitTime,NULL,0);
|
||||
if(WaitTime > 255){
|
||||
fprintf(stderr,"[CCI ERROR] Invalid Card BackupWriteWaitTime (%d) : must 0-255\n",WaitTime);
|
||||
return EXHDR_BAD_YAML_OPT;
|
||||
}
|
||||
cciset->flags[FW6x_BackupWriteWaitTime] = (u8)WaitTime;
|
||||
cciset->header.flags[FW6x_BackupWriteWaitTime] = (u8)WaitTime;
|
||||
}
|
||||
|
||||
/* MediaType */
|
||||
if(!yaml->CardInfo.MediaType) cciset->flags[MediaTypeIndex] = CARD1;
|
||||
if(!yaml->CardInfo.MediaType) cciset->header.flags[MediaTypeIndex] = CARD1;
|
||||
else{
|
||||
if(strcasecmp(yaml->CardInfo.MediaType,"Card1") == 0) cciset->flags[MediaTypeIndex] = CARD1;
|
||||
else if(strcasecmp(yaml->CardInfo.MediaType,"Card2") == 0) cciset->flags[MediaTypeIndex] = CARD2;
|
||||
if(strcasecmp(yaml->CardInfo.MediaType,"Card1") == 0) cciset->header.flags[MediaTypeIndex] = CARD1;
|
||||
else if(strcasecmp(yaml->CardInfo.MediaType,"Card2") == 0) cciset->header.flags[MediaTypeIndex] = CARD2;
|
||||
else {
|
||||
fprintf(stderr,"[CCI ERROR] Invalid MediaType: %s\n",yaml->CardInfo.MediaType);
|
||||
return INVALID_YAML_OPT;
|
||||
@@ -433,7 +474,7 @@ int GetNCSDFlags(cci_settings *cciset, rsf_settings *yaml)
|
||||
}
|
||||
|
||||
/* Platform */
|
||||
cciset->flags[MediaPlatformIndex] = CTR;
|
||||
cciset->header.flags[MediaPlatformIndex] = CTR;
|
||||
|
||||
u8 saveCrypto;
|
||||
|
||||
@@ -451,23 +492,23 @@ int GetNCSDFlags(cci_settings *cciset, rsf_settings *yaml)
|
||||
|
||||
|
||||
/* FW6x SaveCrypto */
|
||||
cciset->flags[FW6x_SaveCryptoFlag] = saveCrypto == 6;
|
||||
cciset->header.flags[FW6x_SaveCryptoFlag] = saveCrypto == 6;
|
||||
|
||||
/* CardDevice */
|
||||
if(saveCrypto > 1){
|
||||
u8 flag = CardDeviceFlag;
|
||||
if(saveCrypto == 2) flag = OldCardDeviceFlag;
|
||||
if(!yaml->CardInfo.CardDevice) cciset->flags[flag] = CARD_DEVICE_NONE;
|
||||
if(!yaml->CardInfo.CardDevice) cciset->header.flags[flag] = CARD_DEVICE_NONE;
|
||||
else{
|
||||
if(strcmp(yaml->CardInfo.CardDevice,"NorFlash") == 0) {
|
||||
cciset->flags[flag] = CARD_DEVICE_NOR_FLASH;
|
||||
if(cciset->flags[MediaTypeIndex] == CARD2){
|
||||
cciset->header.flags[flag] = CARD_DEVICE_NOR_FLASH;
|
||||
if(cciset->header.flags[MediaTypeIndex] == CARD2){
|
||||
fprintf(stderr,"[CCI WARNING] 'CardDevice: NorFlash' is invalid on Card2\n");
|
||||
cciset->flags[flag] = CARD_DEVICE_NONE;
|
||||
cciset->header.flags[flag] = CARD_DEVICE_NONE;
|
||||
}
|
||||
}
|
||||
else if(strcmp(yaml->CardInfo.CardDevice,"None") == 0) cciset->flags[flag] = CARD_DEVICE_NONE;
|
||||
else if(strcmp(yaml->CardInfo.CardDevice,"BT") == 0) cciset->flags[flag] = CARD_DEVICE_BT;
|
||||
else if(strcmp(yaml->CardInfo.CardDevice,"None") == 0) cciset->header.flags[flag] = CARD_DEVICE_NONE;
|
||||
else if(strcmp(yaml->CardInfo.CardDevice,"BT") == 0) cciset->header.flags[flag] = CARD_DEVICE_BT;
|
||||
else {
|
||||
fprintf(stderr,"[CCI ERROR] Invalid CardDevice: %s\n",yaml->CardInfo.CardDevice);
|
||||
return INVALID_YAML_OPT;
|
||||
@@ -479,37 +520,37 @@ int GetNCSDFlags(cci_settings *cciset, rsf_settings *yaml)
|
||||
|
||||
int GetWriteableAddress(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
int result = GetSaveDataSize_rsf(&cciset->savedataSize,usrset);
|
||||
int result = GetSaveDataSizeFromString(&cciset->option.savedataSize,usrset->common.rsfSet.SystemControlInfo.SaveDataSize,"NCSD");
|
||||
if(result) return result;
|
||||
|
||||
char *WriteableAddressStr = usrset->common.rsfSet.CardInfo.WritableAddress;;
|
||||
|
||||
cciset->writableAddress = -1;
|
||||
if(cciset->flags[MediaTypeIndex] != CARD2) return 0; // Can only be set for Card2 Media
|
||||
cciset->cardinfo.writableAddress = -1;
|
||||
if(cciset->header.flags[MediaTypeIndex] != CARD2) return 0; // Can only be set for Card2 Media
|
||||
|
||||
if(WriteableAddressStr){
|
||||
if(strncmp(WriteableAddressStr,"0x",2) != 0){
|
||||
fprintf(stderr,"[CCI ERROR] WritableAddress requires a Hexadecimal value\n");
|
||||
return INVALID_YAML_OPT;
|
||||
}
|
||||
cciset->writableAddress = strtoul((WriteableAddressStr+2),NULL,16);
|
||||
cciset->cardinfo.writableAddress = strtoull((WriteableAddressStr+2),NULL,16);
|
||||
}
|
||||
if(cciset->writableAddress == -1){ // If not set manually or is max size
|
||||
if ((cciset->mediaSize / 2) < cciset->savedataSize){ // If SaveData size is greater than half the MediaSize
|
||||
u64 SavedataSize = cciset->savedataSize / KB;
|
||||
if(cciset->cardinfo.writableAddress == -1){ // If not set manually or is max size
|
||||
if ((cciset->header.mediaSize / 2) < cciset->option.savedataSize){ // If SaveData size is greater than half the MediaSize
|
||||
u64 SavedataSize = cciset->option.savedataSize / KB;
|
||||
fprintf(stderr,"[CCI ERROR] Too large SavedataSize %llK\n",SavedataSize);
|
||||
return SAVE_DATA_TOO_LARGE;
|
||||
}
|
||||
if (cciset->savedataSize > (u64)(2047*MB)){ // Limit set by Nintendo
|
||||
u64 SavedataSize = cciset->savedataSize / KB;
|
||||
if (cciset->option.savedataSize > (u64)(2047*MB)){ // Limit set by Nintendo
|
||||
u64 SavedataSize = cciset->option.savedataSize / KB;
|
||||
fprintf(stderr,"[CCI ERROR] Too large SavedataSize %llK\n",SavedataSize);
|
||||
return SAVE_DATA_TOO_LARGE;
|
||||
}
|
||||
if(usrset->cci.closeAlignWritableRegion)
|
||||
cciset->writableAddress = align(cciset->cciTotalSize, cciset->mediaUnit);
|
||||
cciset->cardinfo.writableAddress = align(cciset->cardinfo.cciTotalSize, cciset->option.mediaUnit);
|
||||
else{
|
||||
u64 UnusedSize = GetUnusedSize(cciset->mediaSize,cciset->flags[MediaTypeIndex]); // Need to look into this
|
||||
cciset->writableAddress = cciset->mediaSize - UnusedSize - cciset->savedataSize;
|
||||
u64 UnusedSize = GetUnusedSize(cciset->header.mediaSize,cciset->header.flags[MediaTypeIndex]); // Need to look into this
|
||||
cciset->cardinfo.writableAddress = cciset->header.mediaSize - UnusedSize - cciset->option.savedataSize;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -518,10 +559,10 @@ int GetWriteableAddress(cci_settings *cciset, user_settings *usrset)
|
||||
int GetCardInfoBitmask(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
char *str = usrset->common.rsfSet.CardInfo.CardType;
|
||||
if(!str) cciset->cardInfoBitmask |= 0;
|
||||
if(!str) cciset->cardinfo.cardInfoBitmask |= 0;
|
||||
else{
|
||||
if(strcasecmp(str,"s1") == 0) cciset->cardInfoBitmask |= 0;
|
||||
else if(strcasecmp(str,"s2") == 0) cciset->cardInfoBitmask |= 0x20;
|
||||
if(strcasecmp(str,"s1") == 0) cciset->cardinfo.cardInfoBitmask |= 0;
|
||||
else if(strcasecmp(str,"s2") == 0) cciset->cardinfo.cardInfoBitmask |= 0x20;
|
||||
else {
|
||||
fprintf(stderr,"[CCI ERROR] Invalid CardType: %s\n",str);
|
||||
return INVALID_YAML_OPT;
|
||||
@@ -529,7 +570,7 @@ int GetCardInfoBitmask(cci_settings *cciset, user_settings *usrset)
|
||||
}
|
||||
|
||||
str = usrset->common.rsfSet.CardInfo.CryptoType;
|
||||
if(!str) cciset->cardInfoBitmask |= (3*0x40);
|
||||
if(!str) cciset->cardinfo.cardInfoBitmask |= 0;//(3*0x40);
|
||||
else{
|
||||
int Value = strtol(str,NULL,10);
|
||||
if(Value < 0 || Value > 3) {
|
||||
@@ -539,7 +580,7 @@ int GetCardInfoBitmask(cci_settings *cciset, user_settings *usrset)
|
||||
if(Value != 3){
|
||||
fprintf(stderr,"[CCI WARNING] Card crypto type = '%d'\n",Value);
|
||||
}
|
||||
cciset->cardInfoBitmask |= (Value*0x40);
|
||||
cciset->cardinfo.cardInfoBitmask |= (Value*0x40);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -548,12 +589,19 @@ int GetCardInfoBitmask(cci_settings *cciset, user_settings *usrset)
|
||||
int ImportCverDetails(cci_settings *cciset, user_settings *usrset)
|
||||
{
|
||||
if(!usrset->cci.cverCiaPath){
|
||||
memset(cciset->cverTitleId,0,8);
|
||||
memset(cciset->cverTitleVersion,0,2);
|
||||
memset(cciset->cardinfo.cverTitleId,0,8);
|
||||
memset(cciset->cardinfo.cverTitleVersion,0,2);
|
||||
return 0;
|
||||
}
|
||||
if(!DoesFileExist(usrset->cci.cverCiaPath)){
|
||||
fprintf(stderr,"[NCSD ERROR] Failed to open \"%s\"\n",usrset->cci.cverCiaPath);
|
||||
if(!cciset->content.size[7]){
|
||||
fprintf(stderr,"[CCI WARNING] Update Partition (content 7) is not specified, cver details will not be set\n");
|
||||
memset(cciset->cardinfo.cverTitleId,0,8);
|
||||
memset(cciset->cardinfo.cverTitleVersion,0,2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!AssertFile(usrset->cci.cverCiaPath)){
|
||||
fprintf(stderr,"[CCI ERROR] Failed to open \"%s\"\n",usrset->cci.cverCiaPath);
|
||||
return FAILED_TO_IMPORT_FILE;
|
||||
}
|
||||
FILE *cia = fopen(usrset->cci.cverCiaPath,"rb");
|
||||
@@ -565,11 +613,14 @@ int ImportCverDetails(cci_settings *cciset, user_settings *usrset)
|
||||
u8 *tmd = calloc(1,tmdSize);
|
||||
ReadFile_64(tmd,tmdSize,tmdOffset,cia);
|
||||
tmd_hdr *tmdHdr = GetTmdHdr(tmd);
|
||||
memdump(stdout,"tmd: ",(u8*)tmdHdr,sizeof(tmd_hdr));
|
||||
//memdump(stdout,"tmd: ",(u8*)tmdHdr,sizeof(tmd_hdr));
|
||||
|
||||
|
||||
endian_memcpy(cciset->cverTitleId,tmdHdr->titleID,8,LE);
|
||||
endian_memcpy(cciset->cverTitleVersion,tmdHdr->titleVersion,2,LE);
|
||||
endian_memcpy(cciset->cardinfo.cverTitleId,tmdHdr->titleID,8,LE);
|
||||
endian_memcpy(cciset->cardinfo.cverTitleVersion,tmdHdr->titleVersion,2,LE);
|
||||
|
||||
if(!usrset->cci.dontModifyNcchTitleID)
|
||||
endian_memcpy(&cciset->content.titleId[7][6],tmdHdr->titleVersion,2,LE);
|
||||
|
||||
fclose(cia);
|
||||
free(ciaHdr);
|
||||
@@ -580,9 +631,9 @@ int ImportCverDetails(cci_settings *cciset, user_settings *usrset)
|
||||
|
||||
int CheckMediaSize(cci_settings *cciset)
|
||||
{
|
||||
if(cciset->cciTotalSize > cciset->mediaSize){
|
||||
if(cciset->cardinfo.cciTotalSize > cciset->header.mediaSize){
|
||||
char *MediaSizeStr = NULL;
|
||||
switch(cciset->mediaSize){
|
||||
switch(cciset->header.mediaSize){
|
||||
case (u64)128*MB: MediaSizeStr = " '128MB'"; break;
|
||||
case (u64)256*MB: MediaSizeStr = " '256MB'"; break;
|
||||
case (u64)512*MB: MediaSizeStr = " '512MB'"; break;
|
||||
@@ -605,8 +656,9 @@ bool IsCci(u8 *ncsd)
|
||||
cci_hdr *hdr = (cci_hdr*)(ncsd+0x100);
|
||||
if(!hdr) return false;
|
||||
if(memcmp(hdr->magic,"NCSD",4)!=0) return false;
|
||||
if(hdr->partitionFlags[MediaPlatformIndex] != CTR) return false;
|
||||
if(hdr->partitionFlags[MediaTypeIndex] != CARD1 && hdr->partitionFlags[MediaTypeIndex] != CARD2) return false;
|
||||
if(hdr->flags[MediaPlatformIndex] != CTR) return false;
|
||||
if(hdr->flags[MediaTypeIndex] != CARD1 && hdr->flags[MediaTypeIndex] != CARD2) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -619,7 +671,7 @@ u8* GetPartition(u8 *ncsd, u8 index)
|
||||
u64 GetPartitionOffset(u8 *ncsd, u8 index)
|
||||
{
|
||||
cci_hdr *hdr = (cci_hdr*)(ncsd+0x100);
|
||||
u32 media_size = 0x200*pow(2,hdr->partitionFlags[MediaUnitSize]);
|
||||
u32 media_size = 0x200*pow(2,hdr->flags[MediaUnitSize]);
|
||||
u32 offset = u8_to_u64(hdr->offset_sizeTable[index].offset,LE);
|
||||
return offset*media_size;
|
||||
}
|
||||
@@ -627,7 +679,7 @@ u64 GetPartitionOffset(u8 *ncsd, u8 index)
|
||||
u64 GetPartitionSize(u8 *ncsd, u8 index)
|
||||
{
|
||||
cci_hdr *hdr = (cci_hdr*)(ncsd+0x100);
|
||||
u32 media_size = 0x200*pow(2,hdr->partitionFlags[MediaUnitSize]);
|
||||
u32 media_size = 0x200*pow(2,hdr->flags[MediaUnitSize]);
|
||||
u32 size = u8_to_u64(hdr->offset_sizeTable[index].size,LE);
|
||||
return size*media_size;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,9 @@ typedef enum
|
||||
{
|
||||
NCSD_NO_NCCH0 = -1,
|
||||
NCSD_INVALID_NCCH0 = -2,
|
||||
INVALID_YAML_OPT = -3,
|
||||
CCI_SIG_FAIL = -4,
|
||||
NCSD_INVALID_NCCH = -3,
|
||||
INVALID_YAML_OPT = -4,
|
||||
CCI_SIG_FAIL = -5,
|
||||
|
||||
} ncsd_errors;
|
||||
|
||||
@@ -69,12 +70,12 @@ typedef struct
|
||||
u8 magic[4];
|
||||
u8 mediaSize[4];
|
||||
u8 titleId[8];
|
||||
u8 partitionsFsType[8];
|
||||
u8 partitionsCryptoType[8];
|
||||
u8 contentFsType[8];
|
||||
u8 contentCryptoType[8];
|
||||
partition_offsetsize offset_sizeTable[8];
|
||||
u8 padding0[0x28];
|
||||
u8 partitionFlags[8];
|
||||
u8 partitionIdTable[8][8];
|
||||
u8 flags[8];
|
||||
u8 contentIdTable[8][8];
|
||||
u8 padding1[0x30];
|
||||
} cci_hdr;
|
||||
|
||||
@@ -82,18 +83,20 @@ typedef struct
|
||||
{
|
||||
u8 writableAddress[4];
|
||||
u8 cardInfoBitmask[4];
|
||||
// Notes
|
||||
// Notes: reserved[0xDF8];
|
||||
u8 reserved0[0xf8];
|
||||
u8 mediaSizeUsed[8];
|
||||
u8 reserved1[0x18];
|
||||
u8 reserved1[0x8];
|
||||
u8 unknown[0x4];
|
||||
u8 reserved2[0xc];
|
||||
u8 cverTitleId[8];
|
||||
u8 cverTitleVersion[2];
|
||||
u8 reserved2[0xcd6];
|
||||
u8 reserved3[0xcd6];
|
||||
//
|
||||
u8 ncch0TitleId[8];
|
||||
u8 reserved3[8];
|
||||
u8 reserved4[8];
|
||||
u8 initialData[0x30];
|
||||
u8 reserved4[0xc0];
|
||||
u8 reserved5[0xc0];
|
||||
u8 ncch0Hdr[0x100];
|
||||
} cardinfo_hdr;
|
||||
|
||||
@@ -110,41 +113,61 @@ typedef struct
|
||||
cci_hdr cciHdr;
|
||||
cardinfo_hdr cardinfo;
|
||||
devcardinfo_hdr devcardinfo;
|
||||
u8 *ncchImportBuffer;
|
||||
keys_struct *keys;
|
||||
} InternalCCI_Context;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FILE *out;
|
||||
keys_struct *keys;
|
||||
|
||||
struct{
|
||||
bool fillOutCci;
|
||||
bool useDevCardInfo;
|
||||
u32 mediaUnit;
|
||||
|
||||
u64 savedataSize;
|
||||
} option;
|
||||
|
||||
struct{
|
||||
/* Data */
|
||||
buffer_struct *data;
|
||||
|
||||
/* Misc Records */
|
||||
FILE **filePtrs;
|
||||
u64 fileSize[CCI_MAX_CONTENT];
|
||||
u16 count;
|
||||
|
||||
/* Details for NCSD header */
|
||||
u8 fsType[CCI_MAX_CONTENT];
|
||||
u8 cryptoType[CCI_MAX_CONTENT];
|
||||
u64 offset[CCI_MAX_CONTENT];
|
||||
u64 size[CCI_MAX_CONTENT];
|
||||
u8 titleId[CCI_MAX_CONTENT][8];
|
||||
} content;
|
||||
|
||||
struct{
|
||||
u64 mediaSize;
|
||||
u8 mediaId[8];
|
||||
u8 flags[8];
|
||||
u64 savedataSize;
|
||||
} header;
|
||||
|
||||
struct{
|
||||
u64 writableAddress;
|
||||
u32 cardInfoBitmask;
|
||||
|
||||
u64 cciTotalSize;
|
||||
|
||||
// cver details
|
||||
u8 cverTitleId[8];
|
||||
u8 cverTitleVersion[2];
|
||||
|
||||
u8 initialData[0x30];
|
||||
ncch_hdr *ncchHdr;
|
||||
ncch_hdr ncchHdr;
|
||||
u8 titleKey[0x10];
|
||||
|
||||
u8 *ncch0;
|
||||
u64 ncch0_FileLen;
|
||||
FILE **content;
|
||||
u64 contentSize[CCI_MAX_CONTENT];
|
||||
u64 contentOffset[CCI_MAX_CONTENT];
|
||||
u8 contentTitleId[CCI_MAX_CONTENT][8];
|
||||
u64 cciTotalSize;
|
||||
|
||||
bool fillOutCci;
|
||||
u32 mediaUnit;
|
||||
|
||||
FILE *out;
|
||||
} cardinfo;
|
||||
} cci_settings;
|
||||
|
||||
#ifndef PUBLIC_BUILD
|
||||
static const u8 stock_initial_data[0x30] =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -163,6 +186,7 @@ static const u8 stock_title_key[0x10] =
|
||||
0x87, 0x46, 0x1E, 0xDD, 0xCB, 0xB8,
|
||||
0x97, 0x11, 0x92, 0xBA
|
||||
};
|
||||
#endif
|
||||
|
||||
// Public Prototypes
|
||||
// Build Functions
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#endif
|
||||
|
||||
// AES KEYS
|
||||
static const unsigned char ctr_unfixed_ncch_keyX_ppki[2][16] = // Dummy
|
||||
static const unsigned char prod_unfixed_ncch_keyX[2][16] = // Dummy
|
||||
{
|
||||
{0x81, 0x50, 0xA9, 0x78, 0x53, 0x3B, 0xA5, 0xE9, 0xA5, 0x0A, 0x23, 0x16, 0xB9, 0x3A, 0xED, 0x5A} , // Normal
|
||||
{0xB4, 0xD1, 0xCF, 0x58, 0x49, 0xCE, 0x8A, 0x2D, 0x71, 0x58, 0xF6, 0x66, 0x77, 0x5D, 0x16, 0x3D} , // 7.X new Crypto
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "lib.h"
|
||||
#include "dir.h"
|
||||
#include "ncch.h"
|
||||
#include "romfs.h"
|
||||
#include "romfs_binary.h"
|
||||
@@ -16,15 +17,12 @@ int SetupRomFs(ncch_settings *ncchset, romfs_buildctx *ctx)
|
||||
if(!ncchset->options.UseRomFS)
|
||||
return 0;
|
||||
|
||||
int result = 0;
|
||||
|
||||
if(ncchset->componentFilePtrs.romfs)// The user has specified a pre-built RomFs Binary
|
||||
result = PrepareImportRomFsBinaryFromFile(ncchset,ctx);
|
||||
return PrepareImportRomFsBinaryFromFile(ncchset,ctx);
|
||||
|
||||
else // Otherwise build ROMFS
|
||||
result = PrepareBuildRomFsBinary(ncchset,ctx);
|
||||
return PrepareBuildRomFsBinary(ncchset,ctx);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int BuildRomFs(romfs_buildctx *ctx)
|
||||
@@ -49,4 +47,9 @@ void FreeRomFsCtx(romfs_buildctx *ctx)
|
||||
{
|
||||
if(ctx->romfsBinary)
|
||||
fclose(ctx->romfsBinary);
|
||||
if(ctx->fs){
|
||||
fs_FreeFiles(ctx->fs);
|
||||
fs_FreeDir(ctx->fs);
|
||||
free(ctx->fs);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,15 @@ typedef enum
|
||||
|
||||
|
||||
// IVFC Structs
|
||||
typedef struct
|
||||
{
|
||||
u64 size;
|
||||
u64 offset;
|
||||
u64 logicalOffset;
|
||||
u8 *pos;
|
||||
u8 reserved[8];
|
||||
} ivfc_level;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 logicalOffset[8];
|
||||
@@ -20,14 +29,11 @@ typedef struct
|
||||
u8 magic[4];
|
||||
u8 id[4];
|
||||
u8 masterHashSize[4];
|
||||
ivfc_levelheader level1;
|
||||
ivfc_levelheader level2;
|
||||
ivfc_levelheader level3;
|
||||
u8 reserved[4];
|
||||
ivfc_levelheader level[3];
|
||||
u8 optionalSize[4];
|
||||
u8 reserved[4];
|
||||
} ivfc_hdr;
|
||||
|
||||
// ROMFS FS Structs
|
||||
typedef struct
|
||||
{
|
||||
u8 offset[4];
|
||||
@@ -37,9 +43,9 @@ typedef struct
|
||||
typedef struct
|
||||
{
|
||||
u8 headersize[4];
|
||||
romfs_sectionheader section[4];
|
||||
romfs_sectionheader section[4]; // 8*4 = 0x20
|
||||
u8 dataoffset[4];
|
||||
} romfs_infoheader;
|
||||
} romfs_infoheader; //sizeof(romfs_infoheader) = 0x28
|
||||
|
||||
|
||||
typedef struct
|
||||
@@ -64,16 +70,58 @@ typedef struct
|
||||
//u8 name[ROMFS_MAXNAMESIZE];
|
||||
} romfs_fileentry; //sizeof(romfs_fileentry) = 0x20
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 *output;
|
||||
u64 romfsSize;
|
||||
u64 romfsHeaderSize;
|
||||
|
||||
/* For Importing ROMFS Binaries */
|
||||
bool ImportRomfsBinary;
|
||||
FILE *romfsBinary;
|
||||
|
||||
/* For Creating ROMFS Binaries */
|
||||
ivfc_hdr *ivfcHdr;
|
||||
romfs_infoheader *romfsHdr;
|
||||
|
||||
fs_dir *fs;
|
||||
|
||||
u32 *dirUTable;
|
||||
u32 m_dirUTableEntry;
|
||||
u32 u_dirUTableEntry;
|
||||
|
||||
u8 *dirTable;
|
||||
u32 dirNum;
|
||||
u32 m_dirTableLen;
|
||||
u32 u_dirTableLen;
|
||||
|
||||
u32 *fileUTable;
|
||||
u32 m_fileUTableEntry;
|
||||
u32 u_fileUTableEntry;
|
||||
|
||||
u8 *fileTable;
|
||||
u32 fileNum;
|
||||
u32 m_fileTableLen;
|
||||
u32 u_fileTableLen;
|
||||
|
||||
u8 *data;
|
||||
u64 m_dataLen;
|
||||
u64 u_dataLen;
|
||||
|
||||
// Levels
|
||||
ivfc_level level[4];
|
||||
} romfs_buildctx;
|
||||
|
||||
/*
|
||||
typedef struct
|
||||
{
|
||||
u8 *output;
|
||||
u64 romfsSize;
|
||||
u64 romfsHeaderSize;
|
||||
|
||||
bool ImportRomfsBinary;
|
||||
FILE *romfsBinary;
|
||||
} romfs_buildctx;
|
||||
|
||||
*/
|
||||
int SetupRomFs(ncch_settings *ncchset, romfs_buildctx *ctx);
|
||||
int BuildRomFs(romfs_buildctx *ctx);
|
||||
+497
@@ -1,13 +1,510 @@
|
||||
#include "lib.h"
|
||||
#include "dir.h"
|
||||
#include "ncch.h"
|
||||
#include "romfs.h"
|
||||
|
||||
const int ROMFS_BLOCK_SIZE = 0x1000;
|
||||
const unsigned int ROMFS_UNUSED_ENTRY = 0xffffffff;
|
||||
|
||||
// Build
|
||||
bool IsFileWanted(fs_file *file, void *filter_criteria);
|
||||
bool IsDirWanted(fs_dir *dir, void *filter_criteria);
|
||||
void CalcDirSize(romfs_buildctx *ctx, fs_dir *fs);
|
||||
int CalcRomfsSize(romfs_buildctx *ctx);
|
||||
int AddFileToRomfs(romfs_buildctx *ctx, fs_file *file, u32 parent, u32 sibling);
|
||||
int AddDirToRomfs(romfs_buildctx *ctx, fs_dir *fs, u32 parent, u32 sibling);
|
||||
int FilterRomFS(fs_dir *fs_raw, fs_dir *fs_filtered, void *filter_criteria);
|
||||
int PopulateRomfs(romfs_buildctx *ctx);
|
||||
void BuildRomfsHeader(romfs_buildctx *ctx);
|
||||
void BuildIvfcHeader(romfs_buildctx *ctx);
|
||||
void GenIvfcHashTree(romfs_buildctx *ctx);
|
||||
|
||||
|
||||
int PrepareBuildRomFsBinary(ncch_settings *ncchset, romfs_buildctx *ctx)
|
||||
{
|
||||
// Input Path
|
||||
//printf("Get input path\n");
|
||||
|
||||
const int CWD_MAX_LEN = 1024;
|
||||
char *cwd = calloc(CWD_MAX_LEN,sizeof(char));
|
||||
getcwd(cwd,CWD_MAX_LEN);
|
||||
|
||||
char *dir = ncchset->rsfSet->Rom.HostRoot;
|
||||
|
||||
fs_char *fs_path;
|
||||
fs_romfs_char *path;
|
||||
u32 path_len;
|
||||
#ifdef _WIN32
|
||||
str_u8_to_u16(&path,&path_len,(u8*)dir,strlen(dir));
|
||||
fs_path = path;
|
||||
#else
|
||||
str_utf8_to_u16(&path,&path_len,(u8*)dir,strlen(dir));
|
||||
fs_path = dir;
|
||||
#endif
|
||||
|
||||
// FS Structures
|
||||
void *filter_criteria = NULL;
|
||||
//printf("calloc fs_raw\n");
|
||||
fs_dir *fs_raw = calloc(1,sizeof(fs_dir));
|
||||
//printf("calloc ctx->fs\n");
|
||||
ctx->fs = calloc(1,sizeof(fs_dir));
|
||||
//memdump(stdout,"ctx->fs: ",(u8*)ctx->fs,sizeof(fs_dir));
|
||||
//printf("ctx->fs = 0x%x\n",ctx->fs);
|
||||
|
||||
// Import FS and process
|
||||
//printf("open fs into fs_raw\n");
|
||||
fs_OpenDir(fs_path,path,path_len,fs_raw);
|
||||
//printf("filter fs_raw into ctx->fs\n");
|
||||
FilterRomFS(fs_raw,ctx->fs,filter_criteria);
|
||||
|
||||
// free unfiltered FS
|
||||
fs_PrintDir(fs_raw,0);
|
||||
//printf("free discarded file ptrs\n");
|
||||
fs_FreeFiles(fs_raw); // All important FPs have been moved with FilterRomFS, so only un-wanted FPs are closed here
|
||||
//printf("free structs in fs_raw\n");
|
||||
fs_FreeDir(fs_raw);
|
||||
//printf("free fs_raw\n");
|
||||
free(fs_raw);
|
||||
|
||||
//printf("leave if no ROMFS needs to be made\n");
|
||||
if(ctx->fs->u_file == 0){
|
||||
ctx->romfsSize = 0;
|
||||
goto finish;
|
||||
}
|
||||
|
||||
|
||||
// Print Filtered FS
|
||||
//printf("print filtered FS\n");
|
||||
fs_PrintDir(ctx->fs,0);
|
||||
|
||||
//printf("predict romfs size\n");
|
||||
CalcRomfsSize(ctx);
|
||||
|
||||
finish:
|
||||
chdir(cwd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int BuildRomFsBinary(romfs_buildctx *ctx)
|
||||
{
|
||||
// Decide IVFC Level Actual Offsets
|
||||
ctx->level[0].offset = 0;
|
||||
ctx->level[3].offset = ctx->level[0].offset + align(ctx->level[0].size, ROMFS_BLOCK_SIZE);
|
||||
ctx->level[1].offset = ctx->level[3].offset + align(ctx->level[3].size, ROMFS_BLOCK_SIZE);
|
||||
ctx->level[2].offset = ctx->level[1].offset + align(ctx->level[1].size, ROMFS_BLOCK_SIZE);
|
||||
|
||||
// Decide IVFC Level Logical Offsets
|
||||
for(int i = 1; i < 4; i++){
|
||||
if(i == 1)
|
||||
ctx->level[i].logicalOffset = 0;
|
||||
else
|
||||
ctx->level[i].logicalOffset = align(ctx->level[i-1].logicalOffset + ctx->level[i-1].size,ROMFS_BLOCK_SIZE);
|
||||
}
|
||||
|
||||
// Setup IVFC Level Ptrs
|
||||
for(int i = 0; i < 4; i++){
|
||||
ctx->level[i].pos = (ctx->output + ctx->level[i].offset);
|
||||
if(i == 0)
|
||||
ctx->level[i].pos += align(sizeof(ivfc_hdr),0x10);
|
||||
}
|
||||
|
||||
// Build Romfs
|
||||
ctx->romfsHdr = (romfs_infoheader*)(ctx->level[3].pos);
|
||||
BuildRomfsHeader(ctx);
|
||||
if(PopulateRomfs(ctx) != 0)
|
||||
return -1;
|
||||
|
||||
|
||||
// Finalise by building IVFC hash tree
|
||||
ctx->ivfcHdr = (ivfc_hdr*)(ctx->output + ctx->level[0].offset);
|
||||
BuildIvfcHeader(ctx);
|
||||
GenIvfcHashTree(ctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool IsFileWanted(fs_file *file, void *filter_criteria)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IsDirWanted(fs_dir *dir, void *filter_criteria)
|
||||
{
|
||||
bool ret = false;
|
||||
for(u32 i = 0; i < dir->u_file; i++)
|
||||
{
|
||||
if(IsFileWanted(&dir->file[i],filter_criteria))
|
||||
{
|
||||
ret = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
fs_dir *tmp = (fs_dir*)dir->dir;
|
||||
for(u32 i = 0; i < dir->u_dir; i++)
|
||||
{
|
||||
if(IsDirWanted(&tmp[i],filter_criteria))
|
||||
{
|
||||
ret = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void CalcDirSize(romfs_buildctx *ctx, fs_dir *fs)
|
||||
{
|
||||
if(ctx->m_dirTableLen == 0)
|
||||
ctx->m_dirTableLen = sizeof(romfs_direntry);
|
||||
else
|
||||
ctx->m_dirTableLen += sizeof(romfs_direntry) + align(fs->name_len,4);
|
||||
|
||||
for(u32 i = 0; i < fs->u_file; i++)
|
||||
{
|
||||
ctx->m_fileTableLen += sizeof(romfs_fileentry) + align(fs->file[i].name_len,4);
|
||||
if(fs->file[i].size)
|
||||
ctx->m_dataLen = align(ctx->m_dataLen,0x10) + fs->file[i].size;
|
||||
}
|
||||
|
||||
fs_dir *dir = (fs_dir*)fs->dir;
|
||||
for(u32 i = 0; i < fs->u_dir; i++)
|
||||
{
|
||||
CalcDirSize(ctx,&dir[i]);
|
||||
}
|
||||
ctx->fileNum += fs->u_file;
|
||||
ctx->dirNum += fs->u_dir;
|
||||
}
|
||||
|
||||
int CalcRomfsSize(romfs_buildctx *ctx)
|
||||
{
|
||||
ctx->dirNum = 1; // root dir
|
||||
//printf("Recursively get FS sizes\n");
|
||||
CalcDirSize(ctx,ctx->fs);
|
||||
|
||||
//printf("check U tables\n");
|
||||
ctx->u_dirUTableEntry = 0;
|
||||
ctx->m_dirUTableEntry = 3;
|
||||
if(ctx->dirNum > 3)
|
||||
ctx->m_dirUTableEntry += align(ctx->dirNum-3,2);
|
||||
|
||||
ctx->u_fileUTableEntry = 0;
|
||||
ctx->m_fileUTableEntry = 3;
|
||||
if(ctx->fileNum > 3)
|
||||
ctx->m_fileUTableEntry += align(ctx->fileNum-3,2);
|
||||
|
||||
//printf("calc romfs header size\n");
|
||||
u32 romfsHdrSize = align(sizeof(romfs_infoheader) + ctx->m_dirUTableEntry*sizeof(u32) + ctx->m_dirTableLen + ctx->m_fileUTableEntry*sizeof(u32) + ctx->m_fileTableLen,0x10);
|
||||
|
||||
//printf("predict level sizes\n");
|
||||
ctx->level[3].size = romfsHdrSize + ctx->m_dataLen; // data
|
||||
ctx->level[2].size = align(ctx->level[3].size,ROMFS_BLOCK_SIZE) / ROMFS_BLOCK_SIZE * 0x20 ;
|
||||
ctx->level[1].size = align(ctx->level[2].size,ROMFS_BLOCK_SIZE) / ROMFS_BLOCK_SIZE * 0x20 ;
|
||||
ctx->level[0].size = align(ctx->level[1].size,ROMFS_BLOCK_SIZE) / ROMFS_BLOCK_SIZE * 0x20 + align(sizeof(ivfc_hdr),0x10); // hdr
|
||||
|
||||
ctx->romfsHeaderSize = ctx->level[0].size;
|
||||
|
||||
//printf("calc total ROMFS size\n");
|
||||
ctx->romfsSize = 0;
|
||||
for(int i = 0; i < 4; i++)
|
||||
ctx->romfsSize += align(ctx->level[i].size,ROMFS_BLOCK_SIZE);
|
||||
|
||||
//printf("return from CalcRomfsSize();\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int FilterRomFS(fs_dir *fs_raw, fs_dir *fs_filtered, void *filter_criteria)
|
||||
{
|
||||
memset(fs_filtered,0,sizeof(fs_dir));
|
||||
if(!IsDirWanted(fs_raw,filter_criteria))
|
||||
return 0;
|
||||
|
||||
fs_filtered->name_len = fs_raw->name_len;
|
||||
fs_filtered->name = calloc(fs_filtered->name_len+2,1);
|
||||
memcpy(fs_filtered->name,fs_raw->name,fs_filtered->name_len);
|
||||
|
||||
fs_filtered->u_dir = 0;
|
||||
fs_filtered->m_dir = fs_raw->u_dir;
|
||||
fs_filtered->dir = calloc(fs_filtered->m_dir,sizeof(fs_dir));
|
||||
|
||||
fs_filtered->u_file = 0;
|
||||
fs_filtered->m_file = fs_raw->u_file;
|
||||
fs_filtered->file = calloc(fs_filtered->m_file,sizeof(fs_file));
|
||||
|
||||
|
||||
fs_dir *dir_raw = (fs_dir*)fs_raw->dir;
|
||||
fs_dir *dir_filtered = (fs_dir*)fs_filtered->dir;
|
||||
for(u32 i = 0; i < fs_raw->u_dir; i++)
|
||||
{
|
||||
if(IsDirWanted(&dir_raw[i],filter_criteria))
|
||||
{
|
||||
FilterRomFS(&dir_raw[i],&dir_filtered[fs_filtered->u_dir],filter_criteria);
|
||||
fs_filtered->u_dir++;
|
||||
}
|
||||
}
|
||||
|
||||
for(u32 i = 0; i < fs_raw->u_file; i++)
|
||||
{
|
||||
if(IsFileWanted(&fs_raw->file[i],filter_criteria))
|
||||
{
|
||||
fs_filtered->file[fs_filtered->u_file].name_len = fs_raw->file[i].name_len;
|
||||
fs_filtered->file[fs_filtered->u_file].name = malloc(fs_filtered->file[fs_filtered->u_file].name_len+2);
|
||||
memset(fs_filtered->file[fs_filtered->u_file].name,0,fs_filtered->file[fs_filtered->u_file].name_len+2);
|
||||
memcpy(fs_filtered->file[fs_filtered->u_file].name,fs_raw->file[i].name,fs_filtered->file[fs_filtered->u_file].name_len);
|
||||
|
||||
fs_filtered->file[fs_filtered->u_file].size = fs_raw->file[i].size;
|
||||
|
||||
fs_filtered->file[fs_filtered->u_file].fp = fs_raw->file[i].fp;
|
||||
fs_raw->file[i].fp = NULL;
|
||||
|
||||
fs_filtered->u_file++;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void BuildRomfsHeader(romfs_buildctx *ctx)
|
||||
{
|
||||
u32 level3_pos = 0;
|
||||
|
||||
u32_to_u8(ctx->romfsHdr->headersize,sizeof(romfs_infoheader),LE);
|
||||
|
||||
level3_pos += sizeof(romfs_infoheader);
|
||||
|
||||
for(int i = 0; i < 4; i++){
|
||||
if(i == 0){
|
||||
ctx->dirUTable = (u32*)(ctx->level[3].pos + level3_pos);
|
||||
u32_to_u8(ctx->romfsHdr->section[i].offset,level3_pos,LE);
|
||||
u32_to_u8(ctx->romfsHdr->section[i].size,ctx->m_dirUTableEntry*sizeof(u32),LE);
|
||||
level3_pos += ctx->m_dirUTableEntry*sizeof(u32);
|
||||
}
|
||||
else if(i == 1 && ctx->m_dirTableLen){
|
||||
ctx->dirTable = ctx->level[3].pos + level3_pos;
|
||||
u32_to_u8(ctx->romfsHdr->section[i].offset,level3_pos,LE);
|
||||
u32_to_u8(ctx->romfsHdr->section[i].size,ctx->m_dirTableLen,LE);
|
||||
level3_pos += ctx->m_dirTableLen;
|
||||
}
|
||||
else if(i == 2){
|
||||
ctx->fileUTable = (u32*)(ctx->level[3].pos + level3_pos);
|
||||
u32_to_u8(ctx->romfsHdr->section[i].offset,level3_pos,LE);
|
||||
u32_to_u8(ctx->romfsHdr->section[i].size,ctx->m_fileUTableEntry*sizeof(u32),LE);
|
||||
level3_pos += ctx->m_fileUTableEntry*sizeof(u32);
|
||||
}
|
||||
else if(i == 3 && ctx->m_fileTableLen){
|
||||
ctx->fileTable = ctx->level[3].pos + level3_pos;
|
||||
u32_to_u8(ctx->romfsHdr->section[i].offset,level3_pos,LE);
|
||||
u32_to_u8(ctx->romfsHdr->section[i].size,ctx->m_fileTableLen,LE);
|
||||
level3_pos += ctx->m_fileTableLen;
|
||||
}
|
||||
else{
|
||||
u32_to_u8(ctx->romfsHdr->section[i].offset,0,LE);
|
||||
u32_to_u8(ctx->romfsHdr->section[i].size,0,LE);
|
||||
}
|
||||
}
|
||||
|
||||
ctx->data = ctx->level[3].pos + align(level3_pos,0x10);
|
||||
u32_to_u8(ctx->romfsHdr->dataoffset,align(level3_pos,0x10),LE);
|
||||
|
||||
memset(ctx->dirUTable,0xff,ctx->m_dirUTableEntry*sizeof(u32));
|
||||
memset(ctx->fileUTable,0xff,ctx->m_fileUTableEntry*sizeof(u32));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
u32 GetFileUTableIndex(romfs_buildctx *ctx, fs_file *file)
|
||||
{
|
||||
u32 ret = ctx->u_fileUTableEntry;
|
||||
ctx->u_fileUTableEntry++;
|
||||
return ret;
|
||||
}
|
||||
|
||||
u32 GetDirUTableIndex(romfs_buildctx *ctx, fs_dir *dir)
|
||||
{
|
||||
u32 ret = ctx->u_dirUTableEntry;
|
||||
ctx->u_dirUTableEntry++;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int AddFileToRomfs(romfs_buildctx *ctx, fs_file *file, u32 parent, u32 sibling)
|
||||
{
|
||||
romfs_fileentry *entry = (romfs_fileentry*)(ctx->fileTable + ctx->u_fileTableLen);
|
||||
|
||||
u32_to_u8(entry->parentdiroffset,parent,LE);
|
||||
u32_to_u8(entry->siblingoffset,sibling,LE);
|
||||
|
||||
u32 uTableIndex = GetFileUTableIndex(ctx,file);
|
||||
u32_to_u8(entry->weirdoffset,ctx->fileUTable[uTableIndex],LE);
|
||||
ctx->fileUTable[uTableIndex] = ctx->u_fileTableLen;
|
||||
|
||||
// Import Name
|
||||
u32_to_u8(entry->namesize,file->name_len,LE);
|
||||
u8 *name_pos = (u8*)(ctx->fileTable + ctx->u_fileTableLen + sizeof(romfs_fileentry));
|
||||
memset(name_pos,0,align(file->name_len,4));
|
||||
memcpy(name_pos,(u8*)file->name,file->name_len);
|
||||
|
||||
// Import Data
|
||||
if(file->size)
|
||||
{
|
||||
ctx->u_dataLen = align(ctx->u_dataLen,0x10); // Padding
|
||||
u64_to_u8(entry->dataoffset,ctx->u_dataLen,LE);
|
||||
u64_to_u8(entry->datasize,file->size,LE);
|
||||
u8 *data_pos = (ctx->data + ctx->u_dataLen);
|
||||
ReadFile_64(data_pos,file->size,0,file->fp);
|
||||
ctx->u_dataLen += file->size; // adding file size
|
||||
}
|
||||
else
|
||||
u64_to_u8(entry->dataoffset,0x40,LE);
|
||||
|
||||
ctx->u_fileTableLen += sizeof(romfs_fileentry) + align(file->name_len,4);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int AddDirToRomfs(romfs_buildctx *ctx, fs_dir *fs, u32 parent, u32 sibling)
|
||||
{
|
||||
//wprintf(L"adding %s \n",fs->name);
|
||||
romfs_direntry *entry = (romfs_direntry*)(ctx->dirTable + ctx->u_dirTableLen);
|
||||
|
||||
u32_to_u8(entry->parentoffset,parent,LE);
|
||||
u32_to_u8(entry->siblingoffset,sibling,LE);
|
||||
|
||||
u32 uTableIndex = GetDirUTableIndex(ctx,fs);
|
||||
u32_to_u8(entry->weirdoffset,ctx->dirUTable[uTableIndex],LE);
|
||||
ctx->dirUTable[uTableIndex] = ctx->u_dirTableLen;
|
||||
|
||||
u32 Currentdir = ctx->u_dirTableLen;
|
||||
|
||||
if(Currentdir == 0)
|
||||
{
|
||||
u32_to_u8(entry->namesize,0,LE);
|
||||
ctx->u_dirTableLen += sizeof(romfs_direntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
u32_to_u8(entry->namesize,fs->name_len,LE);
|
||||
u8 *name_pos = (u8*)(ctx->dirTable + ctx->u_dirTableLen + sizeof(romfs_direntry));
|
||||
memset(name_pos,0,(u32)align(fs->name_len,4));
|
||||
memcpy(name_pos,(u8*)fs->name,fs->name_len);
|
||||
ctx->u_dirTableLen += sizeof(romfs_direntry) + (u32)align(fs->name_len,4);
|
||||
}
|
||||
|
||||
if(fs->u_file)
|
||||
{
|
||||
u32_to_u8(entry->fileoffset,ctx->u_fileTableLen,LE);
|
||||
for(u32 i = 0; i < fs->u_file; i++)
|
||||
{
|
||||
u32 file_sibling = 0;
|
||||
if(i >= fs->u_file-1)
|
||||
file_sibling = ROMFS_UNUSED_ENTRY;
|
||||
else
|
||||
file_sibling = ctx->u_fileTableLen + sizeof(romfs_fileentry) + (u32)align(fs->file[i].name_len,4);
|
||||
//wprintf(L"adding %s (0x%lx)\n",fs->file[i].name,fs->file[i].size);
|
||||
AddFileToRomfs(ctx,&fs->file[i],Currentdir,file_sibling);
|
||||
//wprintf(L"added %s (0x%lx)\n",fs->file[i].name,fs->file[i].size);
|
||||
}
|
||||
}
|
||||
else
|
||||
u32_to_u8(entry->fileoffset,ROMFS_UNUSED_ENTRY,LE);
|
||||
|
||||
//printf("Checking if to add dirs\n");
|
||||
if(fs->u_dir)
|
||||
{
|
||||
//printf(" is adding dirs \n");
|
||||
u32_to_u8(entry->childoffset,ctx->u_dirTableLen,LE);
|
||||
fs_dir *dir = (fs_dir*)fs->dir;
|
||||
for(u32 i = 0; i < fs->u_dir; i++)
|
||||
{
|
||||
u32 dir_sibling = 0;
|
||||
if(i >= fs->u_dir-1)
|
||||
dir_sibling = ROMFS_UNUSED_ENTRY;
|
||||
else
|
||||
{
|
||||
//printf(" dir has sibling\n");
|
||||
dir_sibling = ctx->u_dirTableLen + sizeof(romfs_direntry) + (u32)align(dir[i].name_len,4);
|
||||
}
|
||||
AddDirToRomfs(ctx,&dir[i],Currentdir,dir_sibling);
|
||||
}
|
||||
}
|
||||
else
|
||||
u32_to_u8(entry->childoffset,ROMFS_UNUSED_ENTRY,LE);
|
||||
//printf(" finished adding dirs \n");
|
||||
|
||||
//wprintf(L"added %s \n",fs->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int PopulateRomfs(romfs_buildctx *ctx)
|
||||
{
|
||||
return AddDirToRomfs(ctx,ctx->fs,0x0,ROMFS_UNUSED_ENTRY);
|
||||
}
|
||||
|
||||
void BuildIvfcHeader(romfs_buildctx *ctx)
|
||||
{
|
||||
memcpy(ctx->ivfcHdr->magic,"IVFC",4);
|
||||
u32_to_u8(ctx->ivfcHdr->id,0x10000,LE);
|
||||
|
||||
u32 masterHashSize = ( align(ctx->level[1].size,ROMFS_BLOCK_SIZE) / ROMFS_BLOCK_SIZE ) * 0x20 ;
|
||||
u32_to_u8(ctx->ivfcHdr->masterHashSize,masterHashSize,LE);
|
||||
|
||||
for(int i = 1; i < 4; i++){
|
||||
u64_to_u8(ctx->ivfcHdr->level[i-1].logicalOffset,ctx->level[i].logicalOffset,LE);
|
||||
u64_to_u8(ctx->ivfcHdr->level[i-1].hashDataSize,ctx->level[i].size,LE);
|
||||
u32_to_u8(ctx->ivfcHdr->level[i-1].blockSize,log2l(ROMFS_BLOCK_SIZE),LE);
|
||||
}
|
||||
|
||||
u32_to_u8(ctx->ivfcHdr->optionalSize,sizeof(ivfc_hdr),LE);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void GenIvfcHashTree(romfs_buildctx *ctx)
|
||||
{
|
||||
for(int i = 2; i >= 0; i--){
|
||||
u32 numHashes = align(ctx->level[i+1].size,ROMFS_BLOCK_SIZE) / ROMFS_BLOCK_SIZE;
|
||||
for(u32 j = 0; j < numHashes; j++){
|
||||
u8 *datapos = (u8*)(ctx->level[i+1].pos + ROMFS_BLOCK_SIZE * j);
|
||||
u8 *hashpos = (u8*)(ctx->level[i].pos + 0x20 * j);
|
||||
ctr_sha(datapos, ROMFS_BLOCK_SIZE, hashpos, CTR_SHA_256);
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if(argc!=3){
|
||||
if(argc == 2)
|
||||
return old_main(argc,argv);
|
||||
printf("usage: %s <dir> <out file>\n",argv[0]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
romfs_buildctx *ctx = calloc(1,sizeof(romfs_buildctx));
|
||||
//memset(&ctx,0,sizeof(romfs_buildctx));
|
||||
PrepareRomfsBuild(NULL, ctx, argv[1]);
|
||||
|
||||
if(ctx->romfsSize){
|
||||
ctx->output = calloc(1,ctx->romfsSize);
|
||||
|
||||
int ret = RomfsBuild(ctx);
|
||||
if(ret!=0) return -1;
|
||||
|
||||
FILE *romfs = fopen(argv[2],"wb");
|
||||
fwrite(ctx->output,ctx->romfsSize,1,romfs);
|
||||
fclose(romfs);
|
||||
|
||||
//printf("free output ptr\n");
|
||||
free(ctx->output);
|
||||
}
|
||||
|
||||
//printf("free output\n");
|
||||
FreeRomfsCtx(ctx);
|
||||
//printf("free ctx\n");
|
||||
free(ctx);
|
||||
|
||||
//printf("return\n");
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "lib.h"
|
||||
#include "dir.h"
|
||||
#include "ncch.h"
|
||||
#include "romfs.h"
|
||||
|
||||
@@ -8,6 +9,16 @@ int PrepareImportRomFsBinaryFromFile(ncch_settings *ncchset, romfs_buildctx *ctx
|
||||
ctx->romfsSize = ncchset->componentFilePtrs.romfsSize;
|
||||
ctx->romfsBinary = ncchset->componentFilePtrs.romfs;
|
||||
|
||||
ivfc_hdr *hdr = calloc(1,sizeof(ivfc_hdr));
|
||||
|
||||
ReadFile_64(hdr,sizeof(ivfc_hdr),0,ctx->romfsBinary);
|
||||
if(memcmp(hdr->magic,"IVFC",4) != 0){
|
||||
fprintf(stderr,"[ROMFS ERROR] Invalid RomFS Binary.\n");
|
||||
return INVALID_ROMFS_FILE;
|
||||
}
|
||||
|
||||
ctx->romfsHeaderSize = align(sizeof(ivfc_hdr),0x10) + (u64)u8_to_u32(hdr->masterHashSize,LE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,10 @@ int SetupTicketHeader(tik_hdr *hdr, cia_settings *ciaset)
|
||||
hdr->signerCrlVersion = ciaset->cert.signerCrlVersion;
|
||||
if(ciaset->content.encryptCia)
|
||||
CryptTitleKey(hdr->encryptedTitleKey, ciaset->common.titleKey,ciaset->common.titleId,ciaset->keys,ENC);
|
||||
else{
|
||||
u64_to_u8(hdr->encryptedTitleKey,u64GetRand(),BE);
|
||||
u64_to_u8((hdr->encryptedTitleKey+8),u64GetRand(),BE);
|
||||
}
|
||||
memcpy(hdr->ticketId,ciaset->tik.ticketId,8);
|
||||
memcpy(hdr->deviceId,ciaset->tik.deviceId,8);
|
||||
memcpy(hdr->titleId,ciaset->common.titleId,8);
|
||||
|
||||
@@ -16,7 +16,7 @@ u64 ConvertTwlIdToCtrId(u64 pgid)
|
||||
int GetProgramID(u64 *dest, rsf_settings *yaml, bool IsForExheader)
|
||||
{
|
||||
if(yaml->TitleInfo.Category && yaml->TitleInfo.CategoryFlags){
|
||||
fprintf(stderr,"[ERROR] Can not set \"Cateory\" and \"CategoryFlags\" at the same time.\n");
|
||||
fprintf(stderr,"[ID ERROR] Can not set \"Cateory\" and \"CategoryFlags\" at the same time.\n");
|
||||
return PID_BAD_YAML_SET;
|
||||
}
|
||||
u16 Type = 0x0004;
|
||||
@@ -37,7 +37,7 @@ int GetProgramID(u64 *dest, rsf_settings *yaml, bool IsForExheader)
|
||||
// Getting UniqueId
|
||||
if(yaml->TitleInfo.UniqueId) UniqueId = SetPIDUniqueId(yaml->TitleInfo.UniqueId);
|
||||
else{
|
||||
fprintf(stderr,"[ERROR] ParameterNotFound: \"TitleInfo/UniqueId\"\n");
|
||||
fprintf(stderr,"[ID ERROR] ParameterNotFound: \"TitleInfo/UniqueId\"\n");
|
||||
return PID_BAD_YAML_SET;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ int GetUniqueID(u32 *dest, rsf_settings *yaml)
|
||||
{
|
||||
if(yaml->TitleInfo.UniqueId) *dest = 0xffffff & SetPIDUniqueId(yaml->TitleInfo.UniqueId);
|
||||
else{
|
||||
fprintf(stderr,"[ERROR] ParameterNotFound: \"TitleInfo/UniqueId\"\n");
|
||||
fprintf(stderr,"[ID ERROR] ParameterNotFound: \"TitleInfo/UniqueId\"\n");
|
||||
return PID_BAD_YAML_SET;
|
||||
}
|
||||
return 0;
|
||||
@@ -85,7 +85,7 @@ u32 SetPIDCategoryFromName(char *Category)
|
||||
else if(strcmp(Category,"Patch") == 0) return PROGRAM_ID_CATEGORY_PATCH;
|
||||
else if(strcmp(Category,"AutoUpdateContents") == 0) return PROGRAM_ID_CATEGORY_AUTO_UPDATE_CONTENT;
|
||||
else {
|
||||
fprintf(stderr,"[ERROR] Invalid Category: \"%s\"\n",Category);
|
||||
fprintf(stderr,"[ID ERROR] Invalid Category: \"%s\"\n",Category);
|
||||
return PID_INVALID_CATEGORY;
|
||||
}
|
||||
}
|
||||
@@ -120,7 +120,7 @@ u32 SetPIDCategoryFromFlags(char **CategoryFlags, u32 FlagNum)
|
||||
Category = SetPIDCategoryFromFlag(Category,PROGRAM_ID_CATEGORY_FLAG_CAN_SKIP_CONVERT_JUMP_ID,"CanSkipConvertJumpId");
|
||||
|
||||
else {
|
||||
fprintf(stderr,"[ERROR] Invalid CategoryFlag: \"%s\"\n",CategoryFlags[i]);
|
||||
fprintf(stderr,"[ID ERROR] Invalid CategoryFlag: \"%s\"\n",CategoryFlags[i]);
|
||||
return PID_INVALID_CATEGORY;
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ u32 SetPIDCategoryFromFlag(u32 Category, u32 Flag, char *FlagName)
|
||||
{
|
||||
if(!Flag) return Category;
|
||||
if((Category & Flag) == Flag){
|
||||
fprintf(stderr,"[ERROR] Failed to set \"%s\" for category. CategoryFlag was already set.\n",FlagName);
|
||||
fprintf(stderr,"[ID ERROR] Failed to set \"%s\" for category. CategoryFlag was already set.\n",FlagName);
|
||||
return PID_INVALID_CATEGORY;
|
||||
}
|
||||
return Category |= Flag;
|
||||
@@ -150,13 +150,13 @@ u16 SetTitleVariation(u16 Category, rsf_settings *yaml_set)
|
||||
if(yaml_set->TitleInfo.DemoIndex){
|
||||
u16 DemoIndex = strtol(yaml_set->TitleInfo.DemoIndex,NULL,10);
|
||||
if(DemoIndex > 255 || DemoIndex == 0){
|
||||
fprintf(stderr,"[ERROR] Invalid demo index \"%d\"\n",DemoIndex);
|
||||
fprintf(stderr,"[ID ERROR] Invalid demo index \"%d\"\n",DemoIndex);
|
||||
return PID_INVALID_VARIATION;
|
||||
}
|
||||
return DemoIndex;
|
||||
}
|
||||
else{
|
||||
fprintf(stderr,"[ERROR] ParameterNotFound: \"TitleInfo/DemoIndex\"\n");
|
||||
fprintf(stderr,"[ID ERROR] ParameterNotFound: \"TitleInfo/DemoIndex\"\n");
|
||||
return PID_INVALID_VARIATION;
|
||||
}
|
||||
}
|
||||
@@ -165,7 +165,7 @@ u16 SetTitleVariation(u16 Category, rsf_settings *yaml_set)
|
||||
if(yaml_set->TitleInfo.ChildIndex){
|
||||
u16 ChildIndex = strtol(yaml_set->TitleInfo.ChildIndex,NULL,10);
|
||||
if(ChildIndex > 255){
|
||||
fprintf(stderr,"[ERROR] Invalid child index \"%d\"\n",ChildIndex);
|
||||
fprintf(stderr,"[ID ERROR] Invalid child index \"%d\"\n",ChildIndex);
|
||||
return PID_INVALID_VARIATION;
|
||||
}
|
||||
return ChildIndex;
|
||||
@@ -177,7 +177,7 @@ u16 SetTitleVariation(u16 Category, rsf_settings *yaml_set)
|
||||
if(yaml_set->TitleInfo.Variation){ // Might Rename to DataTitleIndex
|
||||
u16 DataTitleIndex = strtol(yaml_set->TitleInfo.Variation,NULL,10);
|
||||
if(DataTitleIndex > 255){
|
||||
fprintf(stderr,"[ERROR] Invalid variation \"%d\"\n",DataTitleIndex);
|
||||
fprintf(stderr,"[ID ERROR] Invalid variation \"%d\"\n",DataTitleIndex);
|
||||
return PID_INVALID_VARIATION;
|
||||
}
|
||||
return DataTitleIndex;
|
||||
@@ -189,7 +189,7 @@ u16 SetTitleVariation(u16 Category, rsf_settings *yaml_set)
|
||||
if(yaml_set->TitleInfo.ContentsIndex){
|
||||
u16 ContentsIndex = strtol(yaml_set->TitleInfo.ContentsIndex,NULL,10);
|
||||
if(ContentsIndex > 255){
|
||||
fprintf(stderr,"[ERROR] Invalid content index \"%d\"\n",ContentsIndex);
|
||||
fprintf(stderr,"[ID ERROR] Invalid content index \"%d\"\n",ContentsIndex);
|
||||
return PID_INVALID_VARIATION;
|
||||
}
|
||||
return ContentsIndex;
|
||||
@@ -201,7 +201,7 @@ u16 SetTitleVariation(u16 Category, rsf_settings *yaml_set)
|
||||
if(yaml_set->TitleInfo.Version){
|
||||
u16 Version = strtol(yaml_set->TitleInfo.Version,NULL,10);
|
||||
if(Version > 255){
|
||||
fprintf(stderr,"[ERROR] Invalid Version \"%d\"\n",Version);
|
||||
fprintf(stderr,"[ID ERROR] Invalid Version \"%d\"\n",Version);
|
||||
return PID_INVALID_VARIATION;
|
||||
}
|
||||
return Version;
|
||||
|
||||
@@ -17,7 +17,7 @@ u32 PredictTMDSize(u16 ContentCount)
|
||||
int BuildTMD(cia_settings *ciaset)
|
||||
{
|
||||
int result = 0;
|
||||
ciaset->ciaSections.tmd.size = PredictTMDSize(ciaset->content.contentCount);
|
||||
ciaset->ciaSections.tmd.size = PredictTMDSize(ciaset->content.count);
|
||||
result = SetupTMDBuffer(&ciaset->ciaSections.tmd);
|
||||
if(result) return result;
|
||||
|
||||
@@ -29,7 +29,7 @@ int BuildTMD(cia_settings *ciaset)
|
||||
|
||||
|
||||
SetupTMDContentRecord(content_record,ciaset);
|
||||
SetupTMDInfoRecord(info_record,content_record,ciaset->content.contentCount);
|
||||
SetupTMDInfoRecord(info_record,content_record,ciaset->content.count);
|
||||
result = SetupTMDHeader(hdr,info_record,ciaset);
|
||||
if(result) return result;
|
||||
result = SignTMDHeader(hdr,sig,ciaset->keys);
|
||||
@@ -38,10 +38,9 @@ int BuildTMD(cia_settings *ciaset)
|
||||
|
||||
int SetupTMDBuffer(buffer_struct *tmd)
|
||||
{
|
||||
// Predict TMD Size
|
||||
tmd->buffer = calloc(1,tmd->size); // tmd->size is already set before
|
||||
tmd->buffer = calloc(1,tmd->size);
|
||||
if(!tmd->buffer) {
|
||||
fprintf(stderr,"[ERROR] Not enough memory\n");
|
||||
fprintf(stderr,"[TMD ERROR] Not enough memory\n");
|
||||
return MEM_ERROR;
|
||||
}
|
||||
return 0;
|
||||
@@ -61,7 +60,7 @@ int SetupTMDHeader(tmd_hdr *hdr, tmd_content_info_record *info_record, cia_setti
|
||||
memcpy(hdr->privSavedataSize,ciaset->tmd.privSavedataSize,4);
|
||||
hdr->twlFlag = ciaset->tmd.twlFlag;
|
||||
u16_to_u8(hdr->titleVersion,ciaset->tmd.version,BE);
|
||||
u16_to_u8(hdr->contentCount,ciaset->content.contentCount,BE);
|
||||
u16_to_u8(hdr->contentCount,ciaset->content.count,BE);
|
||||
ctr_sha(info_record,sizeof(tmd_content_info_record)*64,hdr->infoRecordHash,CTR_SHA_256);
|
||||
return 0;
|
||||
}
|
||||
@@ -84,13 +83,13 @@ int SetupTMDInfoRecord(tmd_content_info_record *info_record, u8 *content_record,
|
||||
|
||||
int SetupTMDContentRecord(u8 *content_record, cia_settings *ciaset)
|
||||
{
|
||||
for(int i = 0; i < ciaset->content.contentCount; i++){
|
||||
for(int i = 0; i < ciaset->content.count; i++){
|
||||
tmd_content_chunk *ptr = (tmd_content_chunk*)(content_record+sizeof(tmd_content_chunk)*i);
|
||||
u32_to_u8(ptr->contentID,ciaset->content.contentId[i],BE);
|
||||
u16_to_u8(ptr->contentIndex,ciaset->content.contentIndex[i],BE);
|
||||
u16_to_u8(ptr->contentFlags,ciaset->content.contentFlags[i],BE);
|
||||
u64_to_u8(ptr->contentSize,ciaset->content.contentSize[i],BE);
|
||||
memcpy(ptr->contentHash,ciaset->content.contentHash[i],0x20);
|
||||
u32_to_u8(ptr->contentID,ciaset->content.id[i],BE);
|
||||
u16_to_u8(ptr->contentIndex,ciaset->content.index[i],BE);
|
||||
u16_to_u8(ptr->contentFlags,ciaset->content.flags[i],BE);
|
||||
u64_to_u8(ptr->contentSize,ciaset->content.size[i],BE);
|
||||
memcpy(ptr->contentHash,ciaset->content.hash[i],0x20);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -10,74 +10,12 @@ static const unsigned char zeros_aesKey[16] =
|
||||
// RSA KEYS
|
||||
static const unsigned char tpki_rsa_privExp[256] =
|
||||
{
|
||||
0xE3, 0xC6, 0x76, 0x57, 0x2E, 0xCB, 0xA5, 0xE6,
|
||||
0x0C, 0x01, 0xBD, 0x5C, 0x32, 0x2D, 0x90, 0xE0,
|
||||
0xFF, 0x9A, 0x80, 0xE8, 0x66, 0x8D, 0x84, 0xDC,
|
||||
0xF7, 0x75, 0x5F, 0x3F, 0x98, 0x7C, 0x97, 0x40,
|
||||
0x20, 0x21, 0xB7, 0x24, 0xC0, 0x61, 0x2D, 0x83,
|
||||
0xB0, 0x91, 0x8E, 0xE3, 0xC2, 0xD0, 0x2C, 0xA1,
|
||||
0x2C, 0x99, 0x4F, 0x48, 0xF7, 0x4E, 0x13, 0xD3,
|
||||
0x01, 0x71, 0x25, 0x9B, 0x3C, 0x75, 0x7C, 0xC4,
|
||||
0xE5, 0x89, 0x7E, 0xDA, 0xF9, 0x99, 0x5C, 0x83,
|
||||
0xE4, 0xDD, 0x36, 0x62, 0x5B, 0x0E, 0x12, 0x91,
|
||||
0xD6, 0x39, 0x45, 0x69, 0x62, 0x20, 0xCA, 0xF4,
|
||||
0xBA, 0x6B, 0x28, 0x1A, 0x7C, 0xBF, 0xB9, 0x97,
|
||||
0x37, 0x46, 0xC2, 0x7A, 0xCF, 0x10, 0x68, 0xC2,
|
||||
0xC9, 0xF1, 0x48, 0xDA, 0x8A, 0x2F, 0x4C, 0xBC,
|
||||
0x3B, 0x1C, 0xB8, 0x8F, 0x04, 0x7F, 0xFD, 0x9D,
|
||||
0xE2, 0x0A, 0xD2, 0x09, 0x39, 0xC7, 0xD9, 0x81,
|
||||
0x59, 0x17, 0x73, 0xB2, 0xEC, 0xEB, 0x36, 0x67,
|
||||
0xA5, 0xA8, 0xD5, 0x71, 0xD9, 0x38, 0x6A, 0xD1,
|
||||
0x28, 0xB9, 0x46, 0x85, 0x3A, 0x81, 0x85, 0x4E,
|
||||
0x55, 0xA7, 0x74, 0x79, 0xBB, 0xC5, 0x97, 0xF7,
|
||||
0xEF, 0xE0, 0x81, 0x20, 0xE0, 0xEA, 0x45, 0x8F,
|
||||
0xED, 0x70, 0x8E, 0xD6, 0xFF, 0x49, 0xCF, 0x7F,
|
||||
0xF2, 0xFF, 0x22, 0x20, 0x3F, 0xE9, 0x92, 0x99,
|
||||
0xDE, 0x81, 0xD6, 0x27, 0xF7, 0xB8, 0x3A, 0x1D,
|
||||
0x4F, 0xA2, 0x50, 0xFB, 0xA5, 0xE7, 0x98, 0x08,
|
||||
0xB5, 0x2B, 0xA2, 0x94, 0xA9, 0x17, 0x1A, 0xA8,
|
||||
0x34, 0xF6, 0x5E, 0x24, 0x2D, 0x40, 0x2F, 0xCB,
|
||||
0x3C, 0xB0, 0xF8, 0x7E, 0x84, 0xB4, 0x87, 0x82,
|
||||
0x19, 0xAF, 0x87, 0xB6, 0xFA, 0xA9, 0x67, 0x27,
|
||||
0x07, 0x28, 0xBA, 0x2E, 0xA5, 0x8E, 0xDD, 0xE5,
|
||||
0xD4, 0xFD, 0x06, 0x09, 0xDF, 0xBD, 0x87, 0x95,
|
||||
0x95, 0x25, 0x05, 0x5E, 0xB2, 0x00, 0x18, 0x41
|
||||
0x3E, 0x2B, 0xBE, 0xBA, 0x7F, 0x29, 0x02, 0x52, 0xBF, 0x1B, 0xF1, 0xE4, 0x21, 0x2F, 0xD9, 0x76, 0x1E, 0x39, 0x23, 0x4A, 0x6D, 0xFF, 0x99, 0xF6, 0x33, 0xAA, 0x2B, 0x62, 0x03, 0x0A, 0x0E, 0x15, 0xAC, 0x16, 0xB9, 0x85, 0x63, 0x77, 0xF5, 0x74, 0x24, 0x61, 0xB1, 0x01, 0x6E, 0xEB, 0x72, 0x24, 0x1E, 0x5D, 0xFA, 0x8F, 0xA8, 0x5A, 0x10, 0x14, 0x47, 0xBD, 0x05, 0xA0, 0x7E, 0xE5, 0xFF, 0x60, 0x87, 0x2A, 0x18, 0x31, 0xC1, 0x39, 0x6C, 0xD5, 0x45, 0xBB, 0x29, 0x05, 0x04, 0xFB, 0x7A, 0xA2, 0x68, 0x21, 0x5F, 0xED, 0x4E, 0xFE, 0x64, 0x60, 0x69, 0xBD, 0x96, 0xD0, 0xA7, 0x06, 0x3D, 0x53, 0x7B, 0x68, 0x92, 0x88, 0x50, 0x86, 0xEE, 0x06, 0x5D, 0x72, 0x73, 0x9A, 0x39, 0xB6, 0x72, 0x3B, 0x20, 0x01, 0x39, 0xDF, 0x37, 0x28, 0x1E, 0xF5, 0x39, 0x63, 0xBC, 0x2A, 0xF2, 0x5E, 0xAB, 0x1A, 0x99, 0xE4, 0x5B, 0xEB, 0xE6, 0x36, 0x30, 0x6C, 0x40, 0x01, 0x61, 0x60, 0xCC, 0x55, 0x89, 0x6D, 0xCA, 0x7E, 0xE0, 0x64, 0x78, 0x7F, 0x7B, 0x26, 0xAE, 0x3E, 0xA3, 0x12, 0x45, 0x16, 0xF6, 0xC8, 0xD0, 0xB9, 0x4F, 0x91, 0x11, 0x12, 0x11, 0xBB, 0xBB, 0x7F, 0xAB, 0xC7, 0x82, 0xDC, 0x4A, 0x61, 0x9C, 0x14, 0xAE, 0x29, 0xFD, 0x3A, 0x60, 0x13, 0x93, 0x19, 0x2F, 0x54, 0x49, 0xB2, 0x44, 0x34, 0x58, 0x14, 0xD7, 0x2F, 0x70, 0x25, 0xA0, 0x48, 0x66, 0x76, 0x55, 0x87, 0x9B, 0x25, 0x77, 0x6D, 0x0B, 0x75, 0x98, 0x8B, 0xA6, 0x39, 0x40, 0x3C, 0x21, 0x7F, 0x2A, 0x24, 0xC1, 0xA5, 0xC1, 0xDC, 0x5A, 0x57, 0x54, 0xF6, 0x03, 0xF6, 0xAD, 0x51, 0x33, 0x40, 0x6D, 0x5C, 0x26, 0x5E, 0x29, 0x92, 0x82, 0xE5, 0x29, 0x13, 0x7D, 0x7D, 0xFE, 0x08, 0x73, 0xBC, 0x5D, 0xC4, 0xE9, 0x2B, 0xD6, 0x71
|
||||
};
|
||||
|
||||
static const unsigned char tpki_rsa_pubMod[256] =
|
||||
{
|
||||
0xE6, 0x64, 0x06, 0x6C, 0x49, 0x6B, 0xEC, 0xEE,
|
||||
0x59, 0xAE, 0x11, 0x92, 0xF1, 0x03, 0x43, 0x87,
|
||||
0x8E, 0xEB, 0x4D, 0x70, 0xA9, 0x71, 0xB4, 0x6D,
|
||||
0x25, 0x19, 0x02, 0x4A, 0x9E, 0x4D, 0xA3, 0x10,
|
||||
0xFD, 0xB2, 0x27, 0x56, 0xA3, 0xFB, 0xDD, 0xE5,
|
||||
0xE4, 0x4E, 0xE0, 0x62, 0x8F, 0xC3, 0x2E, 0xEE,
|
||||
0x8F, 0x9D, 0x4D, 0x6E, 0x00, 0xDB, 0x88, 0x49,
|
||||
0xA2, 0xFC, 0x30, 0xFE, 0x94, 0xF3, 0x06, 0x92,
|
||||
0x75, 0x61, 0x11, 0x1D, 0x24, 0x07, 0xE9, 0x12,
|
||||
0xB6, 0xB1, 0x57, 0xF5, 0xDC, 0x01, 0xF7, 0x54,
|
||||
0xBF, 0xC3, 0xAC, 0x8C, 0x73, 0x2C, 0x73, 0x17,
|
||||
0x8E, 0xBF, 0x2F, 0x68, 0x3C, 0x61, 0x75, 0x32,
|
||||
0x15, 0x39, 0x93, 0xDD, 0xBA, 0x12, 0x42, 0xD3,
|
||||
0x25, 0x85, 0xFA, 0xA6, 0x4B, 0xAF, 0x81, 0x4B,
|
||||
0xCA, 0xD2, 0x9C, 0xF1, 0x3D, 0x37, 0xAE, 0xB9,
|
||||
0xFD, 0x77, 0x59, 0x78, 0xB9, 0x32, 0x95, 0x19,
|
||||
0xD1, 0x47, 0xE1, 0xC6, 0xE1, 0x16, 0x13, 0x5D,
|
||||
0xCC, 0x99, 0x31, 0x63, 0xAD, 0xBB, 0xA5, 0x4F,
|
||||
0xE4, 0x41, 0x67, 0xFD, 0x7F, 0x1E, 0xA8, 0x9A,
|
||||
0x35, 0x65, 0xEB, 0xC4, 0x4D, 0xD4, 0xC4, 0x29,
|
||||
0x0F, 0x40, 0x95, 0xFD, 0x8A, 0x30, 0x67, 0x79,
|
||||
0xFB, 0xD4, 0x76, 0x6F, 0xD1, 0xDE, 0x8C, 0x72,
|
||||
0x32, 0x05, 0x97, 0x5A, 0x26, 0x0D, 0x37, 0xCA,
|
||||
0x12, 0x2C, 0xDC, 0x14, 0x3F, 0xD3, 0x59, 0x00,
|
||||
0x66, 0xD2, 0x8E, 0xF5, 0x6E, 0x22, 0x08, 0x63,
|
||||
0x59, 0xB5, 0x3F, 0xBB, 0x3A, 0x4D, 0xD4, 0xD1,
|
||||
0xC1, 0x21, 0xA7, 0x4D, 0x02, 0x96, 0x08, 0xF5,
|
||||
0x2B, 0x11, 0xE5, 0x85, 0xD2, 0x6E, 0x91, 0xD6,
|
||||
0x8F, 0x77, 0x72, 0xEF, 0x37, 0xE3, 0x79, 0x19,
|
||||
0xA9, 0xEE, 0x58, 0x5D, 0x52, 0x9B, 0x2D, 0x47,
|
||||
0x7D, 0x27, 0xB8, 0xC3, 0x76, 0xCA, 0xDA, 0xC2,
|
||||
0xF4, 0xFC, 0xF4, 0x53, 0x7C, 0xD8, 0x43, 0x87
|
||||
0xCA, 0xC5, 0x88, 0xC7, 0xF1, 0x2A, 0x09, 0x2B, 0x76, 0x49, 0xC0, 0xA8, 0x35, 0x75, 0x10, 0x82, 0xC2, 0xB5, 0xE5, 0xB2, 0xE9, 0xC8, 0x18, 0x88, 0xF3, 0x98, 0x89, 0xBF, 0x9D, 0xE6, 0xE4, 0x0B, 0x71, 0x5D, 0xDD, 0x3F, 0x13, 0x82, 0x71, 0xF2, 0xED, 0x31, 0x86, 0x99, 0xD9, 0x47, 0xFE, 0xC5, 0x7A, 0x75, 0x93, 0xE1, 0xF8, 0x6D, 0xC6, 0x3D, 0x9B, 0xE1, 0x15, 0x99, 0xE1, 0xC2, 0xE0, 0x5C, 0x38, 0x4B, 0x35, 0xA2, 0x4D, 0x3E, 0xE2, 0xCE, 0xFB, 0xB3, 0x08, 0xA3, 0xDD, 0x0C, 0x26, 0x31, 0x84, 0x92, 0x27, 0xC8, 0x8A, 0x8E, 0xC8, 0x83, 0xA8, 0x6C, 0xA7, 0xA3, 0x39, 0x71, 0x9E, 0xF1, 0x34, 0x91, 0x01, 0xDF, 0x11, 0x4A, 0x9C, 0xF9, 0x8B, 0xF9, 0x2F, 0x46, 0x44, 0x0A, 0x72, 0x38, 0xF3, 0x8B, 0x6D, 0x23, 0x33, 0x89, 0xBF, 0x66, 0x34, 0xA7, 0x86, 0xE6, 0xAD, 0xF2, 0xDE, 0xF9, 0xAB, 0x16, 0xA1, 0x40, 0xEE, 0xD8, 0xF7, 0x6C, 0xDC, 0x00, 0x92, 0xCB, 0x31, 0x49, 0xFC, 0x26, 0x64, 0x24, 0x08, 0x8F, 0xC6, 0x60, 0xFF, 0x1E, 0xE3, 0xF0, 0xDD, 0xFB, 0x6D, 0x0D, 0x0F, 0x49, 0x7C, 0xAD, 0x03, 0xEC, 0x9F, 0x63, 0x58, 0xFA, 0x46, 0xDF, 0xA2, 0x64, 0x0E, 0xCC, 0x85, 0x57, 0xE7, 0x2C, 0x61, 0x7F, 0x59, 0xB8, 0x62, 0x7D, 0x59, 0x0E, 0xF6, 0x84, 0x96, 0x99, 0x42, 0xB0, 0x39, 0x83, 0x80, 0xB5, 0x52, 0x2E, 0x07, 0x3F, 0x92, 0xE3, 0x9E, 0xF5, 0x47, 0xEB, 0xA7, 0xD7, 0xD4, 0x15, 0xF1, 0x22, 0x82, 0x32, 0xBE, 0x2A, 0xD0, 0x8C, 0x01, 0xCC, 0x30, 0xA9, 0x11, 0x96, 0xF6, 0xE9, 0x2B, 0xEA, 0x0E, 0xF8, 0x2D, 0x0D, 0xB1, 0x91, 0xD5, 0x1A, 0x94, 0x51, 0xB9, 0x85, 0x39, 0xB0, 0xAF, 0x9F, 0x54, 0x9E, 0x99, 0xE1, 0x46, 0xE5, 0x6F, 0xE2, 0x5F, 0x4B, 0x4E, 0x23
|
||||
};
|
||||
|
||||
//Certificates
|
||||
|
||||
+142
-125
@@ -5,9 +5,9 @@ void DisplayHelp(char *app_name);
|
||||
void SetDefaults(user_settings *set);
|
||||
int SetArgument(int argc, int i, char *argv[], user_settings *set);
|
||||
int CheckArgumentCombination(user_settings *set);
|
||||
void PrintNeedsArgument(char *arg);
|
||||
void PrintArgumentInvalid(char *arg);
|
||||
void PrintNeedsParam(char *arg);
|
||||
void PrintNeedsArg(char *arg);
|
||||
void PrintArgInvalid(char *arg);
|
||||
void PrintArgReqParam(char *arg, u32 paramNum);
|
||||
void PrintNoNeedParam(char *arg);
|
||||
|
||||
int ParseArgs(int argc, char *argv[], user_settings *usr_settings)
|
||||
@@ -96,6 +96,7 @@ void SetDefaults(user_settings *set)
|
||||
{
|
||||
// Target Info
|
||||
set->common.keys.keyset = pki_TEST;
|
||||
set->common.keys.accessDescSign.presetType = desc_preset_NONE;
|
||||
|
||||
// Build NCCH Info
|
||||
set->ncch.buildNcch0 = true;
|
||||
@@ -118,7 +119,6 @@ void SetDefaults(user_settings *set)
|
||||
// CIA Info
|
||||
set->cia.useDataTitleVer = false;
|
||||
set->cia.titleVersion[0] = 0xffff; // invalid for detection
|
||||
set->cia.encryptCia = true;
|
||||
set->cia.randomTitleKey = false;
|
||||
set->common.keys.aes.currentCommonKey = 0x100; // invalid for detection
|
||||
for(int i = 0; i < CIA_MAX_CONTENT; i++){
|
||||
@@ -128,23 +128,26 @@ void SetDefaults(user_settings *set)
|
||||
|
||||
int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
{
|
||||
bool IsLastArg = (i >= (argc -1));
|
||||
bool HasParam = false;
|
||||
if(!IsLastArg){
|
||||
if(argv[i+1][0] != '-') HasParam = true;
|
||||
u16 ParamNum = 0;
|
||||
for(int j = i+1; j < argc; j++)
|
||||
{
|
||||
if(argv[j][0] == '-')
|
||||
break;
|
||||
ParamNum++;
|
||||
}
|
||||
|
||||
// Global Settings
|
||||
if(strcmp(argv[i],"-rsf") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-rsf");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-rsf",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->common.rsfPath = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-f") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-f");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-f",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
if(strcasecmp(argv[i+1],"cxi") == 0 || strcasecmp(argv[i+1],"exec") == 0 ) set->common.outFormat = CXI;
|
||||
@@ -152,14 +155,14 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
else if(strcasecmp(argv[i+1],"cci") == 0 || strcasecmp(argv[i+1],"card") == 0 ) set->common.outFormat = CCI;
|
||||
else if(strcasecmp(argv[i+1],"cia") == 0) set->common.outFormat = CIA;
|
||||
else {
|
||||
fprintf(stderr,"[-] Invalid output format '%s'\n",argv[i+1]);
|
||||
fprintf(stderr,"[SETTING ERROR] Invalid output format '%s'\n",argv[i+1]);
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-o") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-o");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-o",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->common.outFileName = argv[i+1];
|
||||
@@ -168,14 +171,12 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
}
|
||||
// Key Options
|
||||
else if(strcmp(argv[i],"-target") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-target");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-target",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
if(strcasecmp(argv[i+1],"test") == 0 || strcasecmp(argv[i+1],"t") == 0)
|
||||
set->common.keys.keyset = pki_TEST;
|
||||
else if(strcasecmp(argv[i+1],"beta") == 0 || strcasecmp(argv[i+1],"b") == 0)
|
||||
set->common.keys.keyset = pki_BETA;
|
||||
else if(strcasecmp(argv[i+1],"debug") == 0 || strcasecmp(argv[i+1],"development") == 0 || strcasecmp(argv[i+1],"d") == 0)
|
||||
set->common.keys.keyset = pki_DEVELOPMENT;
|
||||
else if(strcasecmp(argv[i+1],"retail") == 0 || strcasecmp(argv[i+1],"production") == 0 || strcasecmp(argv[i+1],"p") == 0)
|
||||
@@ -188,17 +189,9 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-keydir") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-keydir");
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->common.keys.keydir = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-ckeyID") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-ckeyID");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-ckeyID",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->common.keys.aes.currentCommonKey = strtol(argv[i+1],NULL,0);
|
||||
@@ -210,7 +203,7 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-showkeys") == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-showkeys");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
@@ -220,8 +213,8 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
|
||||
// Ncch Options
|
||||
else if(strcmp(argv[i],"-elf") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-elf");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-elf",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.elfPath = argv[i+1];
|
||||
@@ -229,32 +222,32 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
}
|
||||
|
||||
else if(strcmp(argv[i],"-icon") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-icon");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-icon",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.iconPath = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-banner") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-banner");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-banner",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.bannerPath = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-logo") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-logo");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-logo",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.logoPath = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-desc") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-desc");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-desc",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
char *tmp = argv[i+1];
|
||||
@@ -273,10 +266,11 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
memset(app_type,0,app_type_len+1);
|
||||
memcpy(app_type,tmp,app_type_len);
|
||||
|
||||
if(strcasecmp(app_type,"App") == 0 || strcasecmp(app_type,"SDApp") == 0) set->common.keys.accessDescSign.presetType = app;
|
||||
else if(strcasecmp(app_type,"ECApp") == 0) set->common.keys.accessDescSign.presetType = ec_app;
|
||||
else if(strcasecmp(app_type,"Demo") == 0) set->common.keys.accessDescSign.presetType = demo;
|
||||
else if(strcasecmp(app_type,"DlpChild") == 0 || strcasecmp(app_type,"Dlp") == 0) set->common.keys.accessDescSign.presetType = dlp;
|
||||
if(strcasecmp(app_type,"App") == 0 || strcasecmp(app_type,"SDApp") == 0) set->common.keys.accessDescSign.presetType = desc_preset_APP;
|
||||
else if(strcasecmp(app_type,"ECApp") == 0) set->common.keys.accessDescSign.presetType = desc_preset_EC_APP;
|
||||
else if(strcasecmp(app_type,"Demo") == 0) set->common.keys.accessDescSign.presetType = desc_preset_DEMO;
|
||||
else if(strcasecmp(app_type,"DlpChild") == 0 || strcasecmp(app_type,"Dlp") == 0) set->common.keys.accessDescSign.presetType = desc_preset_DLP;
|
||||
else if(strcasecmp(app_type,"FIRM") == 0) set->common.keys.accessDescSign.presetType = desc_preset_FIRM;
|
||||
else{
|
||||
fprintf(stderr,"[SETTING ERROR] Accessdesc AppType preset '%s' not valid, please manually configure RSF\n",app_type);
|
||||
return USR_BAD_ARG;
|
||||
@@ -285,10 +279,36 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
|
||||
char *target_firmware = (tmp2+1);
|
||||
set->common.keys.accessDescSign.targetFirmware = strtoul(target_firmware,NULL,10);
|
||||
switch(set->common.keys.accessDescSign.targetFirmware){
|
||||
case 1:
|
||||
set->common.keys.accessDescSign.targetFirmware = 0x1B; // or 0x1C
|
||||
break;
|
||||
case 2:
|
||||
set->common.keys.accessDescSign.targetFirmware = 0x1D; // or 0x1E/0x1F
|
||||
break;
|
||||
case 3:
|
||||
set->common.keys.accessDescSign.targetFirmware = 0x20;
|
||||
break;
|
||||
case 4:
|
||||
set->common.keys.accessDescSign.targetFirmware = 0x21; // or 0x22
|
||||
break;
|
||||
case 5:
|
||||
set->common.keys.accessDescSign.targetFirmware = 0x23; // or 0x24
|
||||
break;
|
||||
case 6:
|
||||
set->common.keys.accessDescSign.targetFirmware = 0x25; // or 0x26
|
||||
break;
|
||||
case 7:
|
||||
set->common.keys.accessDescSign.targetFirmware = 0x27;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-exefslogo") == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-exefslogo");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
@@ -296,7 +316,7 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 1;
|
||||
}
|
||||
else if(strcmp(argv[i],"-data") == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-data");
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
@@ -306,32 +326,32 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
|
||||
// Ncch Rebuild Options
|
||||
else if(strcmp(argv[i],"-code") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-code");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-code",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.codePath = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-exheader") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-exheader");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-exheader",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.exheaderPath = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-plain-region") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-plain-region");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-plain-region",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.plainRegionPath = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-romfs") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-romfs");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-romfs",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.romfsPath = argv[i+1];
|
||||
@@ -340,15 +360,16 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
// Cci Options
|
||||
#ifndef PUBLIC_BUILD
|
||||
else if(strcmp(argv[i],"-devcardcci") == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-devcardcci");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
set->cci.useSDKStockData = true;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
else if(strcmp(argv[i],"-nomodtid") == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-nomodtid");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
@@ -356,7 +377,7 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 1;
|
||||
}
|
||||
else if(strcmp(argv[i],"-alignwr") == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-alignwr");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
@@ -364,19 +385,18 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 1;
|
||||
}
|
||||
else if(strcmp(argv[i],"-genupdatenote") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-genupdatenote");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-genupdatenote",1);
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
set->cci.cverCiaPath = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
|
||||
#endif
|
||||
// Cia Options
|
||||
else if(strcmp(argv[i],"-major") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-major");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-major",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->cia.useNormTitleVer = true;
|
||||
@@ -389,8 +409,8 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-minor") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-minor");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-minor",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->cia.useNormTitleVer = true;
|
||||
@@ -403,8 +423,8 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-micro") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-micro");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-micro",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
u32 tmp = strtoul(argv[i+1],NULL,10);
|
||||
@@ -416,8 +436,8 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-dver") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-dver");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-dver",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->cia.useDataTitleVer = true;
|
||||
@@ -431,33 +451,24 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-savesize") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-savesize");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-savesize",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->cia.overideSaveDataSize = argv[i+1];
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-rand") == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-rand");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
set->cia.randomTitleKey = true;
|
||||
return 1;
|
||||
}
|
||||
else if(strcmp(argv[i],"-nocryptcia") == 0){
|
||||
if(HasParam){
|
||||
PrintNoNeedParam("-nocryptcia");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
set->cia.encryptCia = false;
|
||||
return 1;
|
||||
}
|
||||
#ifndef PUBLIC_BUILD
|
||||
else if(strcmp(argv[i],"-cci") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-cci");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-cci",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.buildNcch0 = false;
|
||||
@@ -467,8 +478,8 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return 2;
|
||||
}
|
||||
else if(strcmp(argv[i],"-srl") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-srl");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-srl",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
set->ncch.buildNcch0 = false;
|
||||
@@ -479,19 +490,18 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
|
||||
}
|
||||
else if(strcmp(argv[i],"-dlc") == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-dlc");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
set->cia.DlcContent = true;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Other Setting
|
||||
else if(strcmp(argv[i],"-content") == 0){
|
||||
if(!HasParam){
|
||||
PrintNeedsParam("-content");
|
||||
if(ParamNum != 1){
|
||||
PrintArgReqParam("-content",1);
|
||||
return USR_ARG_REQ_PARAM;
|
||||
}
|
||||
char *pos = strstr(argv[i+1],":");
|
||||
@@ -539,7 +549,7 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
}
|
||||
// RSF Value Substitution
|
||||
else if(strncmp(argv[i],"-D",2) == 0){
|
||||
if(HasParam){
|
||||
if(ParamNum){
|
||||
PrintNoNeedParam("-DNAME=VALUE");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
@@ -586,7 +596,7 @@ int SetArgument(int argc, int i, char *argv[], user_settings *set)
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
val_pos = (val_pos + 1);
|
||||
name_len = (val_pos - 2 - name_pos);
|
||||
name_len = (val_pos - 1 - name_pos);
|
||||
set->dname.items[set->dname.u_items].name = malloc(name_len+1);
|
||||
memset(set->dname.items[set->dname.u_items].name,0,name_len+1);
|
||||
memcpy(set->dname.items[set->dname.u_items].name,name_pos,name_len);
|
||||
@@ -620,7 +630,7 @@ int CheckArgumentCombination(user_settings *set)
|
||||
}
|
||||
}
|
||||
if((set->common.outFormat == CXI || set->common.outFormat == CFA) && set->ncch.ncchType != format_not_set){
|
||||
fprintf(stderr,"[SETTING ERROR] Arguments \"-f cxi|cfa\" and \"-ncch cxi|cfa\" are invalid\n");
|
||||
fprintf(stderr,"[SETTING ERROR] Arguments \"-f cxi|cfa\" and \"-data\" cannot be used together\n");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if(set->ncch.ncchType != format_not_set && !set->ncch.buildNcch0){
|
||||
@@ -653,45 +663,41 @@ int CheckArgumentCombination(user_settings *set)
|
||||
bool buildCFA = set->ncch.ncchType == CFA;
|
||||
// Detecting Required Arguments
|
||||
if(buildCXI && !set->ncch.elfPath && !set->ncch.codePath){
|
||||
PrintNeedsArgument("-elf");
|
||||
PrintNeedsArg("-elf");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if((buildCXI || buildCFA) && !set->common.rsfPath){
|
||||
PrintNeedsArgument("-rsf");
|
||||
PrintNeedsArg("-rsf");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if(buildCXI && set->ncch.codePath && !set->ncch.exheaderPath){
|
||||
PrintNeedsArgument("-exheader");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if(set->common.keys.keyset == pki_CUSTOM && set->common.keys.keydir == NULL){
|
||||
PrintNeedsArgument("-keydir");
|
||||
PrintNeedsArg("-exheader");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
|
||||
// Reporting bad arguments
|
||||
if(!buildCXI && set->ncch.elfPath){
|
||||
PrintArgumentInvalid("-elf");
|
||||
PrintArgInvalid("-elf");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if(!buildCXI && set->ncch.codePath){
|
||||
PrintArgumentInvalid("-code");
|
||||
PrintArgInvalid("-code");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if(!buildCXI && set->ncch.exheaderPath){
|
||||
PrintArgumentInvalid("-exheader");
|
||||
PrintArgInvalid("-exheader");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if(!buildCXI && set->ncch.plainRegionPath){
|
||||
PrintArgumentInvalid("-plain-region");
|
||||
PrintArgInvalid("-plain-region");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if(!set->ncch.buildNcch0 && set->ncch.includeExefsLogo){
|
||||
PrintArgumentInvalid("-exefslogo");
|
||||
PrintArgInvalid("-exefslogo");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
if(!set->ncch.buildNcch0 && set->ncch.romfsPath){
|
||||
PrintArgumentInvalid("-romfs");
|
||||
PrintArgInvalid("-romfs");
|
||||
return USR_BAD_ARG;
|
||||
}
|
||||
|
||||
@@ -708,13 +714,15 @@ void free_RsfSettings(rsf_settings *set)
|
||||
{
|
||||
//Option
|
||||
free(set->Option.PageSize);
|
||||
/*
|
||||
for(u32 i = 0; i < set->Option.AppendSystemCallNum; i++){
|
||||
free(set->Option.AppendSystemCall[i]);
|
||||
}
|
||||
free(set->Option.AppendSystemCall);
|
||||
*/
|
||||
|
||||
//AccessControlInfo
|
||||
free(set->AccessControlInfo.ProgramId);
|
||||
//free(set->AccessControlInfo.ProgramId);
|
||||
free(set->AccessControlInfo.IdealProcessor);
|
||||
free(set->AccessControlInfo.Priority);
|
||||
free(set->AccessControlInfo.MemoryType);
|
||||
@@ -730,7 +738,7 @@ void free_RsfSettings(rsf_settings *set)
|
||||
free(set->AccessControlInfo.SystemMode);
|
||||
free(set->AccessControlInfo.AffinityMask);
|
||||
free(set->AccessControlInfo.DescVersion);
|
||||
free(set->AccessControlInfo.CryptoKey);
|
||||
//free(set->AccessControlInfo.CryptoKey);
|
||||
free(set->AccessControlInfo.ResourceLimitCategory);
|
||||
free(set->AccessControlInfo.ReleaseKernelMajor);
|
||||
free(set->AccessControlInfo.ReleaseKernelMinor);
|
||||
@@ -756,6 +764,7 @@ void free_RsfSettings(rsf_settings *set)
|
||||
}
|
||||
free(set->AccessControlInfo.IoAccessControl);
|
||||
|
||||
|
||||
for(u32 i = 0; i < set->AccessControlInfo.InterruptNumbersNum; i++){
|
||||
free(set->AccessControlInfo.InterruptNumbers[i]);
|
||||
}
|
||||
@@ -785,6 +794,7 @@ void free_RsfSettings(rsf_settings *set)
|
||||
free(set->SystemControlInfo.AppType);
|
||||
free(set->SystemControlInfo.StackSize);
|
||||
free(set->SystemControlInfo.RemasterVersion);
|
||||
free(set->SystemControlInfo.SaveDataSize);
|
||||
free(set->SystemControlInfo.JumpId);
|
||||
|
||||
for(u32 i = 0; i < set->SystemControlInfo.DependencyNum; i++){
|
||||
@@ -796,16 +806,14 @@ void free_RsfSettings(rsf_settings *set)
|
||||
free(set->BasicInfo.Title);
|
||||
free(set->BasicInfo.CompanyCode);
|
||||
free(set->BasicInfo.ProductCode);
|
||||
free(set->BasicInfo.MediaSize);
|
||||
free(set->BasicInfo.ContentType);
|
||||
free(set->BasicInfo.Logo);
|
||||
free(set->BasicInfo.BackupMemoryType);
|
||||
free(set->BasicInfo.InitialCode);
|
||||
//free(set->BasicInfo.BackupMemoryType);
|
||||
//free(set->BasicInfo.InitialCode);
|
||||
|
||||
//Rom
|
||||
free(set->Rom.HostRoot);
|
||||
free(set->Rom.Padding);
|
||||
free(set->Rom.SaveDataSize);
|
||||
//free(set->Rom.Padding);
|
||||
|
||||
for(u32 i = 0; i < set->Rom.DefaultRejectNum; i++){
|
||||
free(set->Rom.DefaultReject[i]);
|
||||
@@ -850,13 +858,13 @@ void free_RsfSettings(rsf_settings *set)
|
||||
free(set->PlainRegion);
|
||||
|
||||
//TitleInfo
|
||||
free(set->TitleInfo.Platform);
|
||||
//free(set->TitleInfo.Platform);
|
||||
free(set->TitleInfo.Category);
|
||||
free(set->TitleInfo.UniqueId);
|
||||
free(set->TitleInfo.Version);
|
||||
free(set->TitleInfo.ContentsIndex);
|
||||
free(set->TitleInfo.Variation);
|
||||
free(set->TitleInfo.Use);
|
||||
//free(set->TitleInfo.Use);
|
||||
free(set->TitleInfo.ChildIndex);
|
||||
free(set->TitleInfo.DemoIndex);
|
||||
free(set->TitleInfo.TargetCategory);
|
||||
@@ -872,6 +880,7 @@ void free_RsfSettings(rsf_settings *set)
|
||||
free(set->CardInfo.CryptoType);
|
||||
free(set->CardInfo.CardDevice);
|
||||
free(set->CardInfo.MediaType);
|
||||
free(set->CardInfo.MediaSize);
|
||||
free(set->CardInfo.BackupWriteWaitTime);
|
||||
free(set->CardInfo.SaveCrypto);
|
||||
|
||||
@@ -911,6 +920,7 @@ void free_UserSettings(user_settings *usr_settings)
|
||||
FreeKeys(&usr_settings->common.keys);
|
||||
|
||||
// Free Working File
|
||||
if(usr_settings->common.workingFile.size)
|
||||
free(usr_settings->common.workingFile.buffer);
|
||||
|
||||
// Free outfile path, if malloc'd
|
||||
@@ -924,19 +934,22 @@ void free_UserSettings(user_settings *usr_settings)
|
||||
free(usr_settings);
|
||||
}
|
||||
|
||||
void PrintNeedsArgument(char *arg)
|
||||
void PrintNeedsArg(char *arg)
|
||||
{
|
||||
fprintf(stderr,"[SETTING ERROR] Argument \"%s\" is required\n",arg);
|
||||
}
|
||||
|
||||
void PrintArgumentInvalid(char *arg)
|
||||
void PrintArgInvalid(char *arg)
|
||||
{
|
||||
fprintf(stderr,"[SETTING ERROR] Argument \"%s\" is invalid\n",arg);
|
||||
}
|
||||
|
||||
void PrintNeedsParam(char *arg)
|
||||
void PrintArgReqParam(char *arg, u32 paramNum)
|
||||
{
|
||||
if(paramNum == 1)
|
||||
fprintf(stderr,"[SETTING ERROR] \"%s\" requires a parameter\n",arg);
|
||||
else
|
||||
fprintf(stderr,"[SETTING ERROR] \"%s\" requires %d parameters\n",arg,paramNum);
|
||||
}
|
||||
|
||||
void PrintNoNeedParam(char *arg)
|
||||
@@ -956,19 +969,20 @@ void DisplayHelp(char *app_name)
|
||||
printf("GLOBAL OPTIONS:\n");
|
||||
printf(" -help Display this text\n");
|
||||
printf(" -rsf <file> RSF File\n");
|
||||
printf(" -f <out format> Output Format (cxi|cfa|cci|cia)\n");
|
||||
printf(" -f <cxi|cfa|cci|cia> Output Format, defaults to 'cxi'\n");
|
||||
//printf(" 'cxi' CTR Executable Image\n");
|
||||
//printf(" 'cfa' CTR File Archive\n");
|
||||
//printf(" 'cci' CTR Card Image\n");
|
||||
//printf(" 'cia' CTR Importable Archive\n");
|
||||
printf(" -o <file> Output File\n");
|
||||
//printf(" -v Verbose\n");
|
||||
printf(" -DNAME=VALUE Substitute values in Spec files\n");
|
||||
printf("KEY OPTIONS:\n");
|
||||
//printf(" -target <t|d|p|c> Target for crypto, defaults to 't'\n");
|
||||
printf(" -target <t|b|d|p|c> Target for crypto, defaults to 't'\n");
|
||||
printf(" -target <t|d|p|c> Target for crypto, defaults to 't'\n");
|
||||
printf(" 't' Test(false) Keys & prod Certs\n");
|
||||
printf(" 'b' Beta Keys & prod Certs\n");
|
||||
printf(" 'd' Development Keys & Certs\n");
|
||||
printf(" 'p' Production Keys & Certs\n");
|
||||
printf(" 'c' Custom Keys & Certs\n");
|
||||
printf(" -keydir <dir> Key Directory (for use with \"-target c\")\n");
|
||||
printf(" -ckeyID <u8 value> Override the automatic commonKey selection\n");
|
||||
printf(" -showkeys Display the loaded keychain\n");
|
||||
printf("NCCH OPTIONS:\n");
|
||||
@@ -977,6 +991,12 @@ void DisplayHelp(char *app_name)
|
||||
printf(" -banner <file> Banner File\n");
|
||||
printf(" -logo <file> Logo File (Overrides \"BasicInfo/Logo\" in RSF)\n");
|
||||
printf(" -desc <apptype>:<fw> Specify Access Descriptor Preset\n");
|
||||
//printf(" AppTypes:\n");
|
||||
//printf(" 'SDApp' Normal SD Application\n");
|
||||
//printf(" 'ECApp' SD Application with DLC Capability\n");
|
||||
//printf(" 'Demo' SD Demo Application\n");
|
||||
//printf(" 'Dlp' NAND DLP Child Application\n");
|
||||
//printf(" 'FIRM' FIRM CXI\n");
|
||||
printf(" -exefslogo Include Logo in ExeFs (Required for usage on <5.X Systems)\n");
|
||||
printf(" -data Specify if building a Data Archive when \"-f cia\"\n");
|
||||
printf("NCCH REBUILD OPTIONS:\n");
|
||||
@@ -988,10 +1008,10 @@ void DisplayHelp(char *app_name)
|
||||
printf(" -content <filepath>:<index> Specify content files\n");
|
||||
#ifndef PUBLIC_BUILD
|
||||
printf(" -devcardcci Use SDK CardInfo Method\n");
|
||||
#endif
|
||||
printf(" -nomodtid Don't Modify Content TitleIDs\n");
|
||||
printf(" -alignwr Align Writeable Region to the end of last NCCH\n");
|
||||
printf(" -genupdatenote <cver cia path> Create Update Partition Notes\n");
|
||||
#endif
|
||||
printf("CIA OPTIONS:\n");
|
||||
printf(" -content <filepath>:<index>:<id> Specify content files\n");
|
||||
printf(" -major <major version> Specify Major Version\n");
|
||||
@@ -1000,10 +1020,7 @@ void DisplayHelp(char *app_name)
|
||||
printf(" -dver <datatitle ver> Specify Data Title Version\n");
|
||||
printf(" -savesize <size> Savedata size\n");
|
||||
printf(" -rand Use a random title key\n");
|
||||
printf(" -nocryptcia Don't encrypt CIA contents\n");
|
||||
#ifndef PUBLIC_BUILD
|
||||
printf(" -cci <cci path> Convert CCI to CIA\n");
|
||||
printf(" -srl <srl path> Use TWL SRL as Content0\n");
|
||||
printf(" -dlc Create DLC CIA\n");
|
||||
#endif
|
||||
}
|
||||
+14
-15
@@ -52,7 +52,9 @@ typedef struct
|
||||
{
|
||||
struct{
|
||||
// Booleans
|
||||
bool NoPadding; // DELETE
|
||||
// Booleans
|
||||
bool MediaFootPadding;
|
||||
//bool NoPadding; // DELETE
|
||||
bool AllowUnalignedSection;
|
||||
bool EnableCrypt;
|
||||
bool EnableCompress;
|
||||
@@ -63,8 +65,8 @@ typedef struct
|
||||
char *PageSize;
|
||||
|
||||
// String Collections
|
||||
u32 AppendSystemCallNum; // DELETE
|
||||
char **AppendSystemCall; // DELETE
|
||||
//u32 AppendSystemCallNum; // DELETE
|
||||
//char **AppendSystemCall; // DELETE
|
||||
} Option;
|
||||
|
||||
struct{
|
||||
@@ -83,7 +85,7 @@ typedef struct
|
||||
bool SpecialMemoryArrange;
|
||||
|
||||
// Strings
|
||||
char *ProgramId; // DELETE
|
||||
//char *ProgramId; // DELETE
|
||||
char *IdealProcessor;
|
||||
char *Priority;
|
||||
char *MemoryType;
|
||||
@@ -99,7 +101,7 @@ typedef struct
|
||||
char *AffinityMask;
|
||||
// Strings From DESC
|
||||
char *DescVersion;
|
||||
char *CryptoKey; // DELETE
|
||||
//char *CryptoKey; // DELETE
|
||||
char *ResourceLimitCategory;
|
||||
char *ReleaseKernelMajor;
|
||||
char *ReleaseKernelMinor;
|
||||
@@ -131,6 +133,7 @@ typedef struct
|
||||
char *AppType;
|
||||
char *StackSize;
|
||||
char *RemasterVersion;
|
||||
char *SaveDataSize;
|
||||
char *JumpId;
|
||||
|
||||
// String Collections
|
||||
@@ -139,25 +142,20 @@ typedef struct
|
||||
} SystemControlInfo;
|
||||
|
||||
struct{
|
||||
// Booleans
|
||||
bool MediaFootPadding;
|
||||
|
||||
// Strings
|
||||
char *Title;
|
||||
char *CompanyCode;
|
||||
char *ProductCode;
|
||||
char *MediaSize;
|
||||
char *ContentType;
|
||||
char *Logo;
|
||||
char *BackupMemoryType;// Delete
|
||||
char *InitialCode;// Delete
|
||||
//char *BackupMemoryType;// Delete
|
||||
//char *InitialCode;// Delete
|
||||
} BasicInfo;
|
||||
|
||||
struct{
|
||||
// Strings
|
||||
char *HostRoot;
|
||||
char *Padding; // DELETE
|
||||
char *SaveDataSize;
|
||||
//char *Padding; // DELETE
|
||||
|
||||
// String Collections
|
||||
u32 DefaultRejectNum;
|
||||
@@ -184,13 +182,13 @@ typedef struct
|
||||
|
||||
struct{
|
||||
// Strings
|
||||
char *Platform; // DELETE
|
||||
//char *Platform; // DELETE
|
||||
char *Category;
|
||||
char *UniqueId;
|
||||
char *Version;
|
||||
char *ContentsIndex;
|
||||
char *Variation;
|
||||
char *Use; // DELETE
|
||||
//char *Use; // DELETE
|
||||
char *ChildIndex;
|
||||
char *DemoIndex;
|
||||
char *TargetCategory;
|
||||
@@ -206,6 +204,7 @@ typedef struct
|
||||
char *CryptoType;
|
||||
char *CardDevice;
|
||||
char *MediaType;
|
||||
char *MediaSize;
|
||||
char *BackupWriteWaitTime;
|
||||
char *SaveCrypto;
|
||||
} CardInfo;
|
||||
|
||||
@@ -175,8 +175,34 @@ int str_utf8_to_u16(u16 **dst, u32 *dst_len, u8 *src, u32 src_len)
|
||||
}
|
||||
#endif
|
||||
|
||||
// Pseudo-Random Number Generator
|
||||
void initRand(void)
|
||||
{
|
||||
srand(time(0));
|
||||
}
|
||||
|
||||
u8 u8GetRand(void)
|
||||
{
|
||||
return rand() % 0xff;
|
||||
}
|
||||
|
||||
u16 u16GetRand(void)
|
||||
{
|
||||
return rand() % 0xffff;
|
||||
}
|
||||
|
||||
u32 u32GetRand(void)
|
||||
{
|
||||
return (u32)u16GetRand() | (u32)u16GetRand() << 16;
|
||||
}
|
||||
|
||||
u64 u64GetRand(void)
|
||||
{
|
||||
return (u64)u32GetRand() | (u64)u32GetRand() << 32;
|
||||
}
|
||||
|
||||
//Char IO
|
||||
bool DoesFileExist(char *filename)
|
||||
bool AssertFile(char *filename)
|
||||
{
|
||||
if(filename == NULL)
|
||||
return false;
|
||||
|
||||
@@ -26,8 +26,15 @@ int str_u32_to_u16(u16 **dst, u32 *dst_len, u32 *src, u32 src_len);
|
||||
int str_utf8_to_u16(u16 **dst, u32 *dst_len, u8 *src, u32 src_len);
|
||||
#endif
|
||||
|
||||
// Pseudo-Random Number Generator
|
||||
void initRand(void);
|
||||
u8 u8GetRand(void);
|
||||
u16 u16GetRand(void);
|
||||
u32 u32GetRand(void);
|
||||
u64 u64GetRand(void);
|
||||
|
||||
//Char IO
|
||||
bool DoesFileExist(char *filename);
|
||||
bool AssertFile(char *filename);
|
||||
u64 GetFileSize_u64(char *filename);
|
||||
int makedir(const char* dir);
|
||||
char *getcwdir(char *buffer,int maxlen);
|
||||
|
||||
+160
-34
@@ -4,8 +4,10 @@
|
||||
// Private Prototypes
|
||||
void InitYamlContext(ctr_yaml_context *ctx);
|
||||
int ParseSpecFile(rsf_settings *set, char *path, dname_struct *dname);
|
||||
void ProcessYamlString(ctr_yaml_context *ctx);
|
||||
void CheckEvent(ctr_yaml_context *ctx);
|
||||
|
||||
|
||||
void BadYamlFormatting(void);
|
||||
|
||||
// Code
|
||||
@@ -16,7 +18,7 @@ int GetYamlSettings(user_settings *set)
|
||||
if(set->common.rsfPath) {
|
||||
FILE *rsf = fopen(set->common.rsfPath,"rb");
|
||||
if(!rsf) {
|
||||
fprintf(stderr,"[YAML ERROR] Failed to open %s\n",set->common.rsfPath);
|
||||
fprintf(stderr,"[RSF ERROR] Failed to open %s\n",set->common.rsfPath);
|
||||
return FAILED_TO_OPEN_FILE;
|
||||
}
|
||||
fclose(rsf);
|
||||
@@ -86,7 +88,7 @@ int ParseSpecFile(rsf_settings *set, char *path, dname_struct *dname)
|
||||
|
||||
/* On error. */
|
||||
error:
|
||||
fprintf(stderr,"[-] Error Proccessing RSF file\n");
|
||||
fprintf(stderr,"[RSF ERROR] Error Proccessing RSF file\n");
|
||||
|
||||
/* Destroy the Parser object. */
|
||||
yaml_parser_delete(&ctx->parser);
|
||||
@@ -99,28 +101,141 @@ void InitYamlContext(ctr_yaml_context *ctx)
|
||||
memset(ctx,0,sizeof(ctr_yaml_context));
|
||||
}
|
||||
|
||||
char *GetYamlString(ctr_yaml_context *ctx)
|
||||
void ProcessYamlString(ctr_yaml_context *ctx)
|
||||
{
|
||||
//return (char*)ctx->event.data.scalar.value;
|
||||
|
||||
if(!ctx->event.data.scalar.value)
|
||||
return NULL;
|
||||
|
||||
// Intercept values set from -DNAME=VALUE
|
||||
char *start = strstr((char*)ctx->event.data.scalar.value,"$(");
|
||||
char *end = strstr((char*)ctx->event.data.scalar.value,")");
|
||||
if(!start || !end)
|
||||
return (char*)ctx->event.data.scalar.value;
|
||||
|
||||
char *name = (start + 2);
|
||||
u32 name_len = (end - 1 - name);
|
||||
|
||||
for(u32 i = 0; i < ctx->dname->u_items; i++){
|
||||
if(strncmp(ctx->dname->items[i].name,name,name_len) == 0)
|
||||
return ctx->dname->items[i].value;
|
||||
if(ctx->string)
|
||||
{
|
||||
free(ctx->string);
|
||||
ctx->string = NULL;
|
||||
}
|
||||
|
||||
return "";
|
||||
if(!ctx->event.data.scalar.value)
|
||||
return;
|
||||
|
||||
char *rawStr = (char*)ctx->event.data.scalar.value;
|
||||
int rawStrLen = strlen(rawStr);
|
||||
int procStrLen = 0;
|
||||
|
||||
char *subStart = NULL;
|
||||
char *subEnd = NULL;
|
||||
char *pos = rawStr;
|
||||
char *end = (rawStr+rawStrLen);
|
||||
while(pos < end)
|
||||
{
|
||||
// Find substution syntax in string
|
||||
subStart = strstr(pos,"$(");
|
||||
if(!subStart)
|
||||
{
|
||||
procStrLen += (end - pos);
|
||||
break;
|
||||
}
|
||||
|
||||
// Check For errors
|
||||
if((end - subStart) <= 3) // Valid use of substitution syntax is not possible
|
||||
{
|
||||
ctx->error = true;
|
||||
return;
|
||||
}
|
||||
|
||||
subEnd = strstr((subStart+2),")");
|
||||
|
||||
if(!subEnd) // no closing bracket
|
||||
{
|
||||
ctx->error = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Add length of string not accounted for
|
||||
procStrLen += (int)(subStart - pos);
|
||||
|
||||
// Get Length Of substitution key
|
||||
char *subName = (subStart+2);
|
||||
int subNameLen = (int)((subEnd - subStart) - 2);
|
||||
|
||||
// Add length of substitutiion value
|
||||
for(u32 i = 0; i < ctx->dname->u_items; i++){
|
||||
char *testSubName = ctx->dname->items[i].name;
|
||||
int testSubNameLen = strlen(testSubName);
|
||||
char *testSubValue = ctx->dname->items[i].value;
|
||||
int testSubValueLen = strlen(testSubValue);
|
||||
|
||||
if(testSubNameLen != subNameLen)
|
||||
continue;
|
||||
if(strncmp(testSubName,subName,subNameLen) != 0)
|
||||
continue;
|
||||
|
||||
procStrLen += testSubValueLen;
|
||||
break;
|
||||
}
|
||||
|
||||
// Increment pos
|
||||
pos = (subEnd + 1);
|
||||
}
|
||||
|
||||
// Allocate memory for processed string
|
||||
ctx->string = calloc(procStrLen+1,sizeof(char));
|
||||
char *procStr = ctx->string;
|
||||
|
||||
pos = rawStr;
|
||||
end = (rawStr+rawStrLen);
|
||||
while(pos < end)
|
||||
{
|
||||
// Find substution syntax in string
|
||||
subStart = strstr(pos,"$(");
|
||||
if(!subStart)
|
||||
{
|
||||
strncat(procStr,pos,(end - pos));
|
||||
break;
|
||||
}
|
||||
|
||||
// Check For errors
|
||||
if((end - subStart) <= 3) // Valid use of substitution syntax is not possible
|
||||
{
|
||||
ctx->error = true;
|
||||
return;
|
||||
}
|
||||
|
||||
subEnd = strstr((subStart+2),")");
|
||||
|
||||
if(!subEnd) // no closing bracket
|
||||
{
|
||||
ctx->error = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Add length of string not accounted for
|
||||
strncat(procStr,pos,(subStart - pos));
|
||||
|
||||
// Get Length Of substitution key
|
||||
char *subName = (subStart+2);
|
||||
int subNameLen = (int)((subEnd - subStart) - 2);
|
||||
|
||||
// Add length of substitutiion value
|
||||
for(u32 i = 0; i < ctx->dname->u_items; i++){
|
||||
char *testSubName = ctx->dname->items[i].name;
|
||||
int testSubNameLen = strlen(testSubName);
|
||||
char *testSubValue = ctx->dname->items[i].value;
|
||||
int testSubValueLen = strlen(testSubValue);
|
||||
|
||||
if(testSubNameLen != subNameLen)
|
||||
continue;
|
||||
if(strncmp(testSubName,subName,subNameLen) != 0)
|
||||
continue;
|
||||
|
||||
strncat(procStr,testSubValue,testSubValueLen);
|
||||
break;
|
||||
}
|
||||
|
||||
// Increment pos
|
||||
pos = (subEnd + 1);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
char *GetYamlString(ctr_yaml_context *ctx)
|
||||
{
|
||||
return ctx->string;
|
||||
}
|
||||
|
||||
|
||||
@@ -141,6 +256,9 @@ void GetEvent(ctr_yaml_context *ctx)
|
||||
void CheckEvent(ctr_yaml_context *ctx)
|
||||
{
|
||||
switch(ctx->event.type){
|
||||
case YAML_SCALAR_EVENT:
|
||||
ProcessYamlString(ctx);
|
||||
break;
|
||||
case YAML_SEQUENCE_START_EVENT:
|
||||
ctx->IsSequence = true;
|
||||
ctx->IsKey = true;
|
||||
@@ -175,10 +293,16 @@ void FinishEvent(ctr_yaml_context *ctx)
|
||||
{
|
||||
if(ctx->event.type == YAML_SCALAR_EVENT) {
|
||||
if(!ctx->IsSequence){
|
||||
if(!ctx->IsKey)ctx->IsKey = true;
|
||||
else ctx->IsKey = false;
|
||||
ctx->IsKey = !ctx->IsKey;
|
||||
//if(!ctx->IsKey)ctx->IsKey = true;
|
||||
//else ctx->IsKey = false;
|
||||
}
|
||||
if(ctx->string){
|
||||
free(ctx->string);
|
||||
ctx->string = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
ctx->prev_event = ctx->event.type;
|
||||
yaml_event_delete(&ctx->event);
|
||||
}
|
||||
@@ -253,7 +377,7 @@ bool casecmpYamlValue(char *string,ctr_yaml_context *ctx)
|
||||
void SetSimpleYAMLValue(char **dest, char *key, ctr_yaml_context *ctx, u32 size_limit)
|
||||
{
|
||||
if(*dest){
|
||||
fprintf(stderr,"[-] Item '%s' is already set\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] Item '%s' is already set\n",key);
|
||||
ctx->error = YAML_MEM_ERROR;
|
||||
return;
|
||||
}
|
||||
@@ -261,7 +385,7 @@ void SetSimpleYAMLValue(char **dest, char *key, ctr_yaml_context *ctx, u32 size_
|
||||
GetEvent(ctx);
|
||||
if(ctx->error || ctx->done) return;
|
||||
if(!EventIsScalar(ctx)){
|
||||
fprintf(stderr,"[-] '%s' requires a value\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] '%s' requires a value\n",key);
|
||||
ctx->error = YAML_BAD_FORMATTING;
|
||||
return;
|
||||
}
|
||||
@@ -291,12 +415,12 @@ bool SetBoolYAMLValue(char *key, ctr_yaml_context *ctx)
|
||||
GetEvent(ctx);
|
||||
if(ctx->error || ctx->done) return false;
|
||||
if(!EventIsScalar(ctx)){
|
||||
fprintf(stderr,"[-] '%s' requires a value\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] '%s' requires a value\n",key);
|
||||
ctx->error = YAML_BAD_FORMATTING;
|
||||
return false;
|
||||
}
|
||||
if(!GetYamlStringSize(ctx)){
|
||||
fprintf(stderr,"[-] '%s' requires a value\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] '%s' requires a value\n",key);
|
||||
ctx->error = YAML_BAD_FORMATTING;
|
||||
return false;
|
||||
}
|
||||
@@ -304,7 +428,7 @@ bool SetBoolYAMLValue(char *key, ctr_yaml_context *ctx)
|
||||
if(casecmpYamlValue("true",ctx)) return true;
|
||||
if(casecmpYamlValue("false",ctx)) return false;
|
||||
|
||||
fprintf(stderr,"[-] Invalid '%s'\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] Invalid '%s'\n",key);
|
||||
ctx->error = YAML_BAD_FORMATTING;
|
||||
return false;
|
||||
|
||||
@@ -313,7 +437,7 @@ bool SetBoolYAMLValue(char *key, ctr_yaml_context *ctx)
|
||||
u32 SetYAMLSequence(char ***dest, char *key, ctr_yaml_context *ctx)
|
||||
{
|
||||
if(*dest){
|
||||
fprintf(stderr,"[-] %s already set\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] %s already set\n",key);
|
||||
ctx->error = YAML_MEM_ERROR;
|
||||
return 0;
|
||||
}
|
||||
@@ -332,7 +456,7 @@ u32 SetYAMLSequence(char ***dest, char *key, ctr_yaml_context *ctx)
|
||||
GetEvent(ctx);
|
||||
if(ctx->error || ctx->done) return 0;
|
||||
if(!EventIsScalar(ctx)){
|
||||
fprintf(stderr,"[-] '%s' requires a value\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] '%s' requires a value\n",key);
|
||||
ctx->error = YAML_BAD_FORMATTING;
|
||||
return 0;
|
||||
}
|
||||
@@ -376,7 +500,7 @@ u32 SetYAMLSequence(char ***dest, char *key, ctr_yaml_context *ctx)
|
||||
u32 SetYAMLSequenceFromMapping(char ***dest, char *key, ctr_yaml_context *ctx, bool StoreKey)
|
||||
{
|
||||
if(*dest){
|
||||
fprintf(stderr,"[-] %s already set\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] %s already set\n",key);
|
||||
ctx->error = YAML_MEM_ERROR;
|
||||
return 0;
|
||||
}
|
||||
@@ -395,7 +519,7 @@ u32 SetYAMLSequenceFromMapping(char ***dest, char *key, ctr_yaml_context *ctx, b
|
||||
GetEvent(ctx);
|
||||
if(ctx->error || ctx->done) return 0;
|
||||
if(!EventIsScalar(ctx)){
|
||||
fprintf(stderr,"[-] '%s' requires a value\n",key);
|
||||
fprintf(stderr,"[RSF ERROR] '%s' requires a value\n",key);
|
||||
ctx->error = YAML_BAD_FORMATTING;
|
||||
return 0;
|
||||
}
|
||||
@@ -431,7 +555,8 @@ u32 SetYAMLSequenceFromMapping(char ***dest, char *key, ctr_yaml_context *ctx, b
|
||||
return ActualCount++; // return number of strings
|
||||
}
|
||||
|
||||
void SkipYAMLGroup(ctr_yaml_context *ctx) // Why Nintendo? Why is this necessary? Why can't you just create valid .desc files?
|
||||
/*
|
||||
void SkipYAMLGroup(ctr_yaml_context *ctx)
|
||||
{
|
||||
FinishEvent(ctx);
|
||||
GetEvent(ctx);
|
||||
@@ -441,7 +566,7 @@ void SkipYAMLGroup(ctr_yaml_context *ctx) // Why Nintendo? Why is this necessary
|
||||
|
||||
if(ctx->error || ctx->done) return;
|
||||
if(!EventIsScalar(ctx)){
|
||||
fprintf(stderr,"[-] 'Format error\n");
|
||||
fprintf(stderr,"[RSF ERROR] Format error\n");
|
||||
ctx->error = YAML_BAD_FORMATTING;
|
||||
return;
|
||||
}
|
||||
@@ -454,3 +579,4 @@ void SkipYAMLGroup(ctr_yaml_context *ctx) // Why Nintendo? Why is this necessary
|
||||
}
|
||||
FinishEvent(ctx);
|
||||
}
|
||||
*/
|
||||
+3
-1
@@ -24,6 +24,8 @@ typedef struct
|
||||
yaml_event_type_t prev_event;
|
||||
u32 Level;
|
||||
|
||||
// Processed String
|
||||
char *string;
|
||||
} ctr_yaml_context;
|
||||
|
||||
// Public Prototypes
|
||||
@@ -55,4 +57,4 @@ void SetSimpleYAMLValue(char **dest, char *key, ctr_yaml_context *ctx, u32 size_
|
||||
bool SetBoolYAMLValue(char *key, ctr_yaml_context *ctx);
|
||||
u32 SetYAMLSequence(char ***dest, char *key, ctr_yaml_context *ctx);
|
||||
u32 SetYAMLSequenceFromMapping(char ***dest, char *key, ctr_yaml_context *ctx, bool StoreKey);
|
||||
void SkipYAMLGroup(ctr_yaml_context *ctx);
|
||||
//void SkipYAMLGroup(ctr_yaml_context *ctx);
|
||||
+20
-15
@@ -20,7 +20,7 @@ void EvaluateRSF(rsf_settings *rsf, ctr_yaml_context *ctx)
|
||||
else if(cmpYamlValue("CommonHeaderKey",ctx)) {FinishEvent(ctx); GET_CommonHeaderKey(ctx,rsf); goto GET_NextGroup;}
|
||||
|
||||
// If not recognised escape:
|
||||
fprintf(stderr,"[-] Unrecognised Key: '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised Key: '%s'\n",GetYamlString(ctx));
|
||||
FinishEvent(ctx);
|
||||
ctx->error = YAML_BAD_GROUP_HEADER;
|
||||
return;
|
||||
@@ -53,6 +53,7 @@ void GET_Option(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
if(ctx->error || ctx->done) return;
|
||||
// Handle childs
|
||||
if(cmpYamlValue("AllowUnalignedSection",ctx)) rsf->Option.AllowUnalignedSection = SetBoolYAMLValue("AllowUnalignedSection",ctx);
|
||||
if(cmpYamlValue("MediaFootPadding",ctx)) rsf->Option.MediaFootPadding = SetBoolYAMLValue("MediaFootPadding",ctx);
|
||||
//else if(cmpYamlValue("NoPadding",ctx)) rsf->Option.NoPadding = SetBoolYAMLValue("NoPadding",ctx);
|
||||
else if(cmpYamlValue("EnableCrypt",ctx)) rsf->Option.EnableCrypt = SetBoolYAMLValue("EnableCrypt",ctx);
|
||||
else if(cmpYamlValue("EnableCompress",ctx)) rsf->Option.EnableCompress = SetBoolYAMLValue("EnableCompress",ctx);
|
||||
@@ -61,7 +62,7 @@ void GET_Option(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("PageSize",ctx)) SetSimpleYAMLValue(&rsf->Option.PageSize,"PageSize",ctx,0);
|
||||
//else if(cmpYamlValue("AppendSystemCall",ctx)) rsf->Option.AppendSystemCallNum = SetYAMLSequence(&rsf->Option.AppendSystemCall,"AppendSystemCall",ctx);
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
@@ -101,7 +102,10 @@ void GET_AccessControlInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("IdealProcessor",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.IdealProcessor,"IdealProcessor",ctx,0);
|
||||
else if(cmpYamlValue("Priority",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.Priority,"Priority",ctx,0);
|
||||
else if(cmpYamlValue("MemoryType",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.MemoryType,"MemoryType",ctx,0);
|
||||
else if(cmpYamlValue("SystemMode",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.SystemMode,"SystemMode",ctx,0);
|
||||
else if(cmpYamlValue("SystemMode",ctx)){
|
||||
SetSimpleYAMLValue(&rsf->AccessControlInfo.SystemMode,"SystemMode",ctx,0);
|
||||
printf("SystemMode ptr: 0x%x\n",rsf->AccessControlInfo.SystemMode);
|
||||
}
|
||||
else if(cmpYamlValue("CoreVersion",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.CoreVersion,"CoreVersion",ctx,0);
|
||||
else if(cmpYamlValue("HandleTableSize",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.HandleTableSize,"HandleTableSize",ctx,0);
|
||||
else if(cmpYamlValue("SystemSaveDataId1",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.SystemSaveDataId1,"SystemSaveDataId1",ctx,0);
|
||||
@@ -119,6 +123,8 @@ void GET_AccessControlInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("MaxCpu",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.MaxCpu,"MaxCpu",ctx,0);
|
||||
|
||||
|
||||
|
||||
|
||||
else if(cmpYamlValue("MemoryMapping",ctx)) rsf->AccessControlInfo.MemoryMappingNum = SetYAMLSequence(&rsf->AccessControlInfo.MemoryMapping,"MemoryMapping",ctx);
|
||||
else if(cmpYamlValue("IORegisterMapping",ctx)) rsf->AccessControlInfo.IORegisterMappingNum = SetYAMLSequence(&rsf->AccessControlInfo.IORegisterMapping,"IORegisterMapping",ctx);
|
||||
else if(cmpYamlValue("FileSystemAccess",ctx)) rsf->AccessControlInfo.FileSystemAccessNum = SetYAMLSequence(&rsf->AccessControlInfo.FileSystemAccess,"FileSystemAccess",ctx);
|
||||
@@ -130,7 +136,7 @@ void GET_AccessControlInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("AccessibleSaveDataIds",ctx)) rsf->AccessControlInfo.AccessibleSaveDataIdsNum = SetYAMLSequence(&rsf->AccessControlInfo.AccessibleSaveDataIds,"AccessibleSaveDataIds",ctx);
|
||||
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
@@ -157,9 +163,10 @@ void GET_SystemControlInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("StackSize",ctx)) SetSimpleYAMLValue(&rsf->SystemControlInfo.StackSize,"StackSize",ctx,0);
|
||||
else if(cmpYamlValue("RemasterVersion",ctx)) SetSimpleYAMLValue(&rsf->SystemControlInfo.RemasterVersion,"RemasterVersion",ctx,0);
|
||||
else if(cmpYamlValue("JumpId",ctx)) SetSimpleYAMLValue(&rsf->SystemControlInfo.JumpId,"JumpId",ctx,0);
|
||||
else if(cmpYamlValue("SaveDataSize",ctx)) SetSimpleYAMLValue(&rsf->SystemControlInfo.SaveDataSize,"SaveDataSize",ctx,0);
|
||||
else if(cmpYamlValue("Dependency",ctx)) rsf->SystemControlInfo.DependencyNum = SetYAMLSequenceFromMapping(&rsf->SystemControlInfo.Dependency,"Dependency",ctx,false);
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
@@ -181,17 +188,15 @@ void GET_BasicInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
while(ctx->Level == InitLevel){
|
||||
if(ctx->error || ctx->done) return;
|
||||
// Handle childs
|
||||
if(cmpYamlValue("MediaFootPadding",ctx)) rsf->BasicInfo.MediaFootPadding = SetBoolYAMLValue("MediaFootPadding",ctx);
|
||||
else if(cmpYamlValue("Title",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.Title,"Title",ctx,0);
|
||||
if(cmpYamlValue("Title",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.Title,"Title",ctx,0);
|
||||
else if(cmpYamlValue("CompanyCode",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.CompanyCode,"CompanyCode",ctx,0);
|
||||
else if(cmpYamlValue("ProductCode",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.ProductCode,"ProductCode",ctx,0);
|
||||
else if(cmpYamlValue("MediaSize",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.MediaSize,"MediaSize",ctx,0);
|
||||
else if(cmpYamlValue("ContentType",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.ContentType,"ContentType",ctx,0);
|
||||
else if(cmpYamlValue("Logo",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.Logo,"Logo",ctx,0);
|
||||
//else if(cmpYamlValue("BackupMemoryType",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.BackupMemoryType,"BackupMemoryType",ctx,0);
|
||||
//else if(cmpYamlValue("InitialCode",ctx)) SetSimpleYAMLValue(&rsf->BasicInfo.InitialCode,"InitialCode",ctx,0);
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
@@ -216,7 +221,6 @@ void GET_Rom(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
|
||||
if(cmpYamlValue("HostRoot",ctx)) SetSimpleYAMLValue(&rsf->Rom.HostRoot,"HostRoot",ctx,0);
|
||||
//else if(cmpYamlValue("Padding",ctx)) SetSimpleYAMLValue(&rsf->Rom.Padding,"Padding",ctx,0);
|
||||
else if(cmpYamlValue("SaveDataSize",ctx)) SetSimpleYAMLValue(&rsf->Rom.SaveDataSize,"SaveDataSize",ctx,0);
|
||||
|
||||
else if(cmpYamlValue("DefaultReject",ctx)) rsf->Rom.DefaultRejectNum = SetYAMLSequence(&rsf->Rom.DefaultReject,"DefaultReject",ctx);
|
||||
else if(cmpYamlValue("Reject",ctx)) rsf->Rom.RejectNum = SetYAMLSequence(&rsf->Rom.Reject,"Reject",ctx);
|
||||
@@ -224,7 +228,7 @@ void GET_Rom(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("File",ctx)) rsf->Rom.FileNum = SetYAMLSequence(&rsf->Rom.File,"File",ctx);
|
||||
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
@@ -252,7 +256,7 @@ void GET_ExeFs(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("ReadWrite",ctx)) rsf->ExeFs.ReadWriteNum = SetYAMLSequence(&rsf->ExeFs.ReadWrite,"ReadWrite",ctx);
|
||||
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
@@ -294,7 +298,7 @@ void GET_TitleInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("CategoryFlags",ctx)) rsf->TitleInfo.CategoryFlagsNum = SetYAMLSequence(&rsf->TitleInfo.CategoryFlags,"CategoryFlags",ctx);
|
||||
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
@@ -322,11 +326,12 @@ void GET_CardInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("CryptoType",ctx)) SetSimpleYAMLValue(&rsf->CardInfo.CryptoType,"CryptoType",ctx,0);
|
||||
else if(cmpYamlValue("CardDevice",ctx)) SetSimpleYAMLValue(&rsf->CardInfo.CardDevice,"CardDevice",ctx,0);
|
||||
else if(cmpYamlValue("MediaType",ctx)) SetSimpleYAMLValue(&rsf->CardInfo.MediaType,"MediaType",ctx,0);
|
||||
else if(cmpYamlValue("MediaSize",ctx)) SetSimpleYAMLValue(&rsf->CardInfo.MediaSize,"MediaSize",ctx,0);
|
||||
else if(cmpYamlValue("BackupWriteWaitTime",ctx)) SetSimpleYAMLValue(&rsf->CardInfo.BackupWriteWaitTime,"BackupWriteWaitTime",ctx,0);
|
||||
else if(cmpYamlValue("SaveCrypto",ctx)) SetSimpleYAMLValue(&rsf->CardInfo.SaveCrypto,"SaveCrypto",ctx,0);
|
||||
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
@@ -362,7 +367,7 @@ void GET_CommonHeaderKey(ctr_yaml_context *ctx, rsf_settings *rsf)
|
||||
else if(cmpYamlValue("Descriptor",ctx)) SetSimpleYAMLValue(&rsf->CommonHeaderKey.AccCtlDescBin,"Descriptor",ctx,0);
|
||||
|
||||
else{
|
||||
fprintf(stderr,"[-] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
fprintf(stderr,"[RSF ERROR] Unrecognised key '%s'\n",GetYamlString(ctx));
|
||||
ctx->error = YAML_UNKNOWN_KEY;
|
||||
FinishEvent(ctx);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user