]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
tlv decoder works.
authormerlokk <olegmsn@gmail.com>
Thu, 2 Nov 2017 12:11:42 +0000 (14:11 +0200)
committermerlokk <olegmsn@gmail.com>
Thu, 2 Nov 2017 12:11:42 +0000 (14:11 +0200)
client/cmdhf14a.c
client/emv/emv_tags.c
client/emv/emvcore.c

index f3189c108bd45ef06cd7a9be200f77b1fad3eefe..86cfea2fbc1a1bf3a549f41f851715f5f4e7034c 100644 (file)
@@ -760,7 +760,7 @@ int CmdHF14AAPDU(const char *cmd) {
        
        PrintAndLog("APDU response: %02x %02x - %s", data[datalen - 2], data[datalen - 1], GetAPDUCodeDescription(data[datalen - 2], data[datalen - 1])); 
 
        
        PrintAndLog("APDU response: %02x %02x - %s", data[datalen - 2], data[datalen - 1], GetAPDUCodeDescription(data[datalen - 2], data[datalen - 1])); 
 
-       // here TLV decoder...
+       // TLV decoder
        if (decodeTLV && datalen > 4) {
                TLVPrintFromBuffer(data, datalen - 2);
        }
        if (decodeTLV && datalen > 4) {
                TLVPrintFromBuffer(data, datalen - 2);
        }
index 9bcf20043cfa4a7e890d98e50c6de56f024794ee..1aae847af2f668d17b4ba98326e2342c0cc4f4ca 100644 (file)
@@ -30,7 +30,6 @@ enum emv_tag_t {
        EMV_TAG_STRING,
        EMV_TAG_NUMERIC,
        EMV_TAG_YYMMDD,
        EMV_TAG_STRING,
        EMV_TAG_NUMERIC,
        EMV_TAG_YYMMDD,
-       EMV_TAG_FCI,
 };
 
 struct emv_tag {
 };
 
 struct emv_tag {
@@ -128,7 +127,7 @@ static const struct emv_tag emv_tags[] = {
        { 0x5f30, "Service Code", EMV_TAG_NUMERIC },
        { 0x5f34, "Application Primary Account Number (PAN) Sequence Number", EMV_TAG_NUMERIC },
        { 0x61  , "Application Template" },
        { 0x5f30, "Service Code", EMV_TAG_NUMERIC },
        { 0x5f34, "Application Primary Account Number (PAN) Sequence Number", EMV_TAG_NUMERIC },
        { 0x61  , "Application Template" },
-       { 0x6f  , "File Control Information (FCI) Template", EMV_TAG_FCI },
+       { 0x6f  , "File Control Information (FCI) Template" },
        { 0x70  , "READ RECORD Response Message Template" },
        { 0x77  , "Response Message Template Format 2" },
        { 0x80  , "Response Message Template Format 1" },
        { 0x70  , "READ RECORD Response Message Template" },
        { 0x77  , "Response Message Template Format 2" },
        { 0x80  , "Response Message Template Format 1" },
@@ -269,25 +268,6 @@ static void emv_tag_dump_dol(const struct tlv *tlv, const struct emv_tag *tag, F
        }
 }
 
        }
 }
 
-static void emv_tag_dump_fci(const struct tlv *tlv, const struct emv_tag *tag, FILE *f) {
-       const unsigned char *buf = tlv->value;
-       size_t left = tlv->len;
-
-       while (left) {
-               struct tlv doltlv;
-               const struct emv_tag *doltag;
-
-               if (!tlv_parse_tl(&buf, &left, &doltlv)) {
-                       fprintf(f, "Invalid Tag-Len\n");
-                       continue;
-               }
-
-               doltag = emv_get_tag(&doltlv);
-
-               fprintf(f, "\t--%2hx[%02zx]'%s'\n", doltlv.tag, doltlv.len, doltag->name);
-       }
-}
-
 static void emv_tag_dump_string(const struct tlv *tlv, const struct emv_tag *tag, FILE *f)
 {
        fprintf(f, "\tString value '");
 static void emv_tag_dump_string(const struct tlv *tlv, const struct emv_tag *tag, FILE *f)
 {
        fprintf(f, "\tString value '");
@@ -471,9 +451,6 @@ bool emv_tag_dump(const struct tlv *tlv, FILE *f)
        case EMV_TAG_YYMMDD:
                emv_tag_dump_yymmdd(tlv, tag, f);
                break;
        case EMV_TAG_YYMMDD:
                emv_tag_dump_yymmdd(tlv, tag, f);
                break;
-       case EMV_TAG_FCI:
-               emv_tag_dump_fci(tlv, tag, f);
-               break;
        };
 
        return true;
        };
 
        return true;
index 6f8892fe6aec20c70ff0ede0542499cea8cc3cfa..9264b11068c4a9b00f73baa2954a0d62c78b5a70 100644 (file)
@@ -19,7 +19,7 @@ static bool print_cb(void *data, const struct tlv *tlv) {
 
 void TLVPrintFromBuffer(uint8_t *data, int datalen) {
        struct tlvdb *t = NULL;
 
 void TLVPrintFromBuffer(uint8_t *data, int datalen) {
        struct tlvdb *t = NULL;
-       t = tlvdb_parse(data, datalen);
+       t = tlvdb_parse_multi(data, datalen);
        if (t) {
                PrintAndLog("TLV decoded:");
                
        if (t) {
                PrintAndLog("TLV decoded:");
                
Impressum, Datenschutz