detailed print settings

This commit is contained in:
merlokk 2021-07-29 17:22:51 +03:00
commit cd760e05e7
3 changed files with 50 additions and 4 deletions

View file

@ -6707,6 +6707,7 @@ static int CmdHF14ADesDump(const char *Cmd) {
return res; return res;
} }
PrintAndLogEx(NORMAL, "");
PrintAndLogEx(INFO, "Application " _CYAN_("%06x") " have " _GREEN_("%zu") " files", appid, filescount); PrintAndLogEx(INFO, "Application " _CYAN_("%06x") " have " _GREEN_("%zu") " files", appid, filescount);
res = PM3_SUCCESS; res = PM3_SUCCESS;
@ -6725,11 +6726,11 @@ static int CmdHF14ADesDump(const char *Cmd) {
PrintAndLogEx(SUCCESS, "File ID : " _GREEN_("%02x"), FileList[i].fileNum); PrintAndLogEx(SUCCESS, "File ID : " _GREEN_("%02x"), FileList[i].fileNum);
if (isopresent) { if (isopresent) {
if (FileList[i].fileISONum != 0) if (FileList[i].fileISONum != 0)
PrintAndLogEx(SUCCESS, "File ISO ID: %04x", FileList[i].fileISONum); PrintAndLogEx(SUCCESS, "File ISO ID : %04x", FileList[i].fileISONum);
else else
PrintAndLogEx(SUCCESS, "File ISO ID: " _YELLOW_("n/a")); PrintAndLogEx(SUCCESS, "File ISO ID : " _YELLOW_("n/a"));
} }
DesfirePrintFileSettingsOneLine(&FileList[i].fileSettings); DesfirePrintFileSettingsExtended(&FileList[i].fileSettings);
res = DesfileReadFileAndPrint(&dctx, FileList[i].fileNum, RFTAuto, 0, 0, noauth, verbose); res = DesfileReadFileAndPrint(&dctx, FileList[i].fileNum, RFTAuto, 0, 0, noauth, verbose);
} }

View file

@ -1567,6 +1567,50 @@ void DesfirePrintFileSettingsOneLine(FileSettingsS *fsettings) {
GetDesfireAccessRightStr(fsettings->chAccess)); GetDesfireAccessRightStr(fsettings->chAccess));
} }
void DesfirePrintFileSettingsExtended(FileSettingsS *fsettings) {
PrintAndLogEx(SUCCESS, "File type : " _CYAN_("%s") " [0x%02x]", GetDesfireFileType(fsettings->fileType), fsettings->fileType);
PrintAndLogEx(SUCCESS, "Comm mode : %s", GetDesfireCommunicationMode(fsettings->fileCommMode));
switch (fsettings->fileType) {
case 0x00:
case 0x01: {
PrintAndLogEx(SUCCESS, "File size : %d [0x%x] bytes", fsettings->fileSize, fsettings->fileSize);
break;
}
case 0x02: {
PrintAndLogEx(SUCCESS, "Lower limit : %d [0x%x]", fsettings->lowerLimit, fsettings->lowerLimit);
PrintAndLogEx(SUCCESS, "Upper limit : %d [0x%x]", fsettings->upperLimit, fsettings->upperLimit);
bool limited_credit_enabled = ((fsettings->limitedCredit & 0x01) != 0);
PrintAndLogEx(SUCCESS, "Limited credit : [%d - %s] %d (0x%08X)", fsettings->limitedCredit, (limited_credit_enabled) ? "enabled" : "disabled", fsettings->value, fsettings->value);
PrintAndLogEx(SUCCESS, "GetValue access : %s", ((fsettings->limitedCredit & 0x02) != 0) ? "Free" : "Not Free");
break;
}
case 0x03:
case 0x04: {
PrintAndLogEx(SUCCESS, "Record count : %d [0x%x]", fsettings->curRecordCount, fsettings->curRecordCount);
PrintAndLogEx(SUCCESS, "Max record count: %d [0x%x]", fsettings->maxRecordCount, fsettings->maxRecordCount);
PrintAndLogEx(SUCCESS, "Record size : %d [0x%x] bytes", fsettings->recordSize, fsettings->recordSize);
break;
}
case 0x05: {
PrintAndLogEx(SUCCESS, "Key type : 0x%02x", fsettings->keyType);
PrintAndLogEx(SUCCESS, "Key version : 0x%02x ", fsettings->keyVersion);
break;
}
default: {
break;
}
}
PrintAndLogEx(SUCCESS, "Access rights : %04x (r: %s w: %s rw: %s change: %s)",
fsettings->rawAccessRights,
GetDesfireAccessRightStr(fsettings->rAccess),
GetDesfireAccessRightStr(fsettings->wAccess),
GetDesfireAccessRightStr(fsettings->rwAccess),
GetDesfireAccessRightStr(fsettings->chAccess));
}
static void DesfirePrintFileSettDynPart(uint8_t filetype, uint8_t *data, size_t datalen, uint8_t *dynlen, bool create) { static void DesfirePrintFileSettDynPart(uint8_t filetype, uint8_t *data, size_t datalen, uint8_t *dynlen, bool create) {
switch (filetype) { switch (filetype) {
case 0x00: case 0x00:

View file

@ -136,6 +136,7 @@ int DesfireGetFileISOIDList(DesfireContext *dctx, uint8_t *resp, size_t *resplen
void DesfireFillFileSettings(uint8_t *data, size_t datalen, FileSettingsS *fsettings); void DesfireFillFileSettings(uint8_t *data, size_t datalen, FileSettingsS *fsettings);
void DesfirePrintFileSettingsOneLine(FileSettingsS *fsettings); void DesfirePrintFileSettingsOneLine(FileSettingsS *fsettings);
void DesfirePrintFileSettingsExtended(FileSettingsS *fsettings);
int DesfireGetFileSettings(DesfireContext *dctx, uint8_t fileid, uint8_t *resp, size_t *resplen); int DesfireGetFileSettings(DesfireContext *dctx, uint8_t fileid, uint8_t *resp, size_t *resplen);
int DesfireGetFileSettingsStruct(DesfireContext *dctx, uint8_t fileid, FileSettingsS *fsettings); int DesfireGetFileSettingsStruct(DesfireContext *dctx, uint8_t fileid, FileSettingsS *fsettings);
int DesfireChangeFileSettings(DesfireContext *dctx, uint8_t *data, size_t datalen); int DesfireChangeFileSettings(DesfireContext *dctx, uint8_t *data, size_t datalen);