diff --git a/client/src/cipurse/cipursecore.c b/client/src/cipurse/cipursecore.c index 0bd063e9e..a359666bb 100644 --- a/client/src/cipurse/cipursecore.c +++ b/client/src/cipurse/cipursecore.c @@ -458,25 +458,23 @@ void CIPURSEPrintFileAttr(uint8_t *attr, size_t len) { CIPURSEPrintKeyAttrib(&attr[9 + keynum + 1 + i * 7]); } } - // MF + FCP - if (attr[1] == 0x00 && len >= 9 + keynum + 1 + keynum * 7 + 1) { - int xlen = len - (9 + keynum + 1 + keynum * 7) - 6; + // FCP + if (len >= 9 + keynum + 1 + keynum * 7 + 1) { + int xlen = len - (9 + keynum + 1 + keynum * 7); + // for MF only + if (attr[1] == 0x00) + xlen = xlen - 6; if (xlen > 0 && xlen < 200) { - PrintAndLogEx(INFO, "FCP... [%d] %s", xlen, sprint_hex(&attr[9 + keynum + 1 + keynum * 7], xlen)); + PrintAndLogEx(INFO, "TLV file control parameters... [%d] %s", xlen, sprint_hex(&attr[9 + keynum + 1 + keynum * 7], xlen)); TLVPrintFromBuffer(&attr[9 + keynum + 1 + keynum * 7], xlen); - PrintAndLogEx(INFO, ""); + PrintAndLogEx(NORMAL, ""); } } - // MF + // MF only if (attr[1] == 0x00) { PrintAndLogEx(INFO, "Total memory size... %d", (attr[len - 6] << 16) + (attr[len - 5] << 8) + attr[len - 4]); PrintAndLogEx(INFO, "Free memory size.... %d", (attr[len - 3] << 16) + (attr[len - 2] << 8) + attr[len - 1]); - } else { - int ptr = 11 + keynum + 1 + keynum * 7; - if (len > ptr) { - PrintAndLogEx(INFO, "TLV file control... %s", sprint_hex(&attr[ptr], len - ptr)); - } } } else { PrintAndLogEx(INFO, "Type... EF");