From cd9092c58a79d45661163d9e6551e2c89d183a64 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 23 May 2019 03:44:06 -0400 Subject: [PATCH] fix: VIGIKPWN - use 10/7/4 uid (@McEloff) --- armsrc/Standalone/hf_colin.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index 9c3b14c32..22467f2d3 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -16,6 +16,7 @@ uint8_t cjuid[10]; uint32_t cjcuid; +iso14a_card_select_t p_card; int currline; int currfline; int curlline; @@ -350,7 +351,7 @@ failtag: LED_A_ON(); uint8_t ticker = 0; //while (!BUTTON_PRESS() && !iso14443a_select_card(cjuid, NULL, &cjcuid, true, 0, true)) - while (!iso14443a_select_card(cjuid, NULL, &cjcuid, true, 0, true)) { + while (!iso14443a_select_card(cjuid, &p_card, &cjcuid, true, 0, true)) { WDT_HIT(); ticker++; @@ -773,7 +774,20 @@ readysim: SpinOff(100); LED_C_ON(); - Mifare1ksim(FLAG_4B_UID_IN_DATA | FLAG_UID_IN_EMUL, 0, cjuid); + + uint16_t flags; + switch (p_card.uidlen){ + case 10: + flags = FLAG_10B_UID_IN_DATA; + break; + case 7: + flags = FLAG_7B_UID_IN_DATA; + break; + default: + flags = FLAG_4B_UID_IN_DATA; + break; + } + Mifare1ksim(flags | FLAG_MF_1K, 0, cjuid); LED_C_OFF(); SpinOff(50); vtsend_cursor_position_restore(NULL); @@ -832,7 +846,7 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { bool isOK = true; - if (!iso14443a_select_card(cjuid, NULL, &cjcuid, true, 0, true)) { + if (!iso14443a_select_card(cjuid, &p_card, &cjcuid, true, 0, true)) { isOK = false; if (MF_DBGLEVEL >= 1) DbprintfEx(FLAG_RAWPRINT, "Can't select card"); @@ -903,7 +917,7 @@ int cjat91_saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, ui /* no need for anticollision. just verify tag is still here */ // if (!iso14443a_fast_select_card(cjuid, 0)) { - if (!iso14443a_select_card(cjuid, NULL, &cjcuid, true, 0, true)) { + if (!iso14443a_select_card(cjuid, &p_card, &cjcuid, true, 0, true)) { cjSetCursLeft(); DbprintfEx(FLAG_NEWLINE, "%sFATAL%s : E_MF_LOSTTAG", _XRED_, _XWHITE_); return -1; @@ -1034,7 +1048,7 @@ int saMifareCSetBlock(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *data // get UID from chip if (workFlags & 0x01) { - if (!iso14443a_select_card(cjuid, NULL, &cjcuid, true, 0, true)) { + if (!iso14443a_select_card(cjuid, &p_card, &cjcuid, true, 0, true)) { DbprintfEx(FLAG_NEWLINE, "Can't select card"); break; };